Hi, I'm trying with my eovim project to build an AppImage with every build. Of course, eovim relies entirely on EFL for its GUI.
My goal with AppImage is to release pre-compiled binaries ready to be run without requiring a build environment. After laborious work, I've managed via a GitHub Action to generate AppImages.
However, they fail to run as Elementary (ecore_evas, I guess) fails to create the window:
$ env EINA_LOG_LEVEL=4 ./Eovim-nightly-x86_64.AppImage [snip] DBG<85797>:eo ../src/lib/eo/eo.c:1721 efl_class_new() Finished building class 'Efl.Ui.Win_Inlined' DBG<85797>:eina_module ../src/lib/eina/eina_module.c:284 eina_module_new() m=0x559d5cb14640, file=/tmp/.mount_Eovim-DjdYeL/usr/lib/x86_64-linux-gnu/ecore_evas/engines/x/v-1.23/module.so DBG<85797>:eina_module ../src/lib/eina/eina_module.c:312 eina_module_load() m=0x559d5cb14640, handle=(nil), file=/tmp/.mount_Eovim-DjdYeL/usr/lib/x86_64-linux-gnu/ecore_evas/engines/x/v-1.23/module.so, refs=0 DBG<85797>:eina_module ../src/lib/eina/eina_module.c:346 eina_module_load() successfully loaded /tmp/.mount_Eovim-DjdYeL/usr/lib/x86_64-linux-gnu/ecore_evas/engines/x/v-1.23/module.so DBG<85797>:eina_module ../src/lib/eina/eina_module.c:350 eina_module_load() ref 1 ERR<85797>:ecore_evas ../src/lib/elementary/efl_ui_win.c:5523 _elm_win_finalize_internal() Cannot create window. ERR<85797>:eo ../src/lib/eo/eo.c:1008 _efl_add_internal_end() Object of class 'Efl.Ui.Win_Legacy' - Not all of the object constructors have been executed. DBG<85797>:eo ../src/lib/eo/eo_base_class.c:2235 _efl_object_destructor() 0x400000006782 - Efl.Ui.Win_Legacy. ERR<85797>:evas_main ../src/lib/evas/canvas/evas_object_smart.c:738 _efl_canvas_group_efl_object_destructor() efl_canvas_group_del() was not called on this object: 0x400000006782 (Efl.Ui.Win_Legacy) DBG<85797>:eo ../src/lib/eo/eo.c:1961 efl_unref() obj_id is NULL. Possibly unintended access? DBG<85797>:eo ../src/lib/eo/eo_base_class.c:2235 _efl_object_destructor() 0x400000006b83 - Efl.Ui.Focus.Parent_Provider_Standard. ERR<85797>:ecore_evas ../src/lib/elementary/efl_ui_win.c:6148 elm_win_autodel_set() No widget data for object (nil) ((null)) [snip]
I'm using EFL 1.23.3 (as packaged by Ubuntu) to build the AppImage... this is because I found easier to build AppImage from the Ubuntu APT repositories.
When building locally (without AppImage) with EFL 1.23.3, Eovim works fine (as expected) on my laptop.
I tried to investigate with gdb, but I find it quite difficult, because I'm forced to go through the APT repository, and I failed to make gdb use the debug symbols. Here is what I found, based on exported symbols and disas:
- ecore_evas_software_x11_new_internal() is called
- rmethod = evas_render_method_lookup("software_x11"); is called
- In evas_render_method_lookup(), em = evas_module_find_type(EVAS_MODULE_TYPE_ENGINE, name); returns NULL
- this causes evas_render_method_lookup() to return RENDER_METHOD_INVALID
- ecore_evas_software_x11_new_internal() subsequently returns NULL
- Elementary says it failed to create the window...
I'm kinda blocked here because I haven't yet managed to use debug symbols to inspect what evas_module_find_type() is doing.
If you are interested in reproducing the problem, an AppImage is available here: https://github.com/jeanguyomarch/eovim/actions/runs/182989969. You need to:
- download the Artifact named Eovim-Snapshot
- unzip it
- chmod u+x Eovim-nightly-x86_64.AppImage
- and run Eovim-nightly-x86_64.AppImage