[hatari-devel] Double free when freeing profile data/symbols

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Hi,

 

while experimenting with profile data gathered by Hatari, i get an "invalid free" when the program terminates. Running Hatari under Valgrind reports this:

 

> profile save bla

Disassembled 1872 (of active 1872) CPU addresses.

> c

Returning to emulation...

Freed previous CPU profile buffers.

Allocated CPU profile buffer (117 MB).

Allocated CPU profile callsite buffer for 113 symbols.

WARNING: previous PC for tracked address 0x231814 is undefined!

==31832== Conditional jump or move depends on uninitialised value(s)

==31832== at 0x15CBCF2: symbol_list_free (symbols-common.c:196)

==31832== by 0x15CEB8B: Symbols_Free (symbols.c:355)

==31832== by 0x15CF84A: Symbols_RemoveCurrentProgram (symbols.c:784)

==31832== by 0x62D899: GemDOS_Pterm (gemdos.c:3356)

==31832== by 0x62E403: GemDOS_Trap (gemdos.c:4072)

==31832== by 0x6F15AC: OpCode_GemDos (hatari-glue.c:262)

==31832== by 0x6BC4BA: m68k_run_2_000 (newcpu.c:7146)

==31832== by 0x6BD006: m68k_go (newcpu.c:7594)

==31832== by 0x64957B: M68000_Start (m68000.c:305)

==31832== by 0x64B481: main (main.c:1010)

==31832==

==31832== Invalid free() / delete / delete[] / realloc()

==31832== at 0x48389AB: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)

==31832== by 0x15CBD1C: symbol_list_free (symbols-common.c:197)

==31832== by 0x15CEB8B: Symbols_Free (symbols.c:355)

==31832== by 0x15CF84A: Symbols_RemoveCurrentProgram (symbols.c:784)

==31832== by 0x62D899: GemDOS_Pterm (gemdos.c:3356)

==31832== by 0x62E403: GemDOS_Trap (gemdos.c:4072)

==31832== by 0x6F15AC: OpCode_GemDos (hatari-glue.c:262)

==31832== by 0x6BC4BA: m68k_run_2_000 (newcpu.c:7146)

==31832== by 0x6BD006: m68k_go (newcpu.c:7594)

==31832== by 0x64957B: M68000_Start (m68000.c:305)

==31832== by 0x64B481: main (main.c:1010)

==31832== Address 0x5a1bdab is 2,059 bytes inside a block of size 3,324 alloc'd

==31832== at 0x483777F: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)

==31832== by 0x15CCF43: symbols_load_gnu (symbols-common.c:728)

==31832== by 0x15CDDCC: symbols_load_binary (symbols-common.c:1066)

==31832== by 0x15CE887: Symbols_Load (symbols.c:293)

==31832== by 0x15CF957: Symbols_LoadCurrentProgram (symbols.c:831)

==31832== by 0x15C2E82: DebugUI (debugui.c:1189)

==31832== by 0x15C7701: DebugCpu_Check (debugcpu.c:914)

==31832== by 0x6B9356: do_specialties (newcpu.c:5061)

==31832== by 0x6BC5B7: m68k_run_2_000 (newcpu.c:7172)

==31832== by 0x6BD006: m68k_go (newcpu.c:7594)

==31832== by 0x64957B: M68000_Start (m68000.c:305)

==31832== by 0x64B481: main (main.c:1010)

==31832==

Program exit, removing its symbols.

 

The program i used i attached below, should that matter. Steps to reproduce can be found in https://www.atari-forum.com/viewtopic.php?p=437796#p437796

 

Attachment: coremark.zip
Description: Zip archive



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/