GNOME Bugzilla – Bug 146075
Crash while adding images to desktop (should be fixed in 2.10.0)
Last modified: 2006-03-25 09:45:52 UTC
Distribution: Fedora Core release 2 (Tettnang) Package: gnome-panel Severity: normal Version: GNOME2.6. 2.6.x Gnome-Distributor: Red Hat, Inc Synopsis: Crash while adding images to desktop Bugzilla-Product: gnome-panel Bugzilla-Component: Panel Bugzilla-Version: 2.6.x BugBuddy-GnomeVersion: 2.0 (2.6.0) Description: Description of the crash: Steps to reproduce the crash: 1. Right click on Desktop 2. Select "change wallpaper" 3. Click on "add image" button 4. When I select a bunch of files and then try to add them it crashes Expected Results: Well I expected to see all my images added, so I could see a preview of them and then choose one. How often does this happen? My first time Additional Information: Maybe a single file selecting could work, if you allow users to select many files listed, then they will try to add many files in a row... Regards, PS. Cool work Debugging Information: Backtrace was generated from '/usr/bin/gnome-panel' (no debugging symbols found)...Using host libthread_db library "/lib/tls/libthread_db.so.1". (no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...[Thread debugging using libthread_db enabled] [New Thread -151119712 (LWP 3135)] (no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...(no debugging symbols found)...0x00a84402 in ?? ()
+ Trace 47679
------- Bug moved to this database by unknown@bugzilla.gnome.org 2004-07-08 19:13 ------- Unknown platform unknown. Setting to default platform "Other". Unknown milestone "unknown" in product "gnome-panel". Setting to default milestone for this product, '---' The original reporter of this bug does not have an account here. Reassigning to the person who moved it here, unknown@bugzilla.gnome.org. Previous reporter was carlos@sapotek.com. Setting to default status "UNCONFIRMED". Setting qa contact to the default for this product. This bug either had no qa contact or an invalid one.
*** Bug 145947 has been marked as a duplicate of this bug. ***
*** Bug 146274 has been marked as a duplicate of this bug. ***
*** Bug 146929 has been marked as a duplicate of this bug. ***
*** Bug 149046 has been marked as a duplicate of this bug. ***
*** Bug 149026 has been marked as a duplicate of this bug. ***
*** Bug 149869 has been marked as a duplicate of this bug. ***
*** Bug 150315 has been marked as a duplicate of this bug. ***
*** Bug 148857 has been marked as a duplicate of this bug. ***
I can reproduce. Here's a good stack trace: Backtrace was generated from '/usr/bin/gnome-panel' Using host libthread_db library "/lib/tls/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread -150658944 (LWP 3002)] 0x0068f402 in ?? ()
+ Trace 49389
Note that I get this warning: The program 'gnome-panel' received an X Window System error. This probably reflects a bug in the program. The error was 'BadGC (invalid GC parameter)'. (Details: serial 54287 error_code 13 request_code 62 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.)
Here's an even better stack trace: Backtrace was generated from '/usr/bin/gnome-panel' Using host libthread_db library "/lib/tls/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread -150183808 (LWP 13946)] 0x00a0e402 in ?? ()
+ Trace 49390
Thread 1 (Thread -150183808 (LWP 13946))
My observation is it fails at the function gdk_pixbuf_get_from_drawable() panel-background-monitor.c : line 331 in function panel_background_monitor_setup_pixbuf()
It seems there are three problems: * the X error in panel-background-monitor * some applet crash (maybe due to the X error?) * the panel crashes when it detects the applet crashed I'd like to fix the third one while we can reproduce it, and then fix the other ones.
- for the X error see bug #128317 - The crash in ORBit_adaptor setup is strange - some applet crashes and we query bonobo-activation for its details in order to display the reload dialog and it crashes in ORBit2? That needs investigation regardless of the X error
Oh, hold on - I'm just seeing this:
+ Trace 49394
That looks bogus, but looks a little bogus, but my guess is the bonobo X error handler is calling exit(0) which is shutting down the ORB, causing the "broken" signal to be emitted on all CORBA connections and then we try and run a bonobo-activation query. Something similar to what happened when libgamin was calling exit() in bug #149371 Hmm, its probably not useful to to emit the broken signals when shutting down the ORB. Michael, what do you think ?
Hmm, okay, nothing has changed with the X error handler, so this must have always worked before now. I suspect that something has changed in ORBit2 either to cause it to crash when you invoke when the ORB is shutting down or to cause it to emit broken signals from shutdown.
Sure; I guess we can stop it emitting broken signals in-line like that during an explicit shutdown; it's an unusual case anyway. It'd be great to have that in 2.6.x as well.
Mark: this looks like you're connecting to the "broken" signal on the opaque ORBitConnection instead of using the ORBit_small_listen_for_broken_full etc. methods on the ORBitConnection - which delay that signal until idle. Is there any reason you're doing that ? I seem to recall there was one (the rather pants listen_for_broken API originally) but it should be fixed now. I believe that might fix this issue without ORB changes. 21 0x08089a98 in panel_applet_frame_cnx_broken (frame=0x87562a8) at panel-applet-frame.c:861 dialog = (GtkWidget *) 0x65c0bc screen = (GdkScreen *) 0x853c410 applet_name = 0x0 applet_txt = 0x65c0bc "`o\003" dialog_txt = 0x87562a8 "à\tp\b\002" locked_down = 141910696
+ Trace 49472
Okay, we're using ORBit_small_listen_for_broken() in 2.7.91 and later. Problem should be fixed then ... Thanks Michael
Mark, Michael: I'm seeing the crash with HEAD. So I don't think this change fixed it.
I forgot to mention: I used the FC2 GNOME packages (2.6.x) and I only have gnome-panel HEAD.
Vincent: same stack trace?
Here's the stack trace: The program 'gnome-panel' received an X Window System error. This probably reflects a bug in the program. The error was 'BadGC (invalid GC parameter)'. (Details: serial 5536 error_code 13 request_code 62 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.) Program received signal SIGSEGV, Segmentation fault.
+ Trace 49474
Thread NaN (LWP 17946)
*** Bug 150766 has been marked as a duplicate of this bug. ***
The problem has nothing to do with adding multiple images at the same time. The correct way to reproduce is: 1. activate translucent panel background; 2. start background images properties; 3. change background image twice in quick succession. And it doesn't look like it has anything to do with bonobo. It looks like a pure gnome-panel bug, starting in frame #45, gdk_pixbuf_get_from_drawable, which triggers an X server error, probably due to invalid pixmap or gdkwindow or something like that.
Gustavo: look at all the comments, for example: http://bugzilla.gnome.org/show_bug.cgi?id=146075#c14
Right. Sorry about that. Still, the original procedure to reproduce the bug doesn't work for me, only the procedure I described above triggers it for me. And my stack trace is about half the size. The part starting with with the bonobo X error handler is much shorter. Maybe it's already been fixed? Here's the last part:
+ Trace 49844
This is the same stack trace as in bug 128317 (which is still open), AFAICT.
*** Bug 145893 has been marked as a duplicate of this bug. ***
*** Bug 154200 has been marked as a duplicate of this bug. ***
*** Bug 155601 has been marked as a duplicate of this bug. ***
*** Bug 155747 has been marked as a duplicate of this bug. ***
*** Bug 156382 has been marked as a duplicate of this bug. ***
It seems it's still happening in 2.8.0
*** Bug 155661 has been marked as a duplicate of this bug. ***
*** Bug 156788 has been marked as a duplicate of this bug. ***
*** Bug 157553 has been marked as a duplicate of this bug. ***
*** Bug 157788 has been marked as a duplicate of this bug. ***
*** Bug 158016 has been marked as a duplicate of this bug. ***
*** Bug 158560 has been marked as a duplicate of this bug. ***
This just needs some hackery in the ORB to stop broken callbacks being emitted during ORB shutdown - can someone not poke at that ? it shouldn't be too difficult.
*** Bug 153511 has been marked as a duplicate of this bug. ***
Michael, it really doesn't look like this has anything to do with ORBit/bonobo. The stack trace I get now is this:
+ Trace 52353
What is triggering the X error is a call to gdk_display_sync(). I get this problem very easily by switching backgrounds in quick successsion. One experiment that may help someone (but me) reveal the bug is that I tried running gnome-panel with --sync, and then try as I might I couldn't reproduce this error anymore. Not sure what this means though.
*** Bug 157727 has been marked as a duplicate of this bug. ***
*** Bug 159724 has been marked as a duplicate of this bug. ***
*** Bug 159740 has been marked as a duplicate of this bug. ***
*** Bug 160086 has been marked as a duplicate of this bug. ***
*** Bug 160157 has been marked as a duplicate of this bug. ***
*** Bug 160466 has been marked as a duplicate of this bug. ***
*** Bug 160644 has been marked as a duplicate of this bug. ***
*** Bug 161088 has been marked as a duplicate of this bug. ***
*** Bug 161852 has been marked as a duplicate of this bug. ***
*** Bug 162037 has been marked as a duplicate of this bug. ***
*** Bug 158464 has been marked as a duplicate of this bug. ***
*** Bug 163217 has been marked as a duplicate of this bug. ***
*** Bug 163239 has been marked as a duplicate of this bug. ***
*** Bug 163527 has been marked as a duplicate of this bug. ***
*** Bug 163868 has been marked as a duplicate of this bug. ***
*** Bug 164074 has been marked as a duplicate of this bug. ***
*** Bug 164129 has been marked as a duplicate of this bug. ***
*** Bug 164172 has been marked as a duplicate of this bug. ***
*** Bug 164284 has been marked as a duplicate of this bug. ***
*** Bug 164500 has been marked as a duplicate of this bug. ***
*** Bug 164501 has been marked as a duplicate of this bug. ***
> The problem has nothing to do with adding multiple images at the same time. The > correct way to reproduce is: 1. activate translucent panel background; 2. start > background images properties; 3. change background image twice in quick > succession. This looks like a pure X race-condition; do we need a gdk_push/pop around this code-path & a check on the error condition ? - most likely. Glad it's nothing to do with bonobo at root; un-CC'ing myself.
*** Bug 153387 has been marked as a duplicate of this bug. ***
Given number of dups, marking 2.10 showstopper.
*sigh* Everyone, please read comment #14. Thanks. We have two bugs here: * something that might be a GTK+ bug (see bug #128317) * a crash in ORBit_adaptor_setup What would be useful is someone with GNOME HEAD trying to reproduce the bug and see if it's still here, with the same stack traces.
I have tried to reproduce this/these bug(s) the way it is described in #1 and #25 but to no avail. I am on FC3 with all updates, except for ORBit2 and libIDL where I am following CVS HEAD.
*** Bug 165311 has been marked as a duplicate of this bug. ***
*** Bug 165747 has been marked as a duplicate of this bug. ***
*** Bug 165975 has been marked as a duplicate of this bug. ***
*** Bug 166178 has been marked as a duplicate of this bug. ***
FWIW, I cannot reproduce this bug with gnome-panel 2.9.91.
Me neither, with everything from CVS.
I can reproduce with 2.9.90, but it's a bit harder than it used to. You have to switch background a bunch of times, not too fast and not too slow. :) I'm upgrading hoary to a newer version and then I'll try again.
Created attachment 37155 [details] stack trace Hi, I can reproduce this bug with 2.9.91 by switching backgrounds with translucent panels. Attached is the stack trace.
Just one small comment: frame #19 in this last stack trace looks suspicious (notice the drawable address):
+ Trace 55450
However, this is inside gtk+, not gnome-panel. There's a possibility that this may be a gtk+ bug. Unless it was passed bad parameters...
In bug #128317 (which is more or less related to this one), there are suspicions that the crash happens in GTK+ too... And there's a workaround patch there.
*** Bug 166791 has been marked as a duplicate of this bug. ***
To add my voice to comment #77 from Tony Tsui, I tried turning off panel background translucency, and now the crash has gone from 100% reproducible to 0%. My version info, and how I got there, is described in bug #166791, but the important parts are: gnome-panel-2.8.1-3 control-center-2.8.0-12 gtk+-1.2.10-33
*** Bug 167013 has been marked as a duplicate of this bug. ***
*** Bug 167335 has been marked as a duplicate of this bug. ***
*** Bug 167555 has been marked as a duplicate of this bug. ***
*** Bug 167620 has been marked as a duplicate of this bug. ***
*** Bug 167905 has been marked as a duplicate of this bug. ***
I was able to produce a gnome panel crash on Debian testing by setting transluceny and changing the wallpaper quickly. However it took some minutes of wallpaper swapping. gnome-desktop-data 2.8.1-2 gnome-panel 2.8.2-2 libpanel-applet2 2.8.2-2 liborbit2 2.10.2-1.1 Ran panel with a debugger again but could not reproduce within 3 minutes so giving up. I have compiled Gnome 2.9.91 (using garnome)and tried *really hard* (~15mins of wallpaper changing) but could not produce a single crash. => I suspect it has been fixed in at least 2.10beta. gnome-panel 2.9.91
*** Bug 168612 has been marked as a duplicate of this bug. ***
I believe this is a race between whoever sets _XROOTPMAP_ID and panel_background_monitor. What I believe is happening is: 1) background is changed 2) panel_background_monitor picks up the PropertyNotify for _XROOTPMAP_ID and emits a changed signal 3) panel_background_monitor creates a GdkPixmap for the new _XROOTPMAP_ID 4) before the background monitor can do anything with the new pixmap, the background is changed again, which causes the pixmap pointed to by the _XROOTPMAP_ID read in 2) to become invalid. 5) the background monitor tries to read the contents of the now invalid pixmap, and gets killed by the X error handler The simplest fix is probably to live with the race, and push an X error handler around all pixmap accesses in the background monitor.
Alternatively, change the background monitor to grab the server and read the pmap id and the background contents atomically.
This should now be fixed since I committed the patch in bug #128317. I don't know if we should keep the bug open for the stack trace available in comment #23... I'm leaving it open for now.
"Me too". Here's a suggestion about reproducing the bug (for me on FC3 with all updates as of March 2005): gconftool-2 -t str -s /desktop/gnome/background/picture_filename background2.png gconftool-2 -t str -s /desktop/gnome/background/picture_filename other_bg.png Assumes you have a tansparent panel.
*** Bug 169658 has been marked as a duplicate of this bug. ***
*** Bug 169783 has been marked as a duplicate of this bug. ***
*** Bug 169971 has been marked as a duplicate of this bug. ***
*** Bug 170056 has been marked as a duplicate of this bug. ***
*** Bug 170422 has been marked as a duplicate of this bug. ***
*** Bug 171150 has been marked as a duplicate of this bug. ***
Closing the bug since this should not happen any more.
*** Bug 171880 has been marked as a duplicate of this bug. ***
*** Bug 172873 has been marked as a duplicate of this bug. ***
*** Bug 173062 has been marked as a duplicate of this bug. ***
*** Bug 300792 has been marked as a duplicate of this bug. ***
*** Bug 301549 has been marked as a duplicate of this bug. ***
*** Bug 159762 has been marked as a duplicate of this bug. ***
*** Bug 305845 has been marked as a duplicate of this bug. ***
*** Bug 305993 has been marked as a duplicate of this bug. ***
*** Bug 307118 has been marked as a duplicate of this bug. ***
*** Bug 307761 has been marked as a duplicate of this bug. ***
*** Bug 318415 has been marked as a duplicate of this bug. ***
*** Bug 333940 has been marked as a duplicate of this bug. ***
*** Bug 335847 has been marked as a duplicate of this bug. ***