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 348588 - Hang on "Invalid share name" dialog
Hang on "Invalid share name" dialog
Status: RESOLVED OBSOLETE
Product: rhythmbox
Classification: Other
Component: DAAP
0.9.5
Other Linux
: Normal normal
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
Depends on:
Blocks:
 
 
Reported: 2006-07-24 23:36 UTC by Ed Catmur
Modified: 2018-05-24 11:40 UTC
See Also:
GNOME target: ---
GNOME version: 2.15/2.16


Attachments
daap-collision-hang.patch (644 bytes, patch)
2006-07-25 01:35 UTC, Ed Catmur
none Details | Review
patch (18.45 KB, patch)
2006-07-25 15:24 UTC, James "Doc" Livingston
committed Details | Review

Description Ed Catmur 2006-07-24 23:36:18 UTC
Rhythmbox hangs when I hit OK in the DAAP "Invalid share name" (DAAP name collision) dialog.

Trace:

(gdb) t a a bt


Comment 1 Ed Catmur 2006-07-24 23:38:55 UTC
MDNS impl is avahi 0.6.11.
Comment 2 Ed Catmur 2006-07-24 23:44:33 UTC
Hm. The hang isn't happening in rb code. Possibly an avahi bug; I'll see if 0.6.12 fixes it.
Comment 3 Ed Catmur 2006-07-25 01:34:27 UTC
Nah, just need to wrap the dialog in gdk_threads_enter/leave().
Comment 4 Ed Catmur 2006-07-25 01:35:41 UTC
Created attachment 69545 [details] [review]
daap-collision-hang.patch
Comment 5 James "Doc" Livingston 2006-07-25 15:24:18 UTC
Created attachment 69590 [details] [review]
patch

That should be moved up the stack, because whatever is calling that function should already hold it.

I've gone though all the g_idle_add* and g_timeout_add* functions to check that we've taking the GDK lock when needed. This patch (hopefully) fixes everything except backends/gstreamer/rb-encoder-gst.c, rhythmdb/rhythmdb.c and player/rb-recorder-gst.c (which I haven't done yet).


We really need to either a) make sure all signals get emitted with it held, or b) document which ones don't.
Comment 6 Jonathan Matthew 2006-07-31 21:46:47 UTC
Patch looks correct to me.

I don't think we should hold the gdk lock for all signal emission.  A reasonable distinction might be that all backend objects (things with no UI of their own - player, encoder, mdns stuff, metadata, maybe daap connection) emit signals without the lock held, but everything else holds the lock.
Comment 7 James "Doc" Livingston 2006-08-10 05:38:33 UTC
I've committed the patch to cvs.


I agree about not holding the lock for "backend" objects, but it gets a bit complicated. Unless the object is emitting it from a idle/timeout, it might be holding the lock (depending on whether the calling code was).

We'll need to document whether it's being emitted without the lock being held or if it doesn't know. In the latter case, the signal handler will need do whatever it wants by registering a idle callback and taking the lock there, since the lock may not be recursive.
Comment 8 GNOME Infrastructure Team 2018-05-24 11:40:34 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to GNOME's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/rhythmbox/issues/209.