Exaile crashes (hangs) when reaching end of playlist

Bug #995131 reported by Auria
14
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Exaile
Fix Released
High
Dustin Spicuzza

Bug Description

On Xubuntu 12.04, Exaile 0.3.2.2. When reaching the end of a playlist, Exaile hangs (stops being responsive) indefinitely.

No error message is printed on the terminal; I also tried running in in pdb but when it hanged pdb would not more break to show where it hanged

Running in gdb shows it hangs in

#0 0x00007ffff7bcb89c in __lll_lock_wait () from /lib/x86_64-linux-gnu/libpthread.so.0
#1 0x00007ffff7bc7080 in _L_lock_903 () from /lib/x86_64-linux-gnu/libpthread.so.0
#2 0x00007ffff7bc6f19 in pthread_mutex_lock () from /lib/x86_64-linux-gnu/libpthread.so.0
#3 0x00007ffff58b92e1 in g_static_rec_mutex_lock () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4 0x00007fffebb8b261 in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#5 0x00007fffebb92d4d in gst_pad_activate_push () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#6 0x00007fffebb92c53 in gst_pad_activate_push () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#7 0x00007fffebb938c8 in gst_pad_set_active () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#8 0x00007fffebb60558 in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#9 0x00007fffebb854ce in gst_iterator_fold () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#10 0x00007fffebb60433 in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#11 0x00007fffebb65df7 in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#12 0x00007fffdce49373 in ?? () from /usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstdecodebin2.so
#13 0x00007fffebb77dac in gst_element_change_state () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#14 0x00007fffebb786d0 in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#15 0x00007fffebb658ed in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#16 0x00007fffdce50e9a in ?? () from /usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstdecodebin2.so
#17 0x00007fffebb77dac in gst_element_change_state () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#18 0x00007fffebb786d0 in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#19 0x00007fffebb658ed in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#20 0x00007fffebb972e4 in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#21 0x00007fffea4b4aab in ?? () from /usr/lib/x86_64-linux-gnu/gstreamer-0.10/libgstplaybin.so
#22 0x00007fffebb77dac in gst_element_change_state () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#23 0x00007fffebb77e2f in gst_element_change_state () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#24 0x00007fffebb786d0 in ?? () from /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
#25 0x00007fffec6f252d in ?? () from /usr/lib/python2.7/dist-packages/gst-0.10/gst/_gst.so
#26 0x000000000042a485 in PyEval_EvalFrameEx ()
#27 0x00000000004317f2 in PyEval_EvalCodeEx ()
#28 0x000000000054aa40 in ?? ()
#29 0x00000000004c7c76 in PyObject_Call ()
#30 0x000000000049e9ba in ?? ()

Revision history for this message
Peter Crighton (petecrighton) wrote :

It even cannot be closed via “killall exaile”.

Changed in exaile:
status: New → Confirmed
Revision history for this message
Mathias Brodala (mathbr) wrote :

This does not happen with the latest trunk which will be released as 0.3.3. Can you give that one a try and let us know if the issue is gone?

Changed in exaile:
status: Confirmed → Incomplete
Revision history for this message
Dustin Spicuzza (dustin-virtualroadside) wrote :

I installed Exaile trunk this weekend on my girlfriend's computer, and can confirm that this happens on OSX 10.4. This does not happen for me on Win32 or Kubuntu 12.04.

I haven't ran gdb on the OSX crash, but that's a good idea. From the looks of the stack, this might be a gstreamer bug?

Changed in exaile:
status: Incomplete → Confirmed
Revision history for this message
Dustin Spicuzza (dustin-virtualroadside) wrote :

Note that she was playing an album of all m4a files when it hung, though I can't imagine that's related.

Revision history for this message
Dustin Spicuzza (dustin-virtualroadside) wrote :

So I finally got a chance to look at her machine tonight, and I figured out what the problem was. The call stack is very similar to the call stack reported by the OP.

Apparently (and I can't seem to find the documentation for this, but I found a number of forum/mailing list posts about it) you cannot do certain operations on gstreamer objects while being called by gstreamer because of an event.

On her system, the _on_about_to_finish() function in engine_normal.py was called by gstreamer, and this function called the play function, which tried to do set_state() on the pipeline object -- and this is not allowed. The reason it deadlocked was because something else had been called in a different thread, and it also was trying to set_state, thus deadlocking.

I was able to get her exaile working properly by encapsulating the _on_about_to_finish() function in a glib.idle_add(). I'll try to look tomorrow and examine the various bits of our code to see what else violates the rule, and make some fixes.

Revision history for this message
Dustin Spicuzza (dustin-virtualroadside) wrote :

I believe this should be fixed in r4117, when using the 'normal' playback engine. I haven't done very much testing with the unified engine yet.

Changed in exaile:
assignee: nobody → Dustin Spicuzza (dustin-virtualroadside)
importance: Undecided → High
milestone: none → 0.3.3.0
Revision history for this message
Dustin Spicuzza (dustin-virtualroadside) wrote :

Calling this fixed, since nobody has complained yet, and OSX seems to work correctly now.

Changed in exaile:
status: Confirmed → Fix Committed
Changed in exaile:
status: Fix Committed → Fix Released
Revision history for this message
the-unconventional (the-unconventional-deactivatedaccount-deactivatedaccount) wrote :

Will this fixed version land in 12.04 LTS? Because it's currently still broken.

Revision history for this message
Dustin Spicuzza (dustin-virtualroadside) wrote :

We are not planning to backport any fixes to 0.3.2, and I imagine Ubuntu will not update Exaile to 3.3.0 in an LTS distribution. I'd recommend filing a bug against the Ubuntu package if you want them to fix it.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.