gui segfault macos-10.11.6 vim-8.1.1566 openmotif-2.3.8

24 views
Skip to first unread message

raf

unread,
Jun 18, 2019, 5:50:09 AM6/18/19
to vim...@googlegroups.com
hi,

macosx-10.11.6
vim-8.1.1566
XQuartz-2.7.11
openmotif-2.3.8 (via macports-2.5.4)

i just tried to upgrade vim on macos for the first time in a year
(from 8.1.10 to 8.1.1566) and it segfaults if i run "vim -g" or
"vim" and then ":gui" from within it.

$ configure \
--disable-darwin \
--with-x \
--enable-gui=motif \
--enable-multibyte \
--with-mac-arch=current \
--with-features=huge \
--disable-acl
[...]

$ make
[...]

$ make test
[...]
VIMRUNTIME=../../runtime; export VIMRUNTIME; ../vim -f -u unix.vim -u NONE -U NONE --noplugin --not-a-term -S runtest.vim test_gui.vim
Vim: Caught deadly signal SEGV
Vim: Finished.
/bin/sh: line 1: 53432 Segmentation fault: 11 ../vim -f -u unix.vim -u NONE -U NONE --noplugin --not-a-term -S runtest.vim test_gui.vim
make[2]: *** [test_gui.res] Error 139
make[1]: *** [scripttests] Error 2
make: *** [test] Error 2

$ lldb -c /cores/core.70003
(lldb) target create --core "/cores/core.70003"
warning: (x86_64) /cores/core.70003 load command 155 LC_SEGMENT_64 has a fileoff + filesize (0x2a257000) that extends beyond the end of the file (0x2a256000), the segment will be truncated to match
warning: (x86_64) /cores/core.70003 load command 156 LC_SEGMENT_64 has a fileoff (0x2a257000) that extends beyond the end of the file (0x2a256000), ignoring this section
Core file '/cores/core.70003' (x86_64) was loaded.
(lldb) bt
* thread #1: tid = 0x0000, 0x00007fff955b68ea libsystem_kernel.dylib`__kill + 10, stop reason = signal SIGSTOP
* frame #0: 0x00007fff955b68ea libsystem_kernel.dylib`__kill + 10
frame #1: 0x00000001084a2c1d vim`mch_exit [inlined] may_core_dump + 285 at os_unix.c:3371 [opt]
frame #2: 0x00000001084a2bf5 vim`mch_exit(r=1) + 245 at os_unix.c:3337 [opt]
frame #3: 0x00000001085bd91b vim`getout(exitval=<unavailable>) + 619 at main.c:1552 [opt]
frame #4: 0x00007fff9bf3c52a libsystem_platform.dylib`_sigtramp + 26
frame #5: 0x0000000108a57318 libX11.6.dylib`XrmStringToQuark + 14
frame #6: 0x0000000108a03350 libXt.6.dylib`CacheArgs + 87
frame #7: 0x0000000108a0309f libXt.6.dylib`_XtGetResources + 256
frame #8: 0x00000001089efdfa libXt.6.dylib`xtCreate + 380
frame #9: 0x00000001089f03f2 libXt.6.dylib`_XtCreatePopupShell + 251
frame #10: 0x00000001089f0515 libXt.6.dylib`XtCreatePopupShell + 175
frame #11: 0x000000010877f5cd libXm.4.dylib`create + 770
frame #12: 0x000000010877fb4f libXm.4.dylib`XmCreatePopupMenu + 68
frame #13: 0x000000010858393a vim`gui_mch_add_menu(menu=0x00007fbf5261dc90, idx=1) + 170 at gui_motif.c:922 [opt]
frame #14: 0x0000000108458f2a vim`gui_create_initial_menus(menu=0x00007fbf5261dc90) + 58 at menu.c:2008 [opt]
frame #15: 0x000000010857bf59 vim`gui_init + 1337 at gui.c:695 [opt]
frame #16: 0x000000010854362e vim`set_termname(term=<unavailable>) + 2590 at term.c:1900 [opt]
frame #17: 0x000000010857b839 vim`gui_attempt_start + 41 at gui.c:188 [opt]
frame #18: 0x000000010857b654 vim`gui_start(arg=<unavailable>) + 148 at gui.c:130 [opt]
frame #19: 0x0000000108581baa vim`ex_gui(eap=0x00007fff578732b0) + 122 at gui.c:4989 [opt]
frame #20: 0x00000001083efbb7 vim`do_cmdline [inlined] do_one_cmd(sourcing=1, cstack=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>) + 1603 at ex_docmd.c:2500 [opt]
frame #21: 0x00000001083ef574 vim`do_cmdline(cmdline=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>, flags=4) + 8100 at ex_docmd.c:995 [opt]
frame #22: 0x0000000108568790 vim`call_func [inlined] call_user_func(fp=<unavailable>, argcount=<unavailable>, argvars=<unavailable>, selfdict=<unavailable>) + 1319 at userfunc.c:1063 [opt]
frame #23: 0x0000000108568269 vim`call_func(funcname=<unavailable>, len=<unavailable>, rettv=<unavailable>, argcount_in=<unavailable>, argvars_in=<unavailable>, argv_func=0x00007fbf5252ea50, firstline=<unavailable>, lastline=<unavailable>, doesrange=<unavailable>, evaluate=<unavailable>, partial=<unavailable>, selfdict_in=<unavailable>) + 2729 at userfunc.c:1621 [opt]
frame #24: 0x00000001085676ef vim`get_func_tv(name="Test_1_set_secure", len=-1, rettv=0x00007fff57874048, arg=0x00007fff57874060, firstline=1, lastline=1, doesrange=<unavailable>, evaluate=<unavailable>, partial=<unavailable>, selfdict=<unavailable>) + 735 at userfunc.c:490 [opt]
frame #25: 0x000000010856cbca vim`ex_call(eap=<unavailable>) + 458 at userfunc.c:3338 [opt]
frame #26: 0x00000001083efbb7 vim`do_cmdline [inlined] do_one_cmd(sourcing=1, cstack=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>) + 1603 at ex_docmd.c:2500 [opt]
frame #27: 0x00000001083ef574 vim`do_cmdline(cmdline=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>, flags=0) + 8100 at ex_docmd.c:995 [opt]
frame #28: 0x00000001083bdc8b vim`ex_execute(eap=<unavailable>) + 731 at eval.c:8865 [opt]
frame #29: 0x00000001083efbb7 vim`do_cmdline [inlined] do_one_cmd(sourcing=1, cstack=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>) + 1603 at ex_docmd.c:2500 [opt]
frame #30: 0x00000001083ef574 vim`do_cmdline(cmdline=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>, flags=4) + 8100 at ex_docmd.c:995 [opt]
frame #31: 0x0000000108568790 vim`call_func [inlined] call_user_func(fp=<unavailable>, argcount=<unavailable>, argvars=<unavailable>, selfdict=<unavailable>) + 1319 at userfunc.c:1063 [opt]
frame #32: 0x0000000108568269 vim`call_func(funcname=<unavailable>, len=<unavailable>, rettv=<unavailable>, argcount_in=<unavailable>, argvars_in=<unavailable>, argv_func=0x00007fbf5251aad0, firstline=<unavailable>, lastline=<unavailable>, doesrange=<unavailable>, evaluate=<unavailable>, partial=<unavailable>, selfdict_in=<unavailable>) + 2729 at userfunc.c:1621 [opt]
frame #33: 0x00000001085676ef vim`get_func_tv(name="RunTheTest", len=-1, rettv=0x00007fff578759d8, arg=0x00007fff578759f0, firstline=1, lastline=1, doesrange=<unavailable>, evaluate=<unavailable>, partial=<unavailable>, selfdict=<unavailable>) + 735 at userfunc.c:490 [opt]
frame #34: 0x000000010856cbca vim`ex_call(eap=<unavailable>) + 458 at userfunc.c:3338 [opt]
frame #35: 0x00000001083efbb7 vim`do_cmdline [inlined] do_one_cmd(sourcing=1, cstack=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>) + 1603 at ex_docmd.c:2500 [opt]
frame #36: 0x00000001083ef574 vim`do_cmdline(cmdline=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>, flags=4) + 8100 at ex_docmd.c:995 [opt]
frame #37: 0x00000001083ebf5a vim`do_source(fname=<unavailable>, check_other=<unavailable>, is_vimrc=<unavailable>) + 1978 at ex_cmds2.c:3633 [opt]
frame #38: 0x00000001083eb6b4 vim`cmd_source(fname="runtest.vim", eap=<unavailable>) + 100 at ex_cmds2.c:3253 [opt]
frame #39: 0x00000001083efbb7 vim`do_cmdline [inlined] do_one_cmd(sourcing=1, cstack=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>) + 1603 at ex_docmd.c:2500 [opt]
frame #40: 0x00000001083ef574 vim`do_cmdline(cmdline=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>, flags=0) + 8100 at ex_docmd.c:995 [opt]
frame #41: 0x00000001085bd40a vim`vim_main2 [inlined] exe_commands + 90 at main.c:2975 [opt]
frame #42: 0x00000001085bd3b0 vim`vim_main2 + 3296 at main.c:797 [opt]
frame #43: 0x00000001085bbd96 vim`main(argc=<unavailable>, argv=<unavailable>) + 10086 at main.c:444 [opt]
frame #44: 0x00007fff8d7a65ad libdyld.dylib`start + 1
(lldb)

$ env [subset of maybe relevant envvars]
TERM=xterm
SHELL=/bin/zsh
LANG=en_AU.UTF-8
DISPLAY=:0.0
X11_PREFS_DOMAIN=org.macosforge.xquartz.X11
XTERM_VERSION=XTerm(326)
XTERM_LOCALE=en_AU.UTF-8
XTERM_SHELL=/bin/zsh

cheers,
raf

Manuel Ortega

unread,
Jun 18, 2019, 9:44:16 AM6/18/19
to vim_dev
On Tuesday, June 18, 2019 at 4:50:09 AM UTC-5, raf wrote:
> hi,
>
> macosx-10.11.6
> vim-8.1.1566
> XQuartz-2.7.11
> openmotif-2.3.8 (via macports-2.5.4)
>
> i just tried to upgrade vim on macos for the first time in a year
> (from 8.1.10 to 8.1.1566) and it segfaults if i run "vim -g" or
> "vim" and then ":gui" from within it.
>
> $ configure \
> --disable-darwin \
> --with-x \
> --enable-gui=motif \
> --enable-multibyte \
> --with-mac-arch=current \
> --with-features=huge \
> --disable-acl
> [...]

Try --enable-gui=athena instread and see if you get the same crash. If not, it might be a bug in motif.

-Manny

r...@raf.org

unread,
Jun 27, 2019, 2:00:04 AM6/27/19
to vim_dev
But motif didn't change. It's working fine for the previous version of vim
that I had compiled. And I want motif, not athena, so it's not really a fix.
But maybe it is.

I tried that and test_giu.vim still crashed but differently:

VIMRUNTIME=../../runtime; export VIMRUNTIME; ../vim -f -u unix.vim -u NONE -U NONE --noplugin --not-a-term -S runtest.vim test_gui.vim
Vim: Caught deadly signal SEGV
Vim: Finished.
/bin/sh: line 1: 31308 Segmentation fault: 11 (core dumped) ../vim -f -u unix.vim -u NONE -U NONE --noplugin --not-a-term -S runtest.vim test_gui.vim
make[2]: *** [test_gui.res] Error 139
make[1]: *** [scripttests] Error 2
make: *** [test] Error 2

However, if I run "src/vim -g" or "src/vim" and enter :gui from within the source directory,
the athena gui does start so the crash isn't as immediate as with motif.

raf:raf:vim> lldb -c /cores/core.31308
(lldb) target create --core "/cores/core.31308"
warning: (x86_64) /cores/core.31308 load command 120 LC_SEGMENT_64 has a fileoff + filesize (0x28f42000) that extends beyond the end of the file (0x28f41000), the segment will be truncated to match
warning: (x86_64) /cores/core.31308 load command 121 LC_SEGMENT_64 has a fileoff (0x28f42000) that extends beyond the end of the file (0x28f41000), ignoring this section
btCore file '/cores/core.31308' (x86_64) was loaded.
(lldb) bt
* thread #1: tid = 0x0000, 0x00007fff955b68ea libsystem_kernel.dylib`__kill + 10, stop reason = signal SIGSTOP
* frame #0: 0x00007fff955b68ea libsystem_kernel.dylib`__kill + 10
frame #1: 0x000000010666c8ad vim`mch_exit [inlined] may_core_dump + 285 at os_unix.c:3371 [opt]
frame #2: 0x000000010666c885 vim`mch_exit(r=1) + 245 at os_unix.c:3337 [opt]
frame #3: 0x0000000106783a9b vim`getout(exitval=<unavailable>) + 619 at main.c:1552 [opt]
frame #4: 0x00007fff9bf3c52a libsystem_platform.dylib`_sigtramp + 26
frame #5: 0x00000001069696bc libXt.6.dylib`XtWidgetToApplicationContext + 14
frame #6: 0x0000000106967ffd libXt.6.dylib`XtDestroyWidget + 18
frame #7: 0x000000010674d46d vim`gui_mch_destroy_menu(menu=<unavailable>) + 717 at gui_athena.c:1602 [opt]
frame #8: 0x0000000106623fd5 vim`free_menu(menup=0x00007f9e52e19d40) + 37 at menu.c:1053 [opt]
frame #9: 0x00000001066212dc vim`remove_menu(menup=0x00007f9e52e19d40, name=<unavailable>, modes=<unavailable>, silent=0) + 1164 at menu.c:1021 [opt]
frame #10: 0x000000010661fffa vim`ex_menu(eap=<unavailable>) + 2266 at menu.c:360 [opt]
frame #11: 0x00000001065b9cf7 vim`do_cmdline [inlined] do_one_cmd(sourcing=1, cstack=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>) + 1603 at ex_docmd.c:2500 [opt]
frame #12: 0x00000001065b96b4 vim`do_cmdline(cmdline=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>, flags=4) + 8100 at ex_docmd.c:995 [opt]
frame #13: 0x0000000106731fa0 vim`call_func [inlined] call_user_func(fp=<unavailable>, argcount=<unavailable>, argvars=<unavailable>, selfdict=<unavailable>) + 1319 at userfunc.c:1063 [opt]
frame #14: 0x0000000106731a79 vim`call_func(funcname=<unavailable>, len=<unavailable>, rettv=<unavailable>, argcount_in=<unavailable>, argvars_in=<unavailable>, argv_func=0x00007f9e52f07c20, firstline=<unavailable>, lastline=<unavailable>, doesrange=<unavailable>, evaluate=<unavailable>, partial=<unavailable>, selfdict_in=<unavailable>) + 2729 at userfunc.c:1621 [opt]
frame #15: 0x0000000106730eff vim`get_func_tv(name="Test_menu", len=-1, rettv=0x00007fff596aa078, arg=0x00007fff596aa090, firstline=1, lastline=1, doesrange=<unavailable>, evaluate=<unavailable>, partial=<unavailable>, selfdict=<unavailable>) + 735 at userfunc.c:490 [opt]
frame #16: 0x00000001067363da vim`ex_call(eap=<unavailable>) + 458 at userfunc.c:3338 [opt]
frame #17: 0x00000001065b9cf7 vim`do_cmdline [inlined] do_one_cmd(sourcing=1, cstack=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>) + 1603 at ex_docmd.c:2500 [opt]
frame #18: 0x00000001065b96b4 vim`do_cmdline(cmdline=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>, flags=0) + 8100 at ex_docmd.c:995 [opt]
frame #19: 0x0000000106587dcb vim`ex_execute(eap=<unavailable>) + 731 at eval.c:8865 [opt]
frame #20: 0x00000001065b9cf7 vim`do_cmdline [inlined] do_one_cmd(sourcing=1, cstack=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>) + 1603 at ex_docmd.c:2500 [opt]
frame #21: 0x00000001065b96b4 vim`do_cmdline(cmdline=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>, flags=4) + 8100 at ex_docmd.c:995 [opt]
frame #22: 0x0000000106731fa0 vim`call_func [inlined] call_user_func(fp=<unavailable>, argcount=<unavailable>, argvars=<unavailable>, selfdict=<unavailable>) + 1319 at userfunc.c:1063 [opt]
frame #23: 0x0000000106731a79 vim`call_func(funcname=<unavailable>, len=<unavailable>, rettv=<unavailable>, argcount_in=<unavailable>, argvars_in=<unavailable>, argv_func=0x00007f9e52c17450, firstline=<unavailable>, lastline=<unavailable>, doesrange=<unavailable>, evaluate=<unavailable>, partial=<unavailable>, selfdict_in=<unavailable>) + 2729 at userfunc.c:1621 [opt]
frame #24: 0x0000000106730eff vim`get_func_tv(name="RunTheTest", len=-1, rettv=0x00007fff596aba08, arg=0x00007fff596aba20, firstline=1, lastline=1, doesrange=<unavailable>, evaluate=<unavailable>, partial=<unavailable>, selfdict=<unavailable>) + 735 at userfunc.c:490 [opt]
frame #25: 0x00000001067363da vim`ex_call(eap=<unavailable>) + 458 at userfunc.c:3338 [opt]
frame #26: 0x00000001065b9cf7 vim`do_cmdline [inlined] do_one_cmd(sourcing=1, cstack=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>) + 1603 at ex_docmd.c:2500 [opt]
frame #27: 0x00000001065b96b4 vim`do_cmdline(cmdline=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>, flags=4) + 8100 at ex_docmd.c:995 [opt]
frame #28: 0x00000001065b609a vim`do_source(fname=<unavailable>, check_other=<unavailable>, is_vimrc=<unavailable>) + 1978 at ex_cmds2.c:3633 [opt]
frame #29: 0x00000001065b57f4 vim`cmd_source(fname="runtest.vim", eap=<unavailable>) + 100 at ex_cmds2.c:3253 [opt]
frame #30: 0x00000001065b9cf7 vim`do_cmdline [inlined] do_one_cmd(sourcing=1, cstack=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>) + 1603 at ex_docmd.c:2500 [opt]
frame #31: 0x00000001065b96b4 vim`do_cmdline(cmdline=<unavailable>, fgetline=<unavailable>, cookie=<unavailable>, flags=0) + 8100 at ex_docmd.c:995 [opt]
frame #32: 0x000000010678358a vim`vim_main2 [inlined] exe_commands + 90 at main.c:2975 [opt]
frame #33: 0x0000000106783530 vim`vim_main2 + 3296 at main.c:797 [opt]
frame #34: 0x0000000106781f16 vim`main(argc=<unavailable>, argv=<unavailable>) + 10086 at main.c:444 [opt]
frame #35: 0x00007fff8d7a65ad libdyld.dylib`start + 1
frame #36: 0x00007fff8d7a65ad libdyld.dylib`start + 1

Dominique Pellé

unread,
Jun 27, 2019, 2:06:03 AM6/27/19
to vim_dev
Maybe this issue is related to https://github.com/vim/vim/issues/4568
Since I can reproduce https://github.com/vim/vim/issues/4568 on Linux
and since it used to work fine I will try to git bissect soon when I find
time.

Dominique
Reply all
Reply to author
Forward
0 new messages