Bug 516318 - crash when run inside xnest (keyboard plugin)
crash when run inside xnest (keyboard plugin)
Status: RESOLVED NOTGNOME
Product: gnome-settings-daemon
Classification: Core
Component: plugins
2.21.x
Other Linux
: Normal normal
: ---
Assigned To: Sergey V. Udaltsov
gnome-settings-daemon-maint
:
: 517987 (view as bug list)
Depends on:
Blocks:
  Show dependency tree
 
Reported: 2008-02-13 23:07 UTC by Johnny Robeson
Modified: 2008-03-01 22:01 UTC (History)
4 users (show)

See Also:
GNOME target: ---
GNOME version: 2.21/2.22


Attachments
properly handle the root window (931 bytes, patch)
2008-02-27 19:50 UTC, Jens Granseuer
none Details | Diff | Review

Description Johnny Robeson 2008-02-13 23:07:41 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
Comment 1 Johnny Robeson 2008-02-13 23:08:53 UTC
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
  • #0 gdk_x_error
    at gdkmain-x11.c line 613
  • #1 _XError
    at XlibInt.c line 2905
  • #2 _XReply
    at XlibInt.c line 1831
  • #3 XSync
    at Sync.c line 48
  • #4 _XSyncFunction
    at Synchro.c line 37
  • #5 XGrabKey
    at GrKey.c line 55
  • #6 grab_key
    at gsd-media-keys-manager.c line 284
  • #7 gsd_media_keys_manager_start
    at gsd-media-keys-manager.c line 460
  • #8 impl_activate
    at gsd-media-keys-plugin.c line 78
  • #9 gnome_settings_plugins_engine_activate_plugin
    at gnome-settings-plugins-engine.c line 533
  • #10 activate_plugin
    at gnome-settings-plugins-engine.c line 244
  • #11 IA__g_slist_foreach
    at gslist.c line 468
  • #12 gnome_settings_plugins_engine_init
  • #13 gnome_settings_manager_start
    at gnome-settings-manager.c line 106
  • #14 main
    at main.c line 221

    
Comment 2 Jens Granseuer 2008-02-16 10:03:23 UTC
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?
Comment 3 Johnny Robeson 2008-02-18 18:05:01 UTC
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.)
Comment 4 Jens Granseuer 2008-02-18 21:22:43 UTC
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.
Comment 5 Johnny Robeson 2008-02-18 21:52:00 UTC
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
  • #0 IA__g_logv
    at gmessages.c line 502
  • #1 IA__g_log
    at gmessages.c line 517
  • #2 get_mtime
    at gnome-bg.c line 1082
  • #3 get_pixbuf
    at gnome-bg.c line 1211
  • #4 gnome_bg_create_pixmap
    at gnome-bg.c line 418
  • #5 apply_prefs
    at gsd-background-manager.c line 227
  • #6 gsd_background_manager_start
    at gsd-background-manager.c line 288
  • #7 impl_activate
    at gsd-background-plugin.c line 78
  • #8 gnome_settings_plugins_engine_activate_plugin
    at gnome-settings-plugins-engine.c line 533
  • #9 activate_plugin
    at gnome-settings-plugins-engine.c line 244
  • #10 IA__g_slist_foreach
  • #11 gnome_settings_plugins_engine_init
    at gnome-settings-plugins-engine.c line 346
  • #12 gnome_settings_manager_start
    at gnome-settings-manager.c line 106
  • #13 main
    at main.c line 221


Comment 6 Jens Granseuer 2008-02-22 08:45:47 UTC
*** Bug 517987 has been marked as a duplicate of this bug. ***
Comment 7 Jens Granseuer 2008-02-22 08:46:38 UTC
The trace in bug 517987 seems more likely to be the real culprit.
Comment 8 Bastien Nocera 2008-02-22 13:39:29 UTC
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.
Comment 9 Jens Granseuer 2008-02-22 13:58:17 UTC
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:

  • #6 xkl_engine_load_window_tree
    from /usr/lib/libxklavier.so.12

Thanks.
Comment 10 Johnny Robeson 2008-02-23 02:08:40 UTC
removing libkeyboard.so makes the crash go away
Comment 11 Johnny Robeson 2008-02-27 10:50:25 UTC
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"
Comment 12 Jens Granseuer 2008-02-27 19:50:50 UTC
Created attachment 106102 [details] [review]
properly handle the root window

So, this patch for libxklavier fixes the crash for Johnny. Sergey, please take over. ;-)
Comment 13 Sergey V. Udaltsov 2008-02-28 12:40:42 UTC
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?
Comment 14 Jens Granseuer 2008-02-29 21:03:20 UTC
I can't, but maybe Johnny or Federico can. In any case, closing...
Comment 15 Sergey V. Udaltsov 2008-03-01 22:01:59 UTC
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.

Note You need to log in before you can comment on or make changes to this bug.