GNOME Bugzilla – Bug 516318
crash when run inside xnest (keyboard plugin)
Last modified: 2008-03-01 22:01:59 UTC
Steps to reproduce 1. create a user 2. su to that user 3. $ Xnest -ac :1 & 4. $ /usr/lib/gnome-settings-daemon it will initialize, but then crash when it gets to the media keys plugin I tested this in gentoo using the gnome 2.21x overlay and ubuntu hardy alpha 4
something like a bactrace ** (gnome-settings-daemon:5704): DEBUG: Starting media_keys manager Breakpoint 2, gdk_x_error (display=0x61be10, error=0x7fff5c0c1400) at gdkmain-x11.c:613 613 gdkmain-x11.c: No such file or directory. in gdkmain-x11.c (gdb) bt
+ Trace 189117
What kind of crash do you get there? The XError shouldn't be a problem, since the XGrabKey call is surrounded by gdk_error_trap_push/pop. For me, g-s-d doesn't crash, but "failed to open display" and simply does nothing at all. Any output on the terminal?
here's the actual output text of the session stest1@beep ~ $ Xnest -ac :1 & [1] 15097 stest1@beep ~ $ DISPLAY="0:1" /usr/libexec/gnome-settings-daemon ** (gnome-settings-daemon:15100): DEBUG: Successfully connected to D-Bus ** (gnome-settings-daemon:15100): DEBUG: Starting settings manager ** (gnome-settings-daemon:15100): DEBUG: Loading settings plugins from dir: /usr/lib64/gnome-settings-daemon-2.0/ ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/keyboard.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/keyboard.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/clipboard.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/clipboard.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/xsettings.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/xsettings.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/a11y-keyboard.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/a11y-keyboard.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/media-keys.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/media-keys.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/sound.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/sound.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/xrandr.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/xrandr.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/keybindings.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/keybindings.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/mouse.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/mouse.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/background.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/background.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/font.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/font.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/xrdb.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/xrdb.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/typing-break.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/typing-break.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/dummy.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/dummy.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Loading plugin: /usr/lib64/gnome-settings-daemon-2.0/screensaver.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: Could not find valid 'Priority' in /usr/lib64/gnome-settings-daemon-2.0/screensaver.gnome-settings-plugin ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x623320 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libscreensaver.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdScreensaverPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdScreensaverPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdScreensaverPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating screensaver plugin ** (gnome-settings-daemon:15100): DEBUG: Starting screensaver manager ** (gnome-settings-daemon:15100): DEBUG: Plugin screensaver: active ** (gnome-settings-daemon:15100): DEBUG: Plugin dummy: inactive ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x623370 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libtyping-break.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdTypingBreakPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdTypingBreakPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdTypingBreakPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating typing_break plugin ** (gnome-settings-daemon:15100): DEBUG: Starting typing_break manager ** (gnome-settings-daemon:15100): DEBUG: Plugin typing-break: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x623400 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libxrdb.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdXrdbPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdXrdbPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdXrdbPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating xrdb plugin ** (gnome-settings-daemon:15100): DEBUG: Plugin xrdb: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x660230 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libfont.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdFontPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdFontPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdFontPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating font plugin ** (gnome-settings-daemon:15100): DEBUG: Starting font manager ** (gnome-settings-daemon:15100): DEBUG: Plugin font: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x660280 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libbackground.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdBackgroundPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdBackgroundPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdBackgroundPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating background plugin ** (gnome-settings-daemon:15100): DEBUG: Starting background manager (gnome-settings-daemon:15100): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed ** (gnome-settings-daemon:15100): DEBUG: Plugin background: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x6604f0 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libmouse.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdMousePlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdMousePlugin ** (gnome-settings-daemon:15100): DEBUG: GsdMousePlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating mouse plugin ** (gnome-settings-daemon:15100): DEBUG: Starting mouse manager ** (gnome-settings-daemon:15100): DEBUG: Plugin mouse: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x660540 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libkeybindings.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdKeybindingsPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdKeybindingsPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdKeybindingsPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating keybindings plugin ** (gnome-settings-daemon:15100): DEBUG: Starting keybindings manager ** (gnome-settings-daemon:15100): DEBUG: Plugin keybindings: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x660590 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libxrandr.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdXrandrPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdXrandrPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdXrandrPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating xrandr plugin ** (gnome-settings-daemon:15100): DEBUG: Starting xrandr manager ** (gnome-settings-daemon:15100): DEBUG: Plugin xrandr: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x6605e0 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libsound.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdSoundPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdSoundPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdSoundPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating sound plugin ** (gnome-settings-daemon:15100): DEBUG: Starting sound manager ** (gnome-settings-daemon:15100): DEBUG: Plugin sound: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x660630 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libmedia-keys.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdMediaKeysPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdMediaKeysPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdMediaKeysPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating media_keys plugin ** (gnome-settings-daemon:15100): DEBUG: Starting media_keys manager ** (gnome-settings-daemon:15100): DEBUG: Plugin media-keys: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x701e30 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/liba11y-keyboard.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdA11yKeyboardPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdA11yKeyboardPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdA11yKeyboardPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating a11y_keyboard plugin ** (gnome-settings-daemon:15100): DEBUG: Starting a11y_keyboard manager ** (gnome-settings-daemon:15100): WARNING **: Unable to start a11y_keyboard manager: XKB functionality is disabled. ** (gnome-settings-daemon:15100): DEBUG: Plugin a11y-keyboard: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x701e80 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libxsettings.so ** (gnome-settings-daemon:15100): DEBUG: Registering GnomeXSettingsPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GnomeXSettingsPlugin ** (gnome-settings-daemon:15100): DEBUG: GnomeXSettingsPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating xsettings plugin ** (gnome-settings-daemon:15100): DEBUG: Starting xsettings manager ** (gnome-settings-daemon:15100): DEBUG: Plugin xsettings: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x701ed0 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libclipboard.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdClipboardPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdClipboardPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdClipboardPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating clipboard plugin ** (gnome-settings-daemon:15100): DEBUG: Starting clipboard manager ** (gnome-settings-daemon:15100): DEBUG: Plugin clipboard: active ** (gnome-settings-daemon:15100): DEBUG: GnomeSettingsModule 0x701f20 initialising ** (gnome-settings-daemon:15100): DEBUG: Loading /usr/lib64/gnome-settings-daemon-2.0/libkeyboard.so ** (gnome-settings-daemon:15100): DEBUG: Registering GsdKeyboardPlugin ** (gnome-settings-daemon:15100): DEBUG: Creating object of type GsdKeyboardPlugin ** (gnome-settings-daemon:15100): DEBUG: GsdKeyboardPlugin initializing ** (gnome-settings-daemon:15100): DEBUG: Activating keyboard plugin ** (gnome-settings-daemon:15100): DEBUG: Starting keyboard manager The program 'gnome-settings-daemon' received an X Window System error. This probably reflects a bug in the program. The error was 'BadWindow (invalid Window parameter)'. (Details: serial 371 error_code 3 request_code 20 minor_code 0) (Note to programmers: normally, X errors are reported asynchronously; that is, you will receive the error a while after causing it. To debug your program, run it with the --sync command line option to change this behavior. You can then get a meaningful backtrace from your debugger if you break on the gdk_x_error() function.)
Hm, two remarks: Did you try continuing after the error you posted the trace of? Maybe you'll get more after the first? As I said, I'm not sure the error you broke on is the problem (but then, I'm really no X expert). I also notice there's a critical error some time before that: (gnome-settings-daemon:15100): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed Might be unrelated, but then again it might not. Can you please run the gdb session with G_DEBUG=fatal-criticals and post the stacktrace you get from that as well? Thanks.
as to the first, it ends up exiting with a code 01, so no crash there as to the second GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed aborting... Program received signal SIGTRAP, Trace/breakpoint trap. IA__g_logv (log_domain=0x2b78b87af0bc "GLib-GObject", log_level=<value optimized out>, format=0x2b78b8a479dc "%s: assertion `%s' failed", args1=0x7ffff368b4d0) at gmessages.c:502 502 gmessages.c: No such file or directory. in gmessages.c (gdb) bt
+ Trace 189666
*** Bug 517987 has been marked as a duplicate of this bug. ***
The trace in bug 517987 seems more likely to be the real culprit.
There's a simple way to find out, remove the xkb module (/usr/lib/gnome-settings-daemon/plugins/keyboard/libkeyboard.so) from the directory, and try it out again. Another way to see the culprit for sure is to run gnome-settings-daemon by hand with --sync.
Er, or just disable the keyboard plugin in GConf. Now that we can... Federico, in addition to that, could you please obtain a (gdb) info locals from this frame:
+ Trace 190094
Thanks.
removing libkeyboard.so makes the crash go away
here's the frame from info locals there do you need the actual have_toplevel_win value? focused = 1 revert = 0 retval = 1 have_toplevel_win = <value optimized out> __func__ = "xkl_engine_load_window_tree"
Created attachment 106102 [details] [review] properly handle the root window So, this patch for libxklavier fixes the crash for Johnny. Sergey, please take over. ;-)
Jens, your patch is a bit excessive to me - but in general you spotted the right place. I committed the fix. Could you please try it from libxklavier CVS?
I can't, but maybe Johnny or Federico can. In any case, closing...
My first patch turned to be incomplete, the part from xklavier_toplevel.c was required as well. Anyway, it is confirmed to be fixed now. Thanks Jens again.