Re: [PATCH] cex: fix a crash
Akim Demaille <[email protected]>
| Newsgroups | gmane.comp.parsers.bison.patches |
|---|---|
| Message-ID | <[email protected]> |
Hi Vincent, > Le 17 mai 2020 à 04:19, Vincent Imbimbo <[email protected]> a écrit : > > Hey Akim, > >> This does not seem right. You should try to use clang with address sanitizer (see .travis.yml for one way to set it up). For instance, that's one failure on my machine, caused by this commit. > > This turned out to be pretty simple (I hope). I just needed to add a break statement to make the sanitizer happy. > > @ -199,6 +199,7 @@ free_parse_state (parse_state *original_ps) > { > free (ps); > ++frees; > + break; > } > } > } Great, you are right, it fixed the issue! We are super close to being done, I think, and I expect I will be able to merge into master super soon. However, we still have memory leaks. I believe it won't be too hard to address. See below what I get using clang's address sanitizer. I have again pushed -f the cex branch. Please start from there. You can have a look at the CI here: https://travis-ci.org/github/akimd/bison/builds/687993664 Cheers! akim@io ~bison $ ASAN_OPTIONS=detect_leaks=1 lldb -- ./_build/c9a/src/bison -Wcoun src/parse-gram.y (lldb) target create "./_build/c9a/src/bison" Current executable set to './_build/c9a/src/bison' (x86_64). (lldb) settings set -- target.run-args "-Wcoun" "src/parse-gram.y" (lldb) r Process 14081 launched: '/Users/akim/src/gnu/bison/_build/c9a/src/bison' (x86_64) ================================================================= ==14081==ERROR: LeakSanitizer: detected memory leaks Direct leak of 30800 byte(s) in 385 object(s) allocated from: #0 0x10050cf2d in wrap_malloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x44f2d) #1 0x1001c9204 in xmalloc (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x1001c9204) #2 0x10014fc88 in state_sym_lookup (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014fc88) #3 0x10014ac83 in init_trans (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014ac83) #4 0x100148aae in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148aae) #5 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #6 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #7 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Direct leak of 13360 byte(s) in 167 object(s) allocated from: #0 0x10050cf2d in wrap_malloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x44f2d) #1 0x10019afd4 in hash_initialize (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10019afd4) #2 0x10014b446 in init_prods (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014b446) #3 0x100148ab3 in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148ab3) #4 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #5 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #6 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Direct leak of 13360 byte(s) in 167 object(s) allocated from: #0 0x10050cf2d in wrap_malloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x44f2d) #1 0x10019afd4 in hash_initialize (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10019afd4) #2 0x10014a806 in init_trans (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014a806) #3 0x100148aae in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148aae) #4 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #5 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #6 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Direct leak of 10696 byte(s) in 1 object(s) allocated from: #0 0x10050d302 in wrap_calloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x45302) #1 0x1001c9498 in xcalloc (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x1001c9498) #2 0x1001c9459 in xzalloc (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x1001c9459) #3 0x100191812 in bitsetv_alloc (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100191812) #4 0x100191981 in bitsetv_create (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100191981) #5 0x100148db0 in init_state_items (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148db0) #6 0x100148aa9 in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148aa9) #7 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #8 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #9 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Direct leak of 4912 byte(s) in 307 object(s) allocated from: #0 0x10050cf2d in wrap_malloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x44f2d) #1 0x1001c9204 in xmalloc (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x1001c9204) #2 0x100147318 in hash_pair_lookup (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100147318) #3 0x10014b7a9 in init_prods (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014b7a9) #4 0x100148ab3 in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148ab3) #5 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #6 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #7 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Direct leak of 2704 byte(s) in 169 object(s) allocated from: #0 0x10050cf2d in wrap_malloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x44f2d) #1 0x1001c9204 in xmalloc (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x1001c9204) #2 0x100147318 in hash_pair_lookup (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100147318) #3 0x10014bb9e in init_prods (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014bb9e) #4 0x100148ab3 in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148ab3) #5 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #6 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #7 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Direct leak of 2160 byte(s) in 30 object(s) allocated from: #0 0x10050cf2d in wrap_malloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x44f2d) #1 0x1001a07a8 in gl_linked_nx_create (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x1001a07a8) #2 0x10015030e in gl_list_nx_create (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10015030e) #3 0x100150038 in gl_list_create (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100150038) #4 0x10014c797 in gen_lookaheads (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014c797) #5 0x100148ab8 in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148ab8) #6 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #7 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #8 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Direct leak of 1920 byte(s) in 1 object(s) allocated from: #0 0x10050cf2d in wrap_malloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x44f2d) #1 0x1003cbed6 in libtextstyle_xnmalloc (/opt/gostai/lib/libtextstyle.0.dylib:x86_64+0xfed6) #2 0x1003c4620 in term_ostream_create (/opt/gostai/lib/libtextstyle.0.dylib:x86_64+0x8620) #3 0x1003ca538 in term_styled_ostream_create (/opt/gostai/lib/libtextstyle.0.dylib:x86_64+0xe538) #4 0x1003cdde8 in styled_ostream_create (/opt/gostai/lib/libtextstyle.0.dylib:x86_64+0x11de8) #5 0x100013944 in complain_init_color (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100013944) #6 0x10003bab4 in getargs_colors (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10003bab4) #7 0x100039248 in getargs (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100039248) #8 0x10006d903 in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006d903) #9 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Indirect leak of 141616 byte(s) in 167 object(s) allocated from: #0 0x10050d302 in wrap_calloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x45302) #1 0x10019b151 in hash_initialize (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10019b151) #2 0x10014b446 in init_prods (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014b446) #3 0x100148ab3 in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148ab3) #4 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #5 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #6 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Indirect leak of 31184 byte(s) in 167 object(s) allocated from: #0 0x10050d302 in wrap_calloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x45302) #1 0x10019b151 in hash_initialize (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10019b151) #2 0x10014a806 in init_trans (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014a806) #3 0x100148aae in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148aae) #4 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #5 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #6 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Indirect leak of 7336 byte(s) in 131 object(s) allocated from: #0 0x10050d302 in wrap_calloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x45302) #1 0x1001c9498 in xcalloc (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x1001c9498) #2 0x1001c9459 in xzalloc (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x1001c9459) #3 0x10016dea7 in bitset_alloc (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10016dea7) #4 0x10016e5a9 in bitset_create (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10016e5a9) #5 0x10014b801 in init_prods (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014b801) #6 0x100148ab3 in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148ab3) #7 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #8 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #9 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Indirect leak of 2096 byte(s) in 131 object(s) allocated from: #0 0x10050cf2d in wrap_malloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x44f2d) #1 0x1001c9204 in xmalloc (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x1001c9204) #2 0x10014feec in hash_pair_insert (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014feec) #3 0x10014b821 in init_prods (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014b821) #4 0x100148ab3 in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148ab3) #5 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #6 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #7 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) Indirect leak of 816 byte(s) in 51 object(s) allocated from: #0 0x10050cf2d in wrap_malloc (/opt/local/libexec/llvm-9.0/lib/clang/9.0.1/lib/darwin/libclang_rt.asan_osx_dynamic.dylib:x86_64h+0x44f2d) #1 0x10019f383 in allocate_entry (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10019f383) #2 0x10019e77f in hash_insert_if_absent (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10019e77f) #3 0x10019f49c in hash_insert (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10019f49c) #4 0x10014a94e in init_trans (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10014a94e) #5 0x100148aae in state_items_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100148aae) #6 0x100027c48 in counterexample_init (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x100027c48) #7 0x10006dc8b in main (/Users/akim/src/gnu/bison/_build/c9a/src/bison:x86_64+0x10006dc8b) #8 0x7fff6df8d3d4 in start (/usr/lib/system/libdyld.dylib:x86_64+0x163d4) SUMMARY: AddressSanitizer: 262960 byte(s) leaked in 1874 allocation(s). Process 14081 exited with status = 1 (0x00000001)