https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68446
--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- Hi David. I've just verified that the invalid free is presented since introduction of driver::finalize in r227188. This is valgrind report coming from r230263 (one revision before the suspected): $ /home/marxin/Programming/gcc2/objdir/gcc/xgcc -B/home/marxin/Programming/gcc2/objdir/gcc/ /home/marxin/Programming/gcc2/gcc/testsuite/jit.dg/test-combination.c -fno-diagnostics-show-caret -fdiagnostics-color=never -I/home/marxin/Programming/gcc2/gcc/testsuite/../jit -lgccjit -g -Wall -Werror -Wl,--export-dynamic -fgnu89-inline -lm -o test-combination.c.exe $ LD_LIBRARY_PATH=gcc valgrind --leak-check=yes ./test-volatile.c.exe ==20414== Invalid free() / delete / delete[] / realloc() ==20414== at 0x4C2A7FB: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==20414== by 0x504CE2D: driver::finalize() (gcc.c:9814) ==20414== by 0x5031F3B: gcc::jit::playback::context::invoke_embedded_driver(vec<char*, va_heap, vl_ptr> const*) (jit-playback.c:2441) ==20414== by 0x50346D6: gcc::jit::playback::context::invoke_driver(char const*, char const*, char const*, timevar_id_t, bool, bool) (jit-playback.c:2427) ==20414== by 0x50350C9: gcc::jit::playback::context::convert_to_dso(char const*) (jit-playback.c:2357) ==20414== by 0x5035165: gcc::jit::playback::compile_to_memory::postprocess(char const*) (jit-playback.c:1845) ==20414== by 0x5033D65: gcc::jit::playback::context::compile() (jit-playback.c:1818) ==20414== by 0x502A83E: gcc::jit::recording::context::compile() (jit-recording.c:1241) ==20414== by 0x5020095: gcc_jit_context_compile (libgccjit.c:2677) ==20414== by 0x402087: test_jit (harness.h:371) ==20414== by 0x40217D: main (harness.h:419) ==20414== Address 0x63f7b80 is 0 bytes inside data symbol "_ZL12static_specs" Martin