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 756992 - rhythmbox hangs after handling mod/xm/it (modplug) file when crossfade is enabled
rhythmbox hangs after handling mod/xm/it (modplug) file when crossfade is ena...
Status: RESOLVED FIXED
Product: rhythmbox
Classification: Other
Component: playback
3.2.x
Other Linux
: Normal normal
: ---
Assigned To: RhythmBox Maintainers
RhythmBox Maintainers
: 757463 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2015-10-22 20:51 UTC by Bruce Guenter
Modified: 2015-11-02 10:43 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
gdb stack trace, all threads, no debug symbols (23.95 KB, text/plain)
2015-10-22 22:14 UTC, Bruce Guenter
Details
gdb stack trace, all threads (76.70 KB, text/plain)
2015-10-22 22:54 UTC, Bruce Guenter
Details

Description Bruce Guenter 2015-10-22 20:51:05 UTC
After playing a mod/xm/it file (via modplug) in a play list with crossfade enabled, rhythmbox loads and starts playing the next song, but the interface stops responding. Once the song completes, no further songs are played and the program must be killed. Also, switching to the song with next or double-click doesn't work properly and must be repeated. Again, the interface hangs after switching to another track. This is 100% repeatable for me, even with a tiny play list, and does not appear to occur with crossfade disabled.
Comment 1 Jonathan Matthew 2015-10-22 21:40:50 UTC
Can you get a stack trace from it once it's hung?
Comment 2 Bruce Guenter 2015-10-22 22:14:55 UTC
Created attachment 313896 [details]
gdb stack trace, all threads, no debug symbols
Comment 3 Bruce Guenter 2015-10-22 22:16:03 UTC
I've attached a stack trace. I am installing debug symbols for as many of the libraries as I can, but I'm running Gentoo so it'll take a while to rebuild.

Before hanging there is also the following error. I don't know if it's related:

Traceback (most recent call last):
  • File "/usr/lib64/rhythmbox/plugins/artsearch/artsearch.py", line 94 in album_art_requested
    return s.next_search()
  • File "/usr/lib64/rhythmbox/plugins/artsearch/artsearch.py", line 55 in next_search
    search.search(self.key, self.last_time, self.store, self.search_done, None)
  • File "/usr/lib64/rhythmbox/plugins/artsearch/oldcache.py", line 55 in search
    path = self.filename(album, artist, ext)
  • File "/usr/lib64/rhythmbox/plugins/artsearch/oldcache.py", line 45 in filename
    album = album.replace('/', '-')
AttributeError: 'NoneType' object has no attribute 'replace'

Comment 4 Bruce Guenter 2015-10-22 22:54:45 UTC
Created attachment 313898 [details]
gdb stack trace, all threads
Comment 5 Jonathan Matthew 2015-10-28 12:51:39 UTC
This is happening because modplug isn't a GstAudioDecoder, so it doesn't get the default sink event handling behaviour implemented there, which holds events until there's a buffer being sent downstream.  Without that, we end up back in the decodebin pad probe and deadlock.

Not really sure what to do about it, though.
Comment 6 Jonathan Matthew 2015-11-01 12:39:31 UTC
commit d1d2f0e works around it.  since modplug doesn't provide any useful tag events, it doesn't matter that we don't process them any more.
Comment 7 Jonathan Matthew 2015-11-02 10:43:43 UTC
*** Bug 757463 has been marked as a duplicate of this bug. ***