Red Hat Bugzilla – Bug 1261672
DISPLAY is set to Wayland display so Firefox crashes on start
Last modified: 2015-11-14 06:22:17 EST
Description of problem:
Firefox crashes when opening links from gtk3 applications.
Version-Release number of selected component (if applicable):
always. On every click on any link in gnome-terminal, from gnome-abrt, from any gnome/gtk "About" dialog link, etc. From a fresh firefox profile as well as from an older one.
Steps to Reproduce:
1. Open nautilus
2. open the "About" dialog
3. click one of the links
Firefox crashes. I see the firefox/mozilla crash reporter.
Clicking a link should not crash firefox – obviously.
I don't know whether this is specific to wayland. I don't have a non-wayland session on F23 working right now to test.
Yes, I can reproduce that as well - If firefox is not running it will crash, if it's running it won't do anything.
This seems to be specific to Wayland, it works fine on X11.
Hm, but Firefox itself run fine, doesn't it? I mean if you launch it from terminal or menu. It crashes when it's launched from active Wayland application, right?
Anyway, can you please attach a backtrace of the crash? See http://fedoraproject.org/wiki/Debugging_guidelines_for_Mozilla_products for details.
Created attachment 1072081 [details]
Backtrace as requested in #3, see https://fedoraproject.org/wiki/Debugging_guidelines_for_Mozilla_products#Application_crash
What I found weird is that running firefox from gnome-terminal with an URL works fine whereas it crashes with the exact same URL (in fact with the exact same argv pointer in execve) when run from a Gtk application. This led to the assumption that the environment (envp pointer in execve) is culprit.
By diff-ing the env (from running `env` and `strace -f -v -s 2000 -e trace=process gedit`) I found out that the environments differ in 2 or 3 variables. Most important: when run from gnome-terminal, you see "DISPLAY=:0", when run from Gtk applications "DISPLAY=wayland-0".
DISPLAY=:0 firefox http://gnome.org
works fine while
DISPLAY=wayland-0 firefox http://gnome.org
Looks like this is a Gtk/GLib issue, am I right? If yes, please reassign there and change the title.
the DISPLAY variable should not be a wayland display - Firefox is a X11 app and does not expect wayland here. Thanks for the investigation, moving.
I am not entirely sure this is gtk though, but in glib rather.
gtk invokes gtk_show_uri() which will call g_desktop_app_info_launch_uris_with_spawn() from glib and this is the one that sets the DISPLAY variable:
2717 display = g_app_launch_context_get_display (launch_context,
2718 G_APP_INFO (info),
2720 if (display)
2721 envp = g_environ_setenv (envp, "DISPLAY", display, TRUE);
The problem with this within Wayland is that g_app_launch_context_get_display() will return the GdkWaylandDisplay and not a GdkX11Display, ie "wayland-0" so glib's g_desktop_app_info_launch_uris_with_spawn() set DISPLAY to the wrong value (not gtk).
Patches have been merged upstream
Fixed in Fedora 23 release.