GNOME Bugzilla – Bug 338983
Gimp Dialog popup makes metacity think "it doesn't react"
Last modified: 2006-05-05 15:32:28 UTC
With fixing bug 338286 a new problem arose: When I use gimp 2.2.11 and metacity 2.14.2 the following problem is reproducible: * I click on "close layers dock", * dialog pops up, asking me if it can close all the tabs, * I wait a bit * "this applications doesn't react" popup comes up. According to Sven it doesn't happen with metacity 2.12.3
Well, I just built gimp 2.2.11 to try to test this out, but I'm not very familiar with the gimp so you're going to have to give me much more detailed steps to reproduce. (I don't see "close layers dock" anywhere...)
1. Open Gimp. 2. Open an image 3. Press Ctrl+L 4. Click the small button in the layer dock next to the X, add tab -> Layer. 5. Try to close the layers dock and Gimp pops up a "Close all tabs?" dialog. I cant reproduce it using CVS Metacity and Gimp 2.2.8 so maybe it is Gimps fault after all?
I can't duplicate with gimp 2.2.11 (checked out the GIMP_2_2_11 tag from cvs) and with metacity head or metacity 2.14.2 (METACITY_2_14_2 tag in cvs). Daniel: Can you duplicate with either of those? If not, I'd start looking into any patches you might be using. If you can duplicate with one of those, maybe you have extra steps needed to duplicate?
I checked out the metacity and gimp. gimp fails for me to make dist (trying to make a plain package with it) - I'll keep on trying. Using metacity from CVS and reverting all Ubuntu patches, I can still reproduce the issue. For building it, we use --enable-startup-notification=yes --enable-xsync=yes (which seems the default to me). Sorry, if that's not the full information you need yet, but I wanted to make sure to follow up. As I said, I keep on trying. Do you get the "You want to close all the tabs?" dialog? (attaching picture)
Created attachment 64202 [details] Screenshot
Yes, I get the dialog asking whether I want to close all tabs and not the metacity dialog asking whether to force the application to quit. Also, startup-notification and xsync are built in by default if the relevant libraries are found, which I suspect they will be in most all cases (so requiring both isn't quite the default but basically is). My build had both enabled. Thanks for following up, let me know how the tests with GIMP_2_2_11 go...
*** Bug 340273 has been marked as a duplicate of this bug. ***
Pierre in bug 340273 got this with dapper as well, but this time using gedit. Can anyone reproduce with upstream versions of all relevant components (gtk+, metacity, and the program you can duplicate with)?
Other Ubuntu bug about that: https://launchpad.net/distros/ubuntu/+bug/29584
Sebastien: It'd be great if you could ask the question in comment 8 to those bug reporters; I have only gotten bug reports of this from dapper users and have been unable to duplicate myself.
I've juste updated Dapper, and the bug disappeared. Sorry I didn't write down which packages got updated... Apparently I'm not the only one: see Noah Medling's message at https://launchpad.net/distros/ubuntu/+bug/29584 ; he got it fixed yesterday by a simple update.
Most likely either gtk+ or metacity. Anyway, I'm assuming this was a dapper-specific bug unless someone can prove otherwise, but it's nice to hear that it's fixed anyway. :-)
I doubt there is something distro specific, metacity and GTK have few patches and they are not likely to have something to do with that. Elijah, is there a description on how that feature work somewhere or could you point the code responsive for it? To know where to look in case another user get the issue again :)
Sure, after the little 'X' close button gets pressed: 1. metacity/src/delete.c:meta_window_delete() gets called. This sends a wm_delete_window message to the application (to let it know that it should shut itself down), and also calls meta_display_ping_window() to "ping" the application and set up reply & timeout handlers. 2. metacity/src/display.c:meta_display_ping_window() sets up ping reply and ping timeout handlers (delete.c:delete_ping_reply() and delete.c:delete_ping_timeout_func(), respectively, in this case). It then sends a _net_wm_ping message to the application. 3. If the gtk+ application hasn't frozen somehow (or the event handlers haven't been messed up in some strange way), gtk+/gdk/gdkevents-x11.c:gdk_wm_protocols_filter() obtains the _net_wm_ping message and immediately responds by returning a ping to the root window. 4. If metacity's ping reply function is called before its timeout function (because the application sent a ping message to the root window), metacity disables both its reply and timeout functions and does no further processing. If the timeout function is triggered, metacity shows the force quit dialog.