jeanguyomarch / eovim

The Enlightened Neovim
https://github.com/jeanguyomarch/eovim/wiki
MIT License
193 stars 3 forks source link

Error when starting eovim #19

Closed Dasmark closed 6 years ago

Dasmark commented 6 years ago

I compiled cleanly with

rm -rf build
./scripts/get-msgpack.sh
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

After installing and starting, I get the following:

ERR<6612>:eo lib/eo/eo.c:574 _efl_object_call_resolve() in lib/edje/edje_object.eo.c:102: func 'edje_obj_signal_emit' (1057) could not be resolved for class 'Elm.Layout'.
## Copy & Paste the below (until EOF) into a terminal, then hit Enter

eina_btlog << EOF
/lib64/libeina.so.1  0x7fbda62b66cc 0x7fbda628f000
/lib64/libeina.so.1  0x7fbda62b73f1 0x7fbda628f000
/lib64/libeina.so.1  0x7fbda62b87c3 0x7fbda628f000
/lib64/libeo.so.1    0x7fbda0d3804f 0x7fbda0d2e000
/lib64/libedje.so.1  0x7fbda5998883 0x7fbda58ea000
fish: “eovim” terminated by signal SIGSEGV (Address boundary error)

Due to the segfault, the btlog seems to be incomplete:

/lib64/libeina.so.1| /usr/src/debug/efl-1.20.5-1.fc27.x86_64/src/lib/eina/eina_log.c      : 2055 @ eina_log_print_cb_journald()
/lib64/libeina.so.1| /usr/src/debug/efl-1.20.5-1.fc27.x86_64/src/lib/eina/eina_log.c      : 1456 @ eina_log_print_cb_stdout()
/lib64/libeina.so.1| /usr/src/debug/efl-1.20.5-1.fc27.x86_64/src/lib/eina/eina_log.c      : 2260 @ eina_log_print()
/lib64/libeo.so.1  |   /usr/src/debug/efl-1.20.5-1.fc27.x86_64/src/lib/eo/eo.c            :  583 @ _efl_object_call_resolve()
/lib64/libedje.so.1| /usr/src/debug/efl-1.20.5-1.fc27.x86_64/src/lib/edje/edje_object.eo.c:  102 @ edje_obj_signal_emit()

Running Fedora 27, so I have quite a recent version of the libs:

edje_cc --version
Version: 1.20.5

It does start if I use env EINA_LOG_BACKTRACE=0 eovim, but then I have what seems to be the commandline opened and floating above my window all the time.

I also peeked at the coredump, hope it helps:

(gdb) bt full
#0  0x00007f607341fcd2 in _eina_debug_dump_fhandle_bt (f=0x7f6071a3f660 <_IO_2_1_stderr_>, bt=bt@entry=0x7fff118c9f00, btlen=<optimized out>)
    at lib/eina/eina_debug_bt.c:70
        i = <optimized out>
        info = {dli_fname = 0x0, dli_fbase = 0x400000, dli_sname = 0x404a89 "gui_cmdline_hide", dli_saddr = 0x40af10 <gui_cmdline_hide>}
        file = 0x0
        offset = 0
        base = 0
#1  0x00007f607342e6d9 in eina_log_print_cb_stderr (args=<optimized out>, data=<optimized out>, fmt=<optimized out>, line=<optimized out>, fnc=<optimized out>, file=<optimized out>, level=<optimized out>, d=<optimized out>) at lib/eina/eina_log.c:2055
        bt = 
          {0x7f607342e6cc <eina_log_print_cb_stderr+76>, 0x7f607342f3f1 <eina_log_print_unlocked+193>, 0x7f60734307c3 <eina_log_print+227>, 0x7f606deb004f <_efl_object_call_resolve+271>, 0x7f6072b10883 <edje_obj_signal_emit+131>, 0x40af27 <gui_cmdline_hide+23>, 0x40b4bc <gui_add+924>, 0x408d0d <nvim_new+749>, 0x407e6f <elm_main+687>, 0x407acc <main+44>, 0x7f607168200a <__libc_start_main+234>, 0x407b0a <_start+42>, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f6071f1364f, 0x7fff118ca530, 0x7fff118ca6c0, 0x11, 0x7fff118ca540, 0x7f6071a3b120 <_IO_strn_jumps>, 0x7f60716b4eda <vfprintf+1562>, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5a7374f31186c200, 0x7f60734682a0, 0x7fff118ca590, 0x7fff118ca5a0, 0x7f606debb093, 0x7f6071a3f660 <_IO_2_1_stderr_>, 0x7f60716b4c56 <vfprintf+918>, 0x7f6072b2ffa5, 0x7f6073442ddb <eina_str_split_full_helper+395>, 0x0, 0x0, 0x1, 0x7f605496207e, 0x7f6071f1365a, 0x0, 0xd68, 0x7f6071f1365b, 0x7f6071f13653, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5a7374f31186c200, 0x7f606debb828, 0x7fff118ca6d0, 0x7fff118cafd0, 0x7fff118cafd0, 0x7f6071a3f660 <_IO_2_1_stderr_>, 0x7f60716b4c56 <vfprintf+918>, 0x0 <repeats 21 times>, 0x2, 0x0, 0x2, 0x0 <repeats 52 times>, 0x14, 0x7f6054960a42, 0x2671d00, 0x7f60716f763a <strdup+26>, 0x7f6054960a55, 0x7f6054960a55, 0x7f6072b2ffa5, 0x7f6073442ddb <eina_str_split_full_helper+395>, 0x14, 0x7f6000000000, 0x1, 0x7f6054960a42, 0x7f6071eeaa15, 0x7f6071eeaa15, 0x7f6072b2ffa5, 0x7f6073442ddb <eina_str_split_full_helper+395>, 0x0, 0x0, 0x1, 0x7f6071eeaa02, 0x0 <repeats 31 times>, 0x5a7374f31186c200, 0x0, 0x7f6071a3f660 <_IO_2_1_stderr_>, 0x7f6071a3f660 <_IO_2_1_stderr_>, 0x7f606debb093, 0x23e, 0x7f606debc190 <__FUNCTION__.15276>, 0x1, 0x7f6071789206 <__fprintf_chk+262>, 0x3000000030, 0x7fff118ca6b0, 0x7fff118ca5c0, 0x5a7374f31186c200, 0x0, 0x0, 0x0, 0x7f6073468240, 0x7f6073468b09, 0x1f00, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f6071767940 <write+96>, 0x0, 0x1, 0x0, 0x1, 0x7f6071a3f6e3 <_IO_2_1_stderr_+131>, 0x7f60716e43fd <_IO_new_file_write+45>, 0x7f6071a3f660 <_IO_2_1_stderr_>, 0xd68, 0x1, 0x7f6071a3f6e3 <_IO_2_1_stderr_+131>, 0x7f6071a3b420 <__GI__IO_file_jumps>, 0x7f60716e6171 <__GI__IO_do_write+177>, 0x2092990, 0x7f6071a3f660 <_IO_2_1_stderr_>, 0xa, 0x7f606debb828, 0x7fff118cafd0, 0x7f606debb828, 0x23e, 0x7f60716e6623 <__GI__IO_file_overflow+259>, 0x7f6071a3f660 <_IO_2_1_stderr_>, 0x1, 0x7f606debb828, 0x7f60716e168b <putc+283>, 0x61e800 <stderr@@GLIBC_2.2.5>, 0x7f607342e772 <eina_log_print_cb_stderr+82>}
        btlen = <optimized out>
#2  0x00007f607342f3f1 in eina_log_print_unlocked (domain=31, level=EINA_LOG_LEVEL_ERR, file=0x7f606debb093 "lib/eo/eo.c", fnc=0x7f606debc190 <__FUNCTION__.15276> "_efl_object_call_resolve", line=<optimized out>, fmt=0x7f606debb828 "in %s:%d: func '%s' (%d) could not be resolved for class '%s'.", args=0x7fff118cafd0) at lib/eina/eina_log.c:1454
        d = <optimized out>
#3  0x00007f60734307c3 in eina_log_print (domain=31, level=level@entry=EINA_LOG_LEVEL_ERR, file=file@entry=0x7f606debb093 "lib/eo/eo.c", fnc=fnc@entry=0x7f606debc190 <__FUNCTION__.15276> "_efl_object_call_resolve", line=574, fmt=0x7f606debb828 "in %s:%d: func '%s' (%d) could not be resolved for class '%s'.")
    at lib/eina/eina_log.c:2259
        args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fff118cb108, reg_save_area = 0x7fff118caff0}}
#4  0x00007f606deb004f in _efl_object_call_resolve (eo_id=eo_id@entry=0x80000004c7d2c34c, func_name=func_name@entry=0x7f6072b36ed2 "edje_obj_signal_emit", call=call@entry=0x7fff118cb180, cache=0x7f60738379e0, file=file@entry=0x7f6072b36c3c "lib/edje/edje_object.eo.c", line=line@entry=102) at lib/eo/eo.c:583
        klass = <optimized out>
        inputklass = <optimized out>
        main_klass = <optimized out>
        cur_klass = <optimized out>
        obj = <optimized out>
        vtable = <optimized out>
        func = <optimized out>
        is_obj = 1 '\001'
        is_override = <optimized out>
        super = <optimized out>
        __FUNCTION__ = "_efl_object_call_resolve"
#5  0x00007f6072b10883 in edje_obj_signal_emit (obj=0x80000004c7d2c34c, emission=0x417014 "eovim,cmdline,hide", source=0x415914 "eovim")
    at lib/edje/edje_object.eo.c:102
        ___cache = {index = {{klass = 0x2254f70}}, entry = {{func = 0x22570f0}}, off = {{off = 576}}, op = 1057, generation = 1}
        ___call = 
          {eo_id = 0x80000004c7d2c34c, obj = 0x24dcaa0, func = 0x800000021fd2c2f7, data = 0x7f606e0e42b9 <efl_gfx_visible_set+153>, extn1 = 0x8000000a8fd2c405, extn2 = 0x265fd20, extn3 = 0x7f6071eb1c20 <_elm_widget_efl_gfx_visible_set>, extn4 = 0x265ff50}
        _func_ = <optimized out>
#6  0x000000000040af27 in gui_cmdline_hide ()
#7  0x000000000040b4bc in gui_add ()
#8  0x0000000000408d0d in nvim_new ()
#9  0x0000000000407e6f in elm_main ()
#10 0x0000000000407acc in main ()
jeanguyomarch commented 6 years ago

Hi, thanks for reporting the problem.

For the segfault, I'm afraid you have hit the same problem as in #16: there was a bug in the EFL backtrace that is in master and has not been released yet :/ So while waiting for a new release, I'm afraid you need to set EINA_LOG_BACKTRACE to 0 (or -1 to disable backtrace upon, critical errors) as you did, to prevent the segfault.

The source of issue seems to be my fault. I have no error with the master branch of EFL, but it seems I'm using the wrong API, and as such hitting an undefined behavior. I've push a patch that I hope fixes the issue.

Dasmark commented 6 years ago

Now that error is gone, thanks. I still get an error because I'm running neovim 0.2.0, but at least the "floating command line" is gone, yay 👍

jeanguyomarch commented 6 years ago

Nice :) Since the EFL backtrace bug is going to hit others, I've came up with a workaround that I pushed in the branch devs/jean/bt-fixup. Since I don't have a stable release of EFL (I'm working on the EFL master), could you please try to apply this patch. You should not need to manually unset EINA_LOG_BACKTRACE after applying it. Thanks.

Dasmark commented 6 years ago

Yep, works like a charm. Thanks!