After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
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:
 
 
Reported: 2008-02-13 23:07 UTC by Johnny Robeson
Modified: 2008-03-01 22:01 UTC
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 | 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.