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 728624 - GStreamer crashes Amarok when changing songs
GStreamer crashes Amarok when changing songs
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: dont know
unspecified
Other Linux
: Normal major
: NONE
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-04-20 21:08 UTC by Mauren
Modified: 2014-05-02 18:20 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Mauren 2014-04-20 21:08:09 UTC
I currently have an issue with GStreamer when streaming songs from a NTFS-formatted external hard disk drive. I usually use Amarok as my audio player and sometimes when it changes songs the player crashes with a SIGABRT or SIGSEGV and the following backtrace:

Application: Amarok (amarok), signal: Aborted
Using host libthread_db library "/lib64/libthread_db.so.1".
pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
185	62:	movl	(%rsp), %edi
[Current thread is 1 (Thread 0x7fb22855c8c0 (LWP 12714))]

Thread 21 (Thread 0x7fb15d113700 (LWP 12777))

  • #0 pthread_cond_timedwait
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S line 238
  • #1 QWaitCondition::wait(QMutex*, unsigned long)
    from /lib64/libQtCore.so.4
  • #2 Phonon::Gstreamer::MediaObject::handleAboutToFinish()
    from /usr/lib64/kde4/plugins/phonon_backend/phonon_gstreamer.so
  • #3 Phonon::Gstreamer::MediaObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) [clone .part.45]
    from /usr/lib64/kde4/plugins/phonon_backend/phonon_gstreamer.so
  • #4 QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    from /lib64/libQtCore.so.4
  • #5 _g_closure_invoke_va
    at gclosure.c line 840
  • #6 g_signal_emit_valist
    at gsignal.c line 3234
  • #7 g_signal_emit
    at gsignal.c line 3384
  • #8 drained_cb
    from /usr/lib64/gstreamer-0.10/libgstplaybin.so
  • #9 _g_closure_invoke_va
    at gclosure.c line 840
  • #10 g_signal_emit_valist
    at gsignal.c line 3234
  • #11 g_signal_emit
    at gsignal.c line 3384
  • #12 _g_closure_invoke_va
    at gclosure.c line 840
  • #13 g_signal_emit_valist
    at gsignal.c line 3234
  • #14 g_signal_emit
    at gsignal.c line 3384
  • #15 drain_and_switch_chains
    from /usr/lib64/gstreamer-0.10/libgstdecodebin2.so
  • #16 source_pad_event_probe
    from /usr/lib64/gstreamer-0.10/libgstdecodebin2.so
  • #17 gst_marshal_BOOLEAN__POINTER
    at gstmarshal.c line 586
  • #18 g_closure_invoke
    at gclosure.c line 777
  • #19 signal_emit_unlocked_R
    at gsignal.c line 3584
  • #20 g_signal_emitv
    at gsignal.c line 3059
  • #21 gst_pad_emit_have_data_signal
    at gstpad.c line 4167
  • #22 gst_pad_push_event
    at gstpad.c line 5262
  • #23 gst_proxy_pad_event_default
    at gstghostpad.c line 132
  • #24 gst_pad_send_event
    at gstpad.c line 5425
  • #25 gst_pad_push_event
    at gstpad.c line 5277
  • #26 gst_mad_sink_event
    from /usr/lib64/gstreamer-0.10/libgstmad.so
  • #27 gst_pad_send_event
    at gstpad.c line 5425
  • #28 gst_pad_push_event
    at gstpad.c line 5277
  • #29 gst_base_parse_loop
    at gstbaseparse.c line 2899
  • #30 gst_task_func
    at gsttask.c line 327
  • #31 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #32 g_thread_proxy
    at gthread.c line 798
  • #33 start_thread
    at pthread_create.c line 308
  • #34 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 19 (Thread 0x7fb0d2785700 (LWP 12779))

  • #0 write
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 g_wakeup_signal
    at gwakeup.c line 238
  • #2 QCoreApplication::postEvent(QObject*, QEvent*, int)
    from /lib64/libQtCore.so.4
  • #3 QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    from /lib64/libQtCore.so.4
  • #4 Phonon::Gstreamer::Pipeline::errorMessage(QString const&, Phonon::ErrorType)
    from /usr/lib64/kde4/plugins/phonon_backend/phonon_gstreamer.so
  • #5 Phonon::Gstreamer::Pipeline::cb_error(_GstBus*, _GstMessage*, void*)
    from /usr/lib64/kde4/plugins/phonon_backend/phonon_gstreamer.so
  • #6 g_closure_invoke
    at gclosure.c line 777
  • #7 signal_emit_unlocked_R
    at gsignal.c line 3584
  • #8 g_signal_emit_valist
    at gsignal.c line 3328
  • #9 g_signal_emit
    at gsignal.c line 3384
  • #10 gst_bus_sync_signal_handler
    at gstbus.c line 1145
  • #11 gst_bus_post
    at gstbus.c line 322
  • #12 gst_element_post_message
    at gstelement.c line 1853
  • #13 gst_bin_handle_message_func
    at gstbin.c line 3442
  • #14 gst_pipeline_handle_message
    at gstpipeline.c line 587
  • #15 gst_play_bin_handle_message
    from /usr/lib64/gstreamer-0.10/libgstplaybin.so
  • #16 bin_bus_handler
    at gstbin.c line 2793
  • #17 gst_bus_post
    at gstbus.c line 322
  • #18 gst_element_post_message
    at gstelement.c line 1853
  • #19 gst_bin_handle_message_func
    at gstbin.c line 3442
  • #20 gst_play_sink_handle_message
    from /usr/lib64/gstreamer-0.10/libgstplaybin.so
  • #21 bin_bus_handler
    at gstbin.c line 2793
  • #22 gst_bus_post
    at gstbus.c line 322
  • #23 gst_element_post_message
    at gstelement.c line 1853
  • #24 gst_bin_handle_message_func
    at gstbin.c line 3442
  • #25 bin_bus_handler
    at gstbin.c line 2793
  • #26 gst_bus_post
    at gstbus.c line 322
  • #27 gst_element_post_message
    at gstelement.c line 1853
  • #28 gst_bin_handle_message_func
    at gstbin.c line 3442
  • #29 bin_bus_handler
    at gstbin.c line 2793
  • #30 gst_bus_post
    at gstbus.c line 322
  • #31 gst_element_post_message
    at gstelement.c line 1853
  • #32 gst_bin_handle_message_func
    at gstbin.c line 3442
  • #33 bin_bus_handler
    at gstbin.c line 2793
  • #34 gst_bus_post
    at gstbus.c line 322
  • #35 gst_element_post_message
    at gstelement.c line 1853
  • #36 gst_element_message_full
    at gstelement.c line 1984
  • #37 gst_pulsering_is_dead
    from /usr/lib64/gstreamer-0.10/libgstpulse.so
  • #38 gst_pulsesink_get_time
    from /usr/lib64/gstreamer-0.10/libgstpulse.so
  • #39 gst_audio_clock_get_internal_time
    from /lib64/libgstaudio-0.10.so.0
  • #40 gst_clock_get_internal_time
    at gstclock.c line 953
  • #41 gst_clock_get_time
    at gstclock.c line 993
  • #42 gst_system_clock_id_wait_jitter_unlocked
    at gstsystemclock.c line 680
  • #43 gst_clock_id_wait
    at gstclock.c line 494
  • #44 gst_base_sink_wait_clock
    at gstbasesink.c line 2225
  • #45 gst_base_sink_do_sync
    at gstbasesink.c line 2572
  • #46 gst_base_sink_render_object
    at gstbasesink.c line 2978
  • #47 gst_base_sink_queue_object_unlocked
    at gstbasesink.c line 3295
  • #48 gst_base_sink_chain_unlocked
    at gstbasesink.c line 3677
  • #49 gst_base_sink_chain_main
    at gstbasesink.c line 3715
  • #50 gst_pad_push
    at gstpad.c line 4710
  • #51 gst_base_transform_chain
    at gstbasetransform.c line 2674
  • #52 gst_pad_push
    at gstpad.c line 4710
  • #53 gst_base_transform_chain
    at gstbasetransform.c line 2674
  • #54 gst_pad_push
    at gstpad.c line 4710
  • #55 gst_queue_push_one
    at gstqueue.c line 1156
  • #56 gst_queue_loop
    at gstqueue.c line 1264
  • #57 gst_task_func
    at gsttask.c line 327
  • #58 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #59 g_thread_proxy
    at gthread.c line 798
  • #60 start_thread
    at pthread_create.c line 308
  • #61 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 11 (Thread 0x7fb07f7fe700 (LWP 13242))

  • #0 write
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 g_wakeup_signal
    at gwakeup.c line 238
  • #2 QCoreApplication::postEvent(QObject*, QEvent*, int)
    from /lib64/libQtCore.so.4
  • #3 QMetaObject::activate(QObject*, QMetaObject const*, int, void**)
    from /lib64/libQtCore.so.4
  • #4 QHostInfoResult::resultsReady(QHostInfo const&)
    from /lib64/libQtNetwork.so.4
  • #5 QHostInfoRunnable::run()
    from /lib64/libQtNetwork.so.4
  • #6 QThreadPoolThread::run()
    from /lib64/libQtCore.so.4
  • #7 QThreadPrivate::start(void*)
    from /lib64/libQtCore.so.4
  • #8 start_thread
    at pthread_create.c line 308
  • #9 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 113

Thread 1 (Thread 0x7fb22855c8c0 (LWP 12714))

  • #0 pthread_cond_wait
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S line 185
  • #1 g_cond_wait
    at gthread-posix.c line 750
  • #2 gst_task_join
    at gsttask.c line 839
  • #3 gst_pad_finalize
    at gstpad.c line 457
  • #4 g_object_unref
    at gobject.c line 3024
  • #5 gst_object_unref
    at gstobject.c line 339
  • #6 gst_message_finalize
    at gstmessage.c line 198
  • #7 gst_mini_object_free
    at gstminiobject.c line 376
  • #8 gst_mini_object_unref
    at gstminiobject.c line 411
  • #9 gst_message_unref
    at ../gst/gstmessage.h line 347
  • #10 gst_bus_set_flushing
    at gstbus.c line 449
  • #11 gst_pipeline_change_state
    at gstpipeline.c line 518
  • #12 gst_play_bin_change_state
    from /usr/lib64/gstreamer-0.10/libgstplaybin.so
  • #13 gst_element_change_state
    at gstelement.c line 2761
  • #14 gst_element_continue_state
    at gstelement.c line 2444
  • #15 gst_element_change_state
    at gstelement.c line 2798
  • #16 gst_element_set_state_func
    at gstelement.c line 2717
  • #17 WebCore::MediaPlayerPrivateGStreamer::durationChanged()
    from /lib64/libQtWebKit.so.4
  • #18 WebCore::MediaPlayerPrivateGStreamer::handleMessage(_GstMessage*)
    from /lib64/libQtWebKit.so.4
  • #19 g_closure_invoke
    at gclosure.c line 777
  • #20 signal_emit_unlocked_R
    at gsignal.c line 3584
  • #21 g_signal_emit_valist
    at gsignal.c line 3328
  • #22 g_signal_emit
    at gsignal.c line 3384
  • #23 gst_bus_async_signal_func
    at gstbus.c line 1118
  • #24 gst_bus_source_dispatch
    at gstbus.c line 764
  • #25 g_main_dispatch
    at gmain.c line 3054
  • #26 g_main_context_dispatch
    at gmain.c line 3630
  • #27 g_main_context_iterate
    at gmain.c line 3701
  • #28 g_main_context_iteration
    at gmain.c line 3762
  • #29 QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
    from /lib64/libQtCore.so.4
  • #30 QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
    from /lib64/libQtGui.so.4
  • #31 QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
    from /lib64/libQtCore.so.4
  • #32 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
    from /lib64/libQtCore.so.4
  • #33 QCoreApplication::exec()
    from /lib64/libQtCore.so.4
  • #34 main
    at /usr/src/debug/amarok-2.8.0/src/main.cpp line 329

I'm under Fedora 19, with Amarok 2.8.0. I've unsuccesfully reported this bug to KDE under report number 327693, but they've told me that this bug is unrelated to Amarok code as it happens inside GStreamer backend.
Comment 1 Nicolas Dufresne (ndufresne) 2014-04-22 14:19:08 UTC
To investigate this, we would need more information. Would it be possible to provide:

- The GStreamer version installed on your distrubtion
- At least the error and warning traces in GStreamer, so we if anything could lead to this crash (export GST_DEBUG=3)
- Test results on the latest GStreamer stable release, (available in Fedora 20 at least).

Thread 1 backtrace shows that it abort during a state transition (pad_finalize) but within a WebKit instance. This is a bit unexpected. So a quick explanation of what is this software doing with WebKit, what version of WebKit. It might just be a bug there too.
Comment 2 Mauren 2014-05-02 17:47:31 UTC
I'm trying to provide the requested backtraces. Unfortunately I can't upgrade my OS right now, but I'll try to get the GStreamer debug as requested.
Comment 3 Tim-Philipp Müller 2014-05-02 18:20:57 UTC
Thanks for the bug report. They are right, this is likely an issue in GStreamer.

However, your version of Amarok/Phonon still appear to be using the old 0.10 version of GStreamer, which has not been maintained for a few years now (see frame 12 gst_play_bin_change_state () from /usr/lib64/gstreamer-0.10/libgstplaybin.so). You should either upgrade to newer versions, or they still have to be ported to GStreamer 1.x. In any case, we do not support 0.10 any longer, and it's not clear this issue exists also in 1.x, so closing this bug as obsolete.