GNOME Bugzilla – Bug 472773
Crash in display_properties_dialog() [pager->screen is NULL???] [probably multiscreen-related]
Last modified: 2010-11-19 22:51:10 UTC
Version: 2.19.6 What were you doing when the application crashed? cambiavo spaces Distribution: Unknown Gnome Release: 2.19.6 2007-08-20 (Archlinux) BugBuddy Version: 2.19.91 System: Linux 2.6.22-ARCH #1 SMP PREEMPT Fri Aug 31 19:54:09 UTC 2007 i686 X Vendor: The X.Org Foundation X Vendor Release: 10300000 Selinux: No Accessibility: Enabled GTK+ Theme: MurrinaAquaIsh Icon Theme: Foxtrot Memory status: size: 31789056 vsize: 31789056 resident: 17653760 share: 13770752 rss: 17653760 rss_rlim: 4294967295 CPU usage: start_time: 1188724420 rtime: 186 utime: 164 stime: 22 cutime:0 cstime: 0 timeout: 0 it_real_value: 0 frequency: 100 Backtrace was generated from '/usr/libexec/wnck-applet' Using host libthread_db library "/lib/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread -1226905920 (LWP 6607)] 0xb7efe410 in __kernel_vsyscall ()
+ Trace 159785
Thread 1 (Thread -1226905920 (LWP 6607))
----------- .xsession-errors (21 sec old) --------------------- ** Message: drive = 0 ** Message: volume = 0 (gnome-appearance-properties:6636): Gnome-WARNING **: Accessibility: failed to find module 'libgail-gnome' which is needed to make this application accessible (epiphany:6678): Gnome-WARNING **: Accessibility: failed to find module 'libgail-gnome' which is needed to make this application accessible (epiphany:6678): libgnomevfs-WARNING **: Failed to create service browser: Bad state (epiphany:6678): libgnomevfs-WARNING **: Failed to create service browser: Bad state (epiphany:6678): libgnomevfs-WARNING **: Failed to create service browser: Bad state --------------------------------------------------
+ Trace 164116
Calling wnklet_connect_while_alive with pager->screen = 0x0. Should this be checked for? Can it happen in normal situations?
(In reply to comment #1) > #9 wncklet_connect_while_alive (object=0x0, > signal=0x8051bce "workspace_created", func=0x804ee30 <workspace_created>, > func_data=0x82ad3c0, alive_object=0x830a858) at wncklet.c:148 > > Calling wnklet_connect_while_alive with pager->screen = 0x0. Should this be > checked for? Can it happen in normal situations? It should never happen. At least, that's what I thought. If someone has time to look at how this can happen...
*** Bug 479300 has been marked as a duplicate of this bug. ***
*** Bug 491061 has been marked as a duplicate of this bug. ***
*** Bug 495406 has been marked as a duplicate of this bug. ***
*** Bug 494826 has been marked as a duplicate of this bug. ***
*** Bug 500736 has been marked as a duplicate of this bug. ***
*** Bug 501090 has been marked as a duplicate of this bug. ***
*** Bug 503485 has been marked as a duplicate of this bug. ***
*** Bug 504945 has been marked as a duplicate of this bug. ***
*** Bug 506271 has been marked as a duplicate of this bug. ***
*** Bug 509367 has been marked as a duplicate of this bug. ***
*** Bug 512713 has been marked as a duplicate of this bug. ***
*** Bug 513792 has been marked as a duplicate of this bug. ***
*** Bug 522886 has been marked as a duplicate of this bug. ***
*** Bug 523607 has been marked as a duplicate of this bug. ***
*** Bug 537462 has been marked as a duplicate of this bug. ***
*** Bug 540860 has been marked as a duplicate of this bug. ***
*** Bug 551208 has been marked as a duplicate of this bug. ***
*** Bug 557381 has been marked as a duplicate of this bug. ***
*** Bug 559091 has been marked as a duplicate of this bug. ***
*** Bug 560705 has been marked as a duplicate of this bug. ***
*** Bug 562702 has been marked as a duplicate of this bug. ***
*** Bug 563348 has been marked as a duplicate of this bug. ***
Note to self: bug 563348 has an interesting description of the bug.
*** Bug 564445 has been marked as a duplicate of this bug. ***
*** Bug 567820 has been marked as a duplicate of this bug. ***
*** Bug 568390 has been marked as a duplicate of this bug. ***
*** Bug 570690 has been marked as a duplicate of this bug. ***
*** Bug 570722 has been marked as a duplicate of this bug. ***
*** Bug 570870 has been marked as a duplicate of this bug. ***
*** Bug 571773 has been marked as a duplicate of this bug. ***
*** Bug 584382 has been marked as a duplicate of this bug. ***
*** Bug 584731 has been marked as a duplicate of this bug. ***
*** Bug 584764 has been marked as a duplicate of this bug. ***
*** Bug 584965 has been marked as a duplicate of this bug. ***
*** Bug 587018 has been marked as a duplicate of this bug. ***
*** Bug 589338 has been marked as a duplicate of this bug. ***
*** Bug 595884 has been marked as a duplicate of this bug. ***
*** Bug 596249 has been marked as a duplicate of this bug. ***
Bug 596249 was in gnome-panel-2.26.3-1.fc11.i586, so perhaps the version number should be updated?
*** Bug 597963 has been marked as a duplicate of this bug. ***
*** Bug 598119 has been marked as a duplicate of this bug. ***
*** Bug 602479 has been marked as a duplicate of this bug. ***
*** Bug 602904 has been marked as a duplicate of this bug. ***
*** Bug 594492 has been marked as a duplicate of this bug. ***
*** Bug 611337 has been marked as a duplicate of this bug. ***
Happened on OpenSolaris build 134 with GNOME 2.28.2. > ::status debugging core file of wnck-applet (32-bit) from telcontar file: /usr/lib/wnck-applet initial argv: /usr/lib/wnck-applet --oaf-activate-iid=OAFIID:GNOME_Wncklet_Factory --oaf-ior- threading model: native threads status: process terminated by SIGSEGV (Segmentation Fault), addr=0 > ::stack wncklet_connect_while_alive+0x34(0, 805c910, 80595d4, 8166748, 816c250) display_properties_dialog+0x536(8101d80, 8166748, 8199f40, fd8f5666) libbonoboui-2.so.0.0.0`marshal_VOID__USER_DATA_STRING+0x7d(81495c8, 8046910, 2, 813d228, 0, 0) libgobject-2.0.so.0.2200.3`g_closure_invoke+0xd6(81495c8, 8046910, 2, 813d228, 0, 8046860) libbonobo-2.so.0.0.0`bonobo_closure_invoke_va_list+0x2b5(81495c8, 8046910, 80469d8, fd9e744d) libbonobo-2.so.0.0.0`bonobo_closure_invoke+0x45f(81495c8, 4, 80d1188, 8101d80, 40, 8199f20) libbonoboui-2.so.0.0.0`impl_Bonobo_UIComponent_execVerb+0x81(8101d94, 8199f20, 8046af0, fe46a38b) libbonobo-2.so.0.0.0`_ORBIT_skel_small_Bonobo_UIComponent_execVerb+0x1b(8101d94, 0, 8046abc, 0, 8046af0, fd8f5500) libORBit-2.so.0.1.0`ORBit_c_stub_invoke+0x131(8142ff8, fda15b74, 4, 0, 8046abc, 0) libbonobo-2.so.0.0.0`Bonobo_UIComponent_execVerb+0x4b(8142ff8, 8199f20, 8046af0, fd8fb1c4) libbonoboui-2.so.0.0.0`impl_emit_verb_on+0x2b2(811b860, 8169a00, 80d1120, fec2782a) libgobject-2.0.so.0.2200.3`g_cclosure_marshal_VOID__POINTER+0x65(80d0af8, 0, 2, 817aac8, 8046cd8, fd8fb0d8) libgobject-2.0.so.0.2200.3`g_type_class_meta_marshal+0x46(80d0af8, 0, 2, 817aac8, 8046cd8, 4c) libgobject-2.0.so.0.2200.3`g_closure_invoke+0xd6(80d0af8, 0, 2, 817aac8, 8046cd8, 811b860) libgobject-2.0.so.0.2200.3`signal_emit_unlocked_R+0x16b9(80d06c0, 0, 811b860, 0, 817aac8, 811b860) libgobject-2.0.so.0.2200.3`g_signal_emit_valist+0x9c8(811b860, bb, 0, 8046ecc) libgobject-2.0.so.0.2200.3`g_signal_emit+0x25(811b860, bb, 0, 8169a00) libbonoboui-2.so.0.0.0`bonobo_ui_engine_emit_verb_on_w+0x3d(811b860, 8164f68, 8046ef8, fd901ef0) libbonoboui-2.so.0.0.0`exec_verb_cb+0x30(8164f68, 811b860, 8046f38, fec26ec2) libgobject-2.0.so.0.2200.3`g_cclosure_marshal_VOID__VOID+0x5f(8149488, 0, 1, 8126d30, 8047078, 0) libgobject-2.0.so.0.2200.3`g_closure_invoke+0xd6(8149488, 0, 1, 8126d30, 8047078, 8083200) libgobject-2.0.so.0.2200.3`signal_emit_unlocked_R+0xd94(80a8ad8, 0, 8164f68, 0, 8126d30, 8164f68) libgobject-2.0.so.0.2200.3`g_signal_emit_valist+0x9c8(8164f68, 5e, 0, 804726c) libgobject-2.0.so.0.2200.3`g_signal_emit+0x25(8164f68, 5e, 0, fea9c040) libgtk-x11-2.0.so.0.1800.5`gtk_widget_activate+0x47(8164f68, 8197038, 80472a8, fe994772) libgtk-x11-2.0.so.0.1800.5`gtk_menu_shell_activate_item+0xf7(8197038, 8164f68, 1, fe993c06) libgtk-x11-2.0.so.0.1800.5`gtk_menu_shell_button_release+0x202(8197038, 80caee0, 8047318, fe98a8e8) libgtk-x11-2.0.so.0.1800.5`gtk_menu_button_release+0xdc(8197038, 80caee0) libgtk-x11-2.0.so.0.1800.5`_gtk_marshal_BOOLEAN__BOXED+0x76(8094c40, 80474b0, 2, 817ab18, 80474d8, fe98a878) libgobject-2.0.so.0.2200.3`g_type_class_meta_marshal+0x46(8094c40, 80474b0, 2, 817ab18, 80474d8, b4) libgobject-2.0.so.0.2200.3`g_closure_invoke+0xd6(8094c40, 80474b0, 2, 817ab18, 80474d8, 817ce48) libgobject-2.0.so.0.2200.3`signal_emit_unlocked_R+0x16b9(8099348, 0, 8197038, 8047620, 817ab18, 14) libgobject-2.0.so.0.2200.3`g_signal_emit_valist+0x7c2(8197038, 22, 0, 80476cc) libgobject-2.0.so.0.2200.3`g_signal_emit+0x25(8197038, 22, 0, 80caee0, 80476ec, 80bc3b8) libgtk-x11-2.0.so.0.1800.5`gtk_widget_event_internal+0x246(8197038, 80caee0, 8047718, fea9ba60) libgtk-x11-2.0.so.0.1800.5`gtk_widget_event+0xad(8197038, 80caee0, 8047758, fe980d01) libgtk-x11-2.0.so.0.1800.5`gtk_propagate_event+0x9a(8164f68, 80caee0, 8047788, fe97f86e) libgtk-x11-2.0.so.0.1800.5`gtk_main_do_event+0x372(80caee0, 0, 80477d8, fecb3b6e) libgdk-x11-2.0.so.0.1800.5`gdk_event_dispatch+0x5a(8093120, 0, 0, fed64ddc) libglib-2.0.so.0.2200.3`g_main_context_dispatch+0x262(8093168, 0, 80c06d8, c) libglib-2.0.so.0.2200.3`g_main_context_iterate+0x483(8093168, 1, 1, 807b5e8) libglib-2.0.so.0.2200.3`g_main_loop_run+0x1dd(80c02a0, 80c02a0, 8047928, fd9d4716) libbonobo-2.so.0.0.0`bonobo_main+0x6b(8047950, fefc47a4, fda20758, b, fd9d2b4e, 805b55d) libbonobo-2.so.0.0.0`bonobo_generic_factory_main_timeout+0xb1(80bc048, fe4f8e6c, 80bbc20, 7d0, 80479b8) libbonobo-2.so.0.0.0`bonobo_generic_factory_main+0x26(80bc048) libpanel-applet-2.so.0.2.60`panel_applet_factory_main_closure+0xf4(805b540, 80bbbc0, 80bb408, fe4f9092) libpanel-applet-2.so.0.2.60`panel_applet_factory_main+0x3a(805b540) main+0xf7(1, 8047a38, 8047a48, 8047a2c) _start+0x7d(3, 8047b48, 0, 0, 0, 8047b9d) >
it's impressive. it must be one the long lasting bug ? I hope one day we could say goodbye to him. I have not been bitten to much with that one. one or 2 times.
Marcel: can you reliably reproduce the crash? Could you help by testing various patches? Also, do you have multiple screens?
(In reply to comment #50) > Marcel: can you reliably reproduce the crash? Could you help by testing various > patches? Sorry, it happened just once. I am not sure what to do to have it reproduced. I have just the core file. I can test patches, but because I am not able to reproduce it the testing would demonstrate nearly nothing :-(. > > Also, do you have multiple screens? No. It happened on my laptop (with compiz on and 4 workspaces configured, but still no multiple screens, no xinerama, nothing special). Maybe there is something important in the core file, but because I am not familiar with the gnome-panel/wnck-applet I am not sure where to look. :-( Any tips?
It is apparent that display_properties_dialog() in workspace-switcher.c called wncklet_connect_while_alive() in wncklet.c with first parameter NULL (object). This caused the segfault. display_properties_dialog() does not call the wncklet_connect_while_alive() directly so the call happened via some static function in the display_properties_dialog(). It looks like it happened through setup_dialog() where the wncklet_connect_while_alive() is called twice. First call: wncklet_connect_while_alive (pager->screen, "workspace_created", G_CALLBACK(workspace_created), pager, pager->properties_dialog); evaluated pager->screen as zero.
Yeah, that's what I have too. Except that there's no reason for pager->screen to be null there :/ Hrm, I'd really need to be able to reproduce...
downstream report: https://bugzilla.redhat.com/show_bug.cgi?id=552423
Created attachment 164995 [details] [review] don't call show until realize signal is hooked up I can only reproduce this issue very rarely, so I'm not 100% sure this patch fixes the issue, but it sort of makes sense. In the dowstream report people say their setting to show workspaces names is also ignored. This suggests strongly the "realize" signal handler is not getting run. That handler is responsible for detecting the running window manager (to decide whether to honor the "show workspace names" setting) and is responsible for setting ->screen from NULL to the screen.
Review of attachment 164995 [details] [review]: Aaaah, good catch. Can you commit to master (and gnome-2-30) with the change below? ::: applets/wncklet/workspace-switcher.c @@ +546,2 @@ * environments. See wnck_pager_set_orientation() doc */ pager_update (pager); I guess it also makes sense to move the call to pager_update(), then.
(In reply to comment #56) > Review of attachment 164995 [details] [review]: > > Aaaah, good catch. Can you commit to master (and gnome-2-30) with the change > below? > > ::: applets/wncklet/workspace-switcher.c > @@ +546,2 @@ > * environments. See wnck_pager_set_orientation() doc */ > pager_update (pager); > > I guess it also makes sense to move the call to pager_update(), then. Well not really sure we need the pager_update call at all. it's going to get called at realize time anyway. I'll just drop it.
Created attachment 165041 [details] [review] Drop up front call to pager_update From 819b938de2b1c1805e2dc6b69866418a361c5244 Mon Sep 17 00:00:00 2001 From: Ray Strode <rstrode@redhat.com> Date: Thu, 1 Jul 2010 14:11:40 -0400 Subject: [PATCH] Drop up front call to pager_update It's going to get called at realize time anyway, and calling it early can actually be counter-productive, since it checks state that may not be properly initialized yet. https://bugzilla.gnome.org/show_bug.cgi?id=472773
*** Bug 625773 has been marked as a duplicate of this bug. ***
Ray, have you tried your patch with a vertical panel? Debian just applied this particular patch to their package, and here, the workspace switcher on a vertical panel has wrong dimensions on a vertical panel: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=597911 I reviewed the differences of Debian’s patched workspace-switcher.c and what’s in git master, and the only differences now seem to be bonobo-related.
Another user reports this problem: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=597911#24 and it was filed as #630642 in bugzilla.
*** Bug 635273 has been marked as a duplicate of this bug. ***