Hi

Running Vim tests with (vim-8.0.1216, latest in git) built
with asan aborts with this error:

Vim: Caught deadly signal ABRT_conceal_with_syntax_off()
Vim: preserving files...
Vim: Finished.

=================================================================
==9549==ERROR: AddressSanitizer: heap-use-after-free on address
0x62400027db70 at pc 0x000000a442fb bp 0x7fffb66e4700 sp
0x7fffb66e46f0
READ of size 8 at 0x62400027db70 thread T0
    #0 0xa442fa in syn_stack_find_entry /home/dope/sb/vim/src/syntax.c:1454
    #1 0xa46cb8 in syntax_end_parsing /home/dope/sb/vim/src/syntax.c:1715
    #2 0x93d0b2 in win_update /home/dope/sb/vim/src/screen.c:2178
    #3 0x930fa6 in update_screen /home/dope/sb/vim/src/screen.c:756
    #4 0x5cdca3 in ex_redraw /home/dope/sb/vim/src/ex_docmd.c:9721
    #5 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #6 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #7 0xb0abd8 in call_user_func /home/dope/sb/vim/src/userfunc.c:942
    #8 0xb0e3c3 in call_func /home/dope/sb/vim/src/userfunc.c:1427
    #9 0xb07086 in get_func_tv /home/dope/sb/vim/src/userfunc.c:455
    #10 0xb1c74d in ex_call /home/dope/sb/vim/src/userfunc.c:3082
    #11 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #12 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #13 0x4d8e8a in ex_execute /home/dope/sb/vim/src/eval.c:8344
    #14 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #15 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #16 0xb0abd8 in call_user_func /home/dope/sb/vim/src/userfunc.c:942
    #17 0xb0e3c3 in call_func /home/dope/sb/vim/src/userfunc.c:1427
    #18 0xb07086 in get_func_tv /home/dope/sb/vim/src/userfunc.c:455
    #19 0xb1c74d in ex_call /home/dope/sb/vim/src/userfunc.c:3082
    #20 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #21 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #22 0x584a8e in do_source /home/dope/sb/vim/src/ex_cmds2.c:4355
    #23 0x582f0d in cmd_source /home/dope/sb/vim/src/ex_cmds2.c:3968
    #24 0x582c35 in ex_source /home/dope/sb/vim/src/ex_cmds2.c:3943
    #25 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #26 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #27 0x58aa8a in do_cmdline_cmd /home/dope/sb/vim/src/ex_docmd.c:671
    #28 0xc7d3bb in exe_commands /home/dope/sb/vim/src/main.c:2955
    #29 0xc72bf6 in vim_main2 /home/dope/sb/vim/src/main.c:800
    #30 0xc720d1 in main /home/dope/sb/vim/src/main.c:429
    #31 0x7f6da1b8882f in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x2082f)
    #32 0x412458 in _start (/home/dope/sb/vim/src/vim+0x412458)

0x62400027db70 is located 6768 bytes inside of 7224-byte region
[0x62400027c100,0x62400027dd38)
freed by thread T0 here:
    #0 0x7f6da6b84588 in free (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xde588)
    #1 0x75549a in vim_free /home/dope/sb/vim/src/misc2.c:1801
    #2 0x418585 in free_buffer /home/dope/sb/vim/src/buffer.c:883
    #3 0x4171e5 in close_buffer /home/dope/sb/vim/src/buffer.c:678
    #4 0x41b12e in do_buffer /home/dope/sb/vim/src/buffer.c:1462
    #5 0x419795 in do_bufdel /home/dope/sb/vim/src/buffer.c:1128
    #6 0x5afa23 in ex_bunload /home/dope/sb/vim/src/ex_docmd.c:5535
    #7 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #8 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #9 0xb0abd8 in call_user_func /home/dope/sb/vim/src/userfunc.c:942
    #10 0xb0e3c3 in call_func /home/dope/sb/vim/src/userfunc.c:1427
    #11 0xb07086 in get_func_tv /home/dope/sb/vim/src/userfunc.c:455
    #12 0xb1c74d in ex_call /home/dope/sb/vim/src/userfunc.c:3082
    #13 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #14 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #15 0x584a8e in do_source /home/dope/sb/vim/src/ex_cmds2.c:4355
    #16 0x582f0d in cmd_source /home/dope/sb/vim/src/ex_cmds2.c:3968
    #17 0x582c35 in ex_source /home/dope/sb/vim/src/ex_cmds2.c:3943
    #18 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #19 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #20 0x58aa8a in do_cmdline_cmd /home/dope/sb/vim/src/ex_docmd.c:671
    #21 0xc7d3bb in exe_commands /home/dope/sb/vim/src/main.c:2955
    #22 0xc72bf6 in vim_main2 /home/dope/sb/vim/src/main.c:800
    #23 0xc720d1 in main /home/dope/sb/vim/src/main.c:429
    #24 0x7f6da1b8882f in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x2082f)

previously allocated by thread T0 here:
    #0 0x7f6da6b84920 in malloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xde920)
    #1 0x752079 in lalloc /home/dope/sb/vim/src/misc2.c:954
    #2 0x751f42 in alloc_clear /home/dope/sb/vim/src/misc2.c:876
    #3 0x41e506 in buflist_new /home/dope/sb/vim/src/buffer.c:2001
    #4 0x548758 in do_ecmd /home/dope/sb/vim/src/ex_cmds.c:3846
    #5 0x5c581e in do_exedit /home/dope/sb/vim/src/ex_docmd.c:8637
    #6 0x5c293e in ex_splitview /home/dope/sb/vim/src/ex_docmd.c:8294
    #7 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #8 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #9 0xb0abd8 in call_user_func /home/dope/sb/vim/src/userfunc.c:942
    #10 0xb0e3c3 in call_func /home/dope/sb/vim/src/userfunc.c:1427
    #11 0xb07086 in get_func_tv /home/dope/sb/vim/src/userfunc.c:455
    #12 0xb1c74d in ex_call /home/dope/sb/vim/src/userfunc.c:3082
    #13 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #14 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #15 0x4d8e8a in ex_execute /home/dope/sb/vim/src/eval.c:8344
    #16 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #17 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #18 0xb0abd8 in call_user_func /home/dope/sb/vim/src/userfunc.c:942
    #19 0xb0e3c3 in call_func /home/dope/sb/vim/src/userfunc.c:1427
    #20 0xb07086 in get_func_tv /home/dope/sb/vim/src/userfunc.c:455
    #21 0xb1c74d in ex_call /home/dope/sb/vim/src/userfunc.c:3082
    #22 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #23 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #24 0x584a8e in do_source /home/dope/sb/vim/src/ex_cmds2.c:4355
    #25 0x582f0d in cmd_source /home/dope/sb/vim/src/ex_cmds2.c:3968
    #26 0x582c35 in ex_source /home/dope/sb/vim/src/ex_cmds2.c:3943
    #27 0x599fce in do_one_cmd /home/dope/sb/vim/src/ex_docmd.c:2908
    #28 0x58c5fc in do_cmdline /home/dope/sb/vim/src/ex_docmd.c:1071
    #29 0x58aa8a in do_cmdline_cmd /home/dope/sb/vim/src/ex_docmd.c:671

SUMMARY: AddressSanitizer: heap-use-after-free
/home/dope/sb/vim/src/syntax.c:1454 in syn_stack_find_entry
Shadow bytes around the buggy address:
  0x0c4880047b10: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4880047b20: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4880047b30: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4880047b40: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4880047b50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c4880047b60: fd fd fd fd fd fd fd fd fd fd fd fd fd fd[fd]fd
  0x0c4880047b70: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4880047b80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4880047b90: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c4880047ba0: fd fd fd fd fd fd fd fa fa fa fa fa fa fa fa fa
  0x0c4880047bb0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==9549==ABORTING

It's 100% reproducible on my Linux xubuntu-16.04 x86_64
machine with:

$ cd vim
$ CC=gcc-7 ./configure --with-features=huge --enable-gui=none
$ make
$ cd src/testdir
$ make test_matchadd_conceal.res

I found that the asan error happens when vim is built with gcc-4.9
or gcc-7.2, but it does not happen when vim is built with gcc-5.4,
clang-4.0 or clang-5.0. Strange. Does anybody else sees that too?

It also does not happen in Travis which uses asan with gcc-4.8.4.

Regards
Dominique

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui