Ticket #1899 (assigned bug) — at Version 2

Opened 11 years ago

Last modified 11 years ago

Memory leak in compilers/imcc/main.c

Reported by: bluescreen Owned by: bluescreen
Priority: normal Milestone:
Component: imcc Version: master
Severity: medium Keywords:
Cc: Language:
Patch status: Platform:

Description (last modified by bluescreen) (diff)

Around line 567,

if (IMCC_INFO(interp)->error_code) {

char * const error_str = Parrot_str_to_cstring(interp,

IMCC_INFO(interp)->error_message);

IMCC_INFO(interp)->error_code=IMCC_FATAL_EXCEPTION;
fprintf(stderr, "error:imcc:%s", error_str);
IMCC_print_inc(interp);
Parrot_str_free_cstring(error_str);
Parrot_x_exit(interp, IMCC_FATAL_EXCEPTION);

}
imc_cleanup(interp, yyscanner);


In the error branch main.c is not calling imc_cleanup so valgrind gives the following output:

==4322== 222 (208 direct, 14 indirect) bytes in 1 blocks are definitely lost in loss record 238 of 508

==4322== at 0x4C27480: calloc (vg_replace_malloc.c:467)[[BR]]

==4322== by 0x4FB05F7: gc_ms2_allocate_memory_chunk_zeroed (gc_ms2.c:1410)[[BR]]

==4322== by 0x4FA9EC5: Parrot_gc_allocate_memory_chunk_with_interior_pointers (api.c:628)[[BR]]

==4322== by 0x50FEE0C: new_frame (imcc.l:752)[[BR]]

==4322== by 0x5100397: IMCC_push_parser_state (imcc.l:1263)[[BR]]

==4322== by 0x5102552: compile_to_bytecode (main.c:556)[[BR]]

==4322== by 0x51029C4: imcc_run (main.c:652)[[BR]]

==4322== by 0x401313: main (main.c:152)[[BR]]

Change History

Changed 11 years ago by bluescreen

  • status changed from new to assigned
  • description modified (diff)

Changed 11 years ago by bluescreen

  • description modified (diff)
Note: See TracTickets for help on using tickets.