Page MenuHomePhabricator

Crash on resize across multiple monitors with tiling enabled
Open, Pending on user inputPublic

Description

I can reproduce this crash very easily by having tiling enabled on two or more monitors, floating a window about halfway between two screens, grabing an edge (or use keyboard/mouse binding) and dragging until I the cursor is on the monitor to which I'm trying to adapt the window.

The crash isn't recent, I just haven't had the opportunity to make report (I kept getting it when stressed at work).
If I disable the tiling extension I get much fewer crashes in general.

I'm not used to gdb yet so all I've got for now is E's coredump (the debugging notes on enlightenment.org are an inspiring read so I'll try digging into that more ASAP if you can't reproduce it).

TwoD created this task.Sep 13 2017, 12:14 PM
TwoD added a comment.Sep 13 2017, 12:14 PM

zmike added a comment.Sep 14 2017, 8:57 AM

Needs to be compiled with -g

zmike triaged this task as Pending on user input priority.Sep 14 2017, 8:57 AM
TwoD added a subscriber: raster.Sep 14 2017, 9:47 AM

I'm using the efl-git and enlightenment-git AUR packacages, which specify options=(debug), which should be pulling in these flags from my makepkg.conf

DEBUG_CFLAGS="-g -fvar-tracking-assignments"
DEBUG_CXXFLAGS="-g -fvar-tracking-assignments"

I'm using the default OPTIONS line in makepkg.conf which does include strip so I have to install the debug package separately:

OPTIONS=(strip docs !libtool !staticlibs emptydirs zipman purge !optipng !upx !debug)

Does anyone know what to change for it to actually include the DEBUG_* flags? (Preferably not for every AUR package I compile.)
I see @raster is listed as a maintainer, would you mind giving me a few pointers?

you built using makepkg? did you ALSO install the efl-git-debug pkg it creates? also enlightenment-git-debug? you can also just force debug flags all the time in /etc/makepkg.conf? change CFLAGS and CPPFLAGS to: "-g3 -O0 -ggdb" just to be sure (-O0 will ensure none of the "optimized out" things appear)? you would want to remove the strip option in OPTIONS too then.

TwoD added a comment.Sep 14 2017, 11:25 PM

Built all AUR packages with makepkg, usually via pacaur but have done it straight up too for EFL & Enlightenment just to be sure the generated packages were no different. Did indeed also install the -debug packages and make sure they are shown as the correct version after each update.
Yes, will try modifying /etc/makepkg.conf directly and rebuild. Thanks for the help!

TwoD added a comment.Sep 15 2017, 12:07 AM

I just tried changing the DEBUG_ version of the flags and modified OPTIONS to have "!strip" and "debug". Doing this over SSH from work to save some time when I get home and I managed to capture when it printed out the configuration.

CPPFLAGS......: -D_FORTIFY_SOURCE=2
CFLAGS........: -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -g3 -O0 -fvar-tracking-assignments -fvisibility=hidden -fpie
CXXFLAGS......: -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -g3 -O0 -fvar-tracking-assignments -fvisibility=hidden -fPIC -DPIC
LDFLAGS.......: -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -fPIC -DPIC -pie -rdynamic
EFLJS_CXXFLAGS:

Seems those flags do get appended to the regular flags now. Setting flags multiple times should only use the last variant, right?

well actually just installing the debug packages should get you symbols. it worked for me... i could see parameters.

TwoD added a comment.Sep 16 2017, 5:06 AM

Recreated the issue again with the configuration mentioned above, got no parameters in the log again. After a reboot I also had massive performance issues (<10 fps with just E running) and even a dimming or slight flickering of the screen (possibly due to G-Sync being enabled, but I've never seen it act like this until this week).

So I completely purged my efl/enlightenment configuration and all related packages, compiled again (this time with just modifying the DEBUG_ versions of the flags. (Saved all build logs in case you're interested, tons of warnings.) Installed -debug packages as well.

I now got 45-60fps and parameters in the dumps!
I reproduced the resize issue (seems a bit more difficult this time) and got this dump:

Then I rememberd E defaults to the software renderer on a fresh installed. Enabling OpenGL in the compositor settings brings the flickering back and the fps dips down to ~35 at some points.
This is on an nVidia GTX 970 with the latest proprietary drivers.

aur pkgs use egl/gles by default. nvidia drivers have some bad performance issues with them. see the aur comments on the efl pkgs. egl/gles is there by default for wayland. you really have to modify the pkgbuilds and remove the egl/gles options to get perf back on nvidia drivers. there isnt a single universal solution atm. it's something slow in the nvidia drivers and i'm not sure what it is. the same code with any other driver with egl/gles is just fine. glx on nvidia is also just fine. ie remove the --enable-egl --with-opengl=es --enable-gl-drm options for build to go back to glx/opengl vs egl/opengl-es

as for your crash... it's this:

#6  0x00007f6c902b2f09 in abort () at /usr/lib/libc.so.6
#7  0x00007f6c944c40be in eina_log_print_unlocked (domain=27, level=EINA_LOG_LEVEL_CRITICAL, file=0x55b94dcdf45c "../src/bin/e_comp_object.c", fnc=0x55b94dce0120 <__FUNCTION__.61349> "_e_comp_smart_resize", line=2620, fmt=0x55b94dcdf9f3 "CW RSZ: %dx%d || PX: %dx%d", args=0x7ffc1e63cf00) at lib/eina/eina_log.c:1458
        d = 0x55b94fd40ab0
#8  0x00007f6c944c5a34 in eina_log_print (domain=27, level=EINA_LOG_LEVEL_CRITICAL, file=0x55b94dcdf45c "../src/bin/e_comp_object.c", fnc=0x55b94dce0120 <__FUNCTION__.61349> "_e_comp_smart_resize", line=2620, fmt=0x55b94dcdf9f3 "CW RSZ: %dx%d || PX: %dx%d") at lib/eina/eina_log.c:2259
        args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7ffc1e63d000, reg_save_area = 0x7ffc1e63cf20}}

it's one of @zmike 's "i am forcing e to crash on you" things. i defer to mike as he likes this policy. we've been over this before on the mailing list and he insists on having it do this.

TwoD added a comment.Sep 18 2017, 11:23 AM

I am not entirely sure this is related, but I just ended up in a crashloop when opening a couple of windows and couldn't get out without logging out with F12.

Afterwards tty1 was filled with GL_INVALID_FRAMEBUFFER_OPERATION messages (see photo).
Seems D-Bus is involved (I did enable that module to see what it does).

Here are 3 consecutive crashdumps fromt this loop, looks like it's stuck in the same state unable to recover

raster added a subscriber: bu5hm4n.Sep 18 2017, 4:05 PM

tiling module... @bu5hm4n ? it's sending a notification. you don't ensure the notification struct is all 0'd out on the stack. it'll be full of garbage.

zmike added a comment.Sep 18 2017, 5:53 PM

Oh this is an annoying one.

zmike added a comment.EditedSep 18 2017, 6:06 PM
In T6023#98740, @TwoD wrote:

I am not entirely sure this is related, but I just ended up in a crashloop when opening a couple of windows and couldn't get out without logging out with F12.

Here are 3 consecutive crashdumps fromt this loop, looks like it's stuck in the same state unable to recover

This one should be resolved in my current wip branch, but I'd like to get more testing before I merge that patch.

TwoD added a comment.Sep 21 2017, 11:54 AM

Thanks! A rebuild of EFL+E made it much more stable when resizing.

I had to revert d70ab09a4a769b07527b56332618ab2b9a0326e2 though or the dependency check failed because it couldn't find meson-chmod.sh.

Still got two crashes while messing around with it though:

zmike added a comment.Sep 22 2017, 7:34 AM

This ticket is like a gathering point for extremely old compositor bugs.

zmike added a comment.Sep 22 2017, 9:08 AM

I've pushed a couple patches to my wip branch which should resolve both of those, but needs more testing before I'll merge to master.