Those traces were worthless because they didn't include function names.
It appears that the tcc_g target has been removed from the makefile. Rolling my own tcc_g, it doesn't crash when compiling but does with -run.
Valgrind of both cases below. They appear to be the same.
-Charles
% valgrind ./tcc_g -run ~/src/lcc-4.2/tst/yacc.c ==7432== Memcheck, a memory error detector. ==7432== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al. ==7432== Using LibVEX rev 1658, a library for dynamic binary translation. ==7432== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP. ==7432== Using valgrind-3.2.1, a dynamic binary instrumentation framework. ==7432== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al. ==7432== For more details, rerun with: -v ==7432== ==7432== Invalid free() / delete / delete[] ==7432== at 0x4004FDA: free
(vg_replace_malloc.c:233) ==7432== by 0x804AF09: tcc_free (tcc.c:206) ==7432== by 0x804CC98: tok_str_free (tcc.c:1498) ==7432== by 0x8051073: next (tcc.c:3591) ==7432== by 0x805946F: decl_initializer (tcc.c:7887) ==7432== by 0x80589AE: decl_designator (tcc.c:7563) ==7432== by 0x80592EA: decl_initializer (tcc.c:7847) ==7432== by 0x80589AE: decl_designator (tcc.c:7563) ==7432== by 0x80590A8: decl_initializer (tcc.c:7774) ==7432== by 0x8059625: decl_initializer_alloc (tcc.c:7957) ==7432== by 0x805A435: decl (tcc.c:8427) ==7432== by 0x805A996: tcc_compile (tcc.c:8588) ==7432== Address 0x4097F50 is 0 bytes inside a block of size 32 free'd ==7432== at 0x4004FDA: free (vg_replace_malloc.c:233) ==7432==
by 0x804AF09: tcc_free (tcc.c:206) ==7432== by 0x804CC98: tok_str_free (tcc.c:1498) ==7432== by 0x8051073: next (tcc.c:3591) ==7432== by 0x805581D: parse_btype (tcc.c:5916) ==7432== by 0x805537E: struct_decl (tcc.c:5767) ==7432== by 0x8055930: parse_btype (tcc.c:5967) ==7432== by 0x8059FC8: decl (tcc.c:8268) ==7432== by 0x805A996: tcc_compile (tcc.c:8588) ==7432== by 0x8063CC7: tcc_add_file_internal (tcc.c:9038) ==7432== by 0x8063F52: tcc_add_file (tcc.c:9124) ==7432== by 0x8064E72: main (tcc.c:9811) /home/crandall/src/lcc-4.2/tst/yacc.c:138: identifier expected ==7432== ==7432== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 13 from 1) ==7432== malloc/free: in use at exit: 50,188 bytes in 9 blocks. ==7432== malloc/free: 3,488 allocs, 3,481
frees, 405,249 bytes allocated. ==7432== For counts of detected errors, rerun with: -v ==7432== searching for pointers to 9 not-freed blocks. ==7432== checked 126,748 bytes. ==7432== ==7432== LEAK SUMMARY: ==7432== definitely lost: 1,024 bytes in 1 blocks. ==7432== possibly lost: 0 bytes in 0 blocks. ==7432== still reachable: 49,164 bytes in 8 blocks. ==7432== suppressed: 0 bytes in 0 blocks. ==7432== Use --leak-check=full to see details of leaked memory.
% valgrind ./tcc_g -run ~/src/lcc-4.2/tst/yacc.c ==7432== Memcheck, a memory error detector. ==7432== Copyright (C) 2002-2006, and GNU GPL'd, by Julian Seward et al. ==7432== Using LibVEX rev 1658, a library for dynamic binary translation. ==7432== Copyright (C) 2004-2006, and GNU GPL'd, by OpenWorks LLP. ==7432== Using valgrind-3.2.1, a dynamic
binary instrumentation framework. ==7432== Copyright (C) 2000-2006, and GNU GPL'd, by Julian Seward et al. ==7432== For more details, rerun with: -v ==7432== ==7432== Invalid free() / delete / delete[] ==7432== at 0x4004FDA: free (vg_replace_malloc.c:233) ==7432== by 0x804AF09: tcc_free (tcc.c:206) ==7432== by 0x804CC98: tok_str_free (tcc.c:1498) ==7432== by 0x8051073: next (tcc.c:3591) ==7432== by 0x805946F: decl_initializer (tcc.c:7887) ==7432== by 0x80589AE: decl_designator (tcc.c:7563) ==7432== by 0x80592EA: decl_initializer (tcc.c:7847) ==7432== by 0x80589AE: decl_designator (tcc.c:7563) ==7432== by 0x80590A8: decl_initializer (tcc.c:7774) ==7432== by 0x8059625: decl_initializer_alloc (tcc.c:7957) ==7432== by 0x805A435: decl
(tcc.c:8427) ==7432== by 0x805A996: tcc_compile (tcc.c:8588) ==7432== Address 0x4097F50 is 0 bytes inside a block of size 32 free'd ==7432== at 0x4004FDA: free (vg_replace_malloc.c:233) ==7432== by 0x804AF09: tcc_free (tcc.c:206) ==7432== by 0x804CC98: tok_str_free (tcc.c:1498) ==7432== by 0x8051073: next (tcc.c:3591) ==7432== by 0x805581D: parse_btype (tcc.c:5916) ==7432== by 0x805537E: struct_decl (tcc.c:5767) ==7432== by 0x8055930: parse_btype (tcc.c:5967) ==7432== by 0x8059FC8: decl (tcc.c:8268) ==7432== by 0x805A996: tcc_compile (tcc.c:8588) ==7432== by 0x8063CC7: tcc_add_file_internal (tcc.c:9038) ==7432== by 0x8063F52: tcc_add_file (tcc.c:9124) ==7432== by 0x8064E72: main
(tcc.c:9811) /home/crandall/src/lcc-4.2/tst/yacc.c:138: identifier expected ==7432== ==7432== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 13 from 1) ==7432== malloc/free: in use at exit: 50,188 bytes in 9 blocks. ==7432== malloc/free: 3,488 allocs, 3,481 frees, 405,249 bytes allocated. ==7432== For counts of detected errors, rerun with: -v ==7432== searching for pointers to 9 not-freed blocks. ==7432== checked 126,748 bytes. ==7432== ==7432== LEAK SUMMARY: ==7432== definitely lost: 1,024 bytes in 1 blocks. ==7432== possibly lost: 0 bytes in 0 blocks. ==7432== still reachable: 49,164 bytes in 8 blocks. ==7432== suppressed: 0 bytes in 0 blocks. ==7432== Use --leak-check=full to see details of leaked memory.
Charles F. Randall, IV address@hidden (always forwarded)