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 687342 - Deadlocks when a second window is opened.
Deadlocks when a second window is opened.
Status: RESOLVED OBSOLETE
Product: gnome-dictionary
Classification: Core
Component: general
3.4.x
Other Linux
: Normal normal
: ---
Assigned To: gnome-dictionary-maint
gnome-dictionary-maint
Depends on:
Blocks:
 
 
Reported: 2012-11-01 13:39 UTC by Will Thompson
Modified: 2014-11-02 10:36 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Will Thompson 2012-11-01 13:39:37 UTC
Steps to reproduce:

1. Launch Dictionary.
2. Search for “sonorous”.
3. Click the “Sound” link in the definition.
4. Try to interact with the new window that appears containing the definition of “Sound”.

Expected results:

• Either the definition of “Sound” should appear in the same window, with a back button, or a new window should appear with the definition.
• Either way, it should be possible to scroll the definition of “Sound”, select text, etc.

Actual results:

• A new window pops up, but both windows stop responding to user input.
• They focus, redraw, resize just fine, but you can't interact with any of their widgets in any way.
• Closing the “Sound” window makes the original window work again.
• 

Other notes:

On launch, this warning is printed to the console:

(gnome-dictionary:27615): Gtk-CRITICAL **: gtk_device_grab_add: assertion `GDK_IS_DEVICE (device)' failed

On clicking the Sound link, these warnings are printed to the console:

(gnome-dictionary:27615): Gdk-CRITICAL **: gdk_window_get_toplevel: assertion `GDK_IS_WINDOW (window)' failed

(gnome-dictionary:27615): Gtk-CRITICAL **: _gtk_widget_captured_event: assertion `WIDGET_REALIZED_FOR_EVENT (widget, event)' failed

and about 30 more copies of that latter warning.

I think maybe a new mainloop is being run from within the callback for the link activation signal? So as far as the app is concerned, the click doesn't end until you close the new window.

Closing the original window (for “Sonorous”) also closes the new window, and the application terminates cleanly, which is not what I would expect: I would expect only one window to close.
Comment 1 Emmanuele Bassi (:ebassi) 2012-11-01 14:00:30 UTC
(In reply to comment #0)
> Steps to reproduce:
> 
> 1. Launch Dictionary.
> 2. Search for “sonorous”.
> 3. Click the “Sound” link in the definition.
> 4. Try to interact with the new window that appears containing the definition
> of “Sound”.
> 
> Expected results:
> 
> • Either the definition of “Sound” should appear in the same window, with a
> back button, or a new window should appear with the definition.
> • Either way, it should be possible to scroll the definition of “Sound”, select
> text, etc.
> 
> Actual results:
> 
> • A new window pops up, but both windows stop responding to user input.
> • They focus, redraw, resize just fine, but you can't interact with any of
> their widgets in any way.
> • Closing the “Sound” window makes the original window work again.
> • 
> 
> Other notes:
> 
> On launch, this warning is printed to the console:
> 
> (gnome-dictionary:27615): Gtk-CRITICAL **: gtk_device_grab_add: assertion
> `GDK_IS_DEVICE (device)' failed
> 
> On clicking the Sound link, these warnings are printed to the console:
> 
> (gnome-dictionary:27615): Gdk-CRITICAL **: gdk_window_get_toplevel: assertion
> `GDK_IS_WINDOW (window)' failed
> 
> (gnome-dictionary:27615): Gtk-CRITICAL **: _gtk_widget_captured_event:
> assertion `WIDGET_REALIZED_FOR_EVENT (widget, event)' failed
> 
> and about 30 more copies of that latter warning.

this is probably related to the event handling above - though I thought it had been fixed in master already.

> I think maybe a new mainloop is being run from within the callback for the link
> activation signal? So as far as the app is concerned, the click doesn't end
> until you close the new window.

no, we don't use nested main loops.

> Closing the original window (for “Sonorous”) also closes the new window, and
> the application terminates cleanly, which is not what I would expect: I would
> expect only one window to close.

this is another bug, and probably it's caused by a broken port to GtkApplication. can you file it separately?
Comment 2 Will Thompson 2012-11-01 15:04:32 UTC
(In reply to comment #1)
> > On clicking the Sound link, these warnings are printed to the console:
> > 
> > (gnome-dictionary:27615): Gdk-CRITICAL **: gdk_window_get_toplevel: assertion
> > `GDK_IS_WINDOW (window)' failed
> > 
> > (gnome-dictionary:27615): Gtk-CRITICAL **: _gtk_widget_captured_event:
> > assertion `WIDGET_REALIZED_FOR_EVENT (widget, event)' failed
> > 
> > and about 30 more copies of that latter warning.
> 
> this is probably related to the event handling above - though I thought it had
> been fixed in master already.

This is with 3.4. I get exactly the same symptom if I hit File → New, actually.
Comment 3 Will Thompson 2012-11-01 15:08:55 UTC
I have reproduced the main bug here with git master (aa132d2a).


(In reply to comment #1)
> (In reply to comment #0)
> > Closing the original window (for “Sonorous”) also closes the new window, and
> > the application terminates cleanly, which is not what I would expect: I would
> > expect only one window to close.
> 
> this is another bug, and probably it's caused by a broken port to
> GtkApplication. can you file it separately?

This bug is not present in master, so there's no pressing reason to file another bug.
Comment 4 Emmanuele Bassi (:ebassi) 2014-11-02 10:36:21 UTC
3.4 has long since been obsolete, and apart from minor lagging I cannot reproduce this with the current stable release of gnome-dictionary.