Summary: | Crashes After Click to Play Any Music | ||
---|---|---|---|
Product: | [Applications] juk | Reporter: | Tom Li <biergaizi2009> |
Component: | general | Assignee: | Scott Wheeler <wheeler> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | martin.sandsmark, mpyne |
Priority: | NOR | Keywords: | drkonqi |
Version: | 3.10 | ||
Target Milestone: | --- | ||
Platform: | Gentoo Packages | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/juk/1fc69df5578d2a34b36aff4ba43c4cfa30e829dc | Version Fixed In: | 4.11.2 |
Sentry Crash Report: |
Description
Tom Li
2013-08-19 07:35:23 UTC
Seems that it's crashing when handling "scrobbling" of audio files. It shouldn't try to scrobble anything if you don't have last.fm credentials entered though, which makes this one of those "shouldn't occur" bugs. You can see if you have last.fm credentials entered by going to "Settings -> Configure Scrobbling...". I don't have a last.fm account so if you *are* trying to use that feature I'll need to add the developer of that feature to this bug to troubleshoot. If you don't have last.fm credentials entered then let me know of that as well as I will have to try to debug further... Oops. You're right. I can remember it happens after I setup my Last.FM :( Martin, could you look into this crash bug relating to JuK's last.fm support? Please repost a backtrace with debug symbols. It is very hard to get debug symbols under Gentoo. I'll install another distro in the virtual machine next time. Okay, finally I got a backtrace with more details. Application: JuK (juk), signal: Segmentation fault Using host libthread_db library "/lib64/libthread_db.so.1". [Current thread is 1 (Thread 0x7f4ce50e67c0 (LWP 2966))] Thread 10 (Thread 0x7f4ce398e700 (LWP 2967)): #0 0x00007f4ce97e69e1 in poll () from /lib64/libc.so.6 #1 0x00007f4ce877bfc4 in g_main_context_iterate.isra.22 () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f4ce877c0cc in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #3 0x00007f4cead64e86 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #4 0x00007f4cead3641f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #5 0x00007f4cead36715 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #6 0x00007f4ceac32bef in QThread::exec() () from /usr/lib64/qt4/libQtCore.so.4 #7 0x00007f4cead174a3 in QInotifyFileSystemWatcherEngine::run() () from /usr/lib64/qt4/libQtCore.so.4 #8 0x00007f4ceac352bf in QThreadPrivate::start(void*) () from /usr/lib64/qt4/libQtCore.so.4 #9 0x00007f4ce933fd73 in start_thread () from /lib64/libpthread.so.0 #10 0x00007f4ce97ef50d in clone () from /lib64/libc.so.6 Thread 9 (Thread 0x7f4cd591e700 (LWP 2970)): #0 0x00007f4ce97e69e1 in poll () from /lib64/libc.so.6 #1 0x00007f4ce931d7f1 in poll_func () from /usr/lib64/libpulse.so.0 #2 0x00007f4ce930f18c in pa_mainloop_poll () from /usr/lib64/libpulse.so.0 #3 0x00007f4ce930f81e in pa_mainloop_iterate () from /usr/lib64/libpulse.so.0 #4 0x00007f4ce930f8d0 in pa_mainloop_run () from /usr/lib64/libpulse.so.0 #5 0x00007f4ce931d7a3 in thread () from /usr/lib64/libpulse.so.0 #6 0x00007f4ce7cff8f8 in internal_thread_func () from /usr/lib64/pulseaudio/libpulsecommon-4.0.so #7 0x00007f4ce933fd73 in start_thread () from /lib64/libpthread.so.0 #8 0x00007f4ce97ef50d in clone () from /lib64/libc.so.6 Thread 8 (Thread 0x7f4cc646b700 (LWP 2979)): #0 0x00007f4ce97e69e1 in poll () from /lib64/libc.so.6 #1 0x00007f4ce877bfc4 in g_main_context_iterate.isra.22 () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f4ce877c0cc in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #3 0x00007f4cead64e65 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #4 0x00007f4cead3641f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #5 0x00007f4cead36715 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #6 0x00007f4ceac32bef in QThread::exec() () from /usr/lib64/qt4/libQtCore.so.4 #7 0x00007f4ceac352bf in QThreadPrivate::start(void*) () from /usr/lib64/qt4/libQtCore.so.4 #8 0x00007f4ce933fd73 in start_thread () from /lib64/libpthread.so.0 #9 0x00007f4ce97ef50d in clone () from /lib64/libc.so.6 Thread 7 (Thread 0x7f4cc5469700 (LWP 2981)): #0 0x00007f4ce9343c8e in pthread_cond_timedwait () from /lib64/libpthread.so.0 #1 0x00007f4ceac357a4 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/qt4/libQtCore.so.4 #2 0x00007f4ceac28b95 in QThreadPoolThread::run() () from /usr/lib64/qt4/libQtCore.so.4 #3 0x00007f4ceac352bf in QThreadPrivate::start(void*) () from /usr/lib64/qt4/libQtCore.so.4 #4 0x00007f4ce933fd73 in start_thread () from /lib64/libpthread.so.0 #5 0x00007f4ce97ef50d in clone () from /lib64/libc.so.6 Thread 6 (Thread 0x7f4cc5c6a700 (LWP 2982)): #0 0x00007f4ce934390c in pthread_cond_wait () from /lib64/libpthread.so.0 #1 0x00007f4ce87bb5b7 in g_cond_wait () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f4ce18de733 in gst_task_func () from /usr/lib64/libgstreamer-0.10.so.0 #3 0x00007f4ce87a0d36 in g_thread_pool_thread_proxy () from /usr/lib64/libglib-2.0.so.0 #4 0x00007f4ce87a0375 in g_thread_proxy () from /usr/lib64/libglib-2.0.so.0 #5 0x00007f4ce933fd73 in start_thread () from /lib64/libpthread.so.0 #6 0x00007f4ce97ef50d in clone () from /lib64/libc.so.6 Thread 5 (Thread 0x7f4cb7be2700 (LWP 2983)): #0 0x00007f4ce934390c in pthread_cond_wait () from /lib64/libpthread.so.0 #1 0x00007f4ce87bb5b7 in g_cond_wait () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f4ce08fd7cc in gst_base_sink_wait_preroll () from /usr/lib64/libgstbase-0.10.so.0 #3 0x00007f4ce08fd960 in gst_base_sink_do_preroll () from /usr/lib64/libgstbase-0.10.so.0 #4 0x00007f4ce08ff357 in gst_base_sink_render_object.isra.8 () from /usr/lib64/libgstbase-0.10.so.0 #5 0x00007f4ce090166f in gst_base_sink_queue_object_unlocked.isra.9 () from /usr/lib64/libgstbase-0.10.so.0 #6 0x00007f4ce090234c in gst_base_sink_event () from /usr/lib64/libgstbase-0.10.so.0 #7 0x00007f4ce18b9ee6 in gst_pad_send_event () from /usr/lib64/libgstreamer-0.10.so.0 #8 0x00007f4ce18ba4aa in gst_pad_push_event () from /usr/lib64/libgstreamer-0.10.so.0 #9 0x00007f4ce090bc71 in gst_base_transform_sink_event () from /usr/lib64/libgstbase-0.10.so.0 #10 0x00007f4ce18b9ee6 in gst_pad_send_event () from /usr/lib64/libgstreamer-0.10.so.0 #11 0x00007f4ce18ba4aa in gst_pad_push_event () from /usr/lib64/libgstreamer-0.10.so.0 #12 0x00007f4ce090bc71 in gst_base_transform_sink_event () from /usr/lib64/libgstbase-0.10.so.0 #13 0x00007f4ce18b9ee6 in gst_pad_send_event () from /usr/lib64/libgstreamer-0.10.so.0 #14 0x00007f4ce18ba4aa in gst_pad_push_event () from /usr/lib64/libgstreamer-0.10.so.0 #15 0x00007f4ce090bc71 in gst_base_transform_sink_event () from /usr/lib64/libgstbase-0.10.so.0 #16 0x00007f4ce18b9ee6 in gst_pad_send_event () from /usr/lib64/libgstreamer-0.10.so.0 #17 0x00007f4ce18ba4aa in gst_pad_push_event () from /usr/lib64/libgstreamer-0.10.so.0 #18 0x00007f4cd48b6133 in gst_queue_loop () from /usr/lib64/gstreamer-0.10/libgstcoreelements.so #19 0x00007f4ce18de574 in gst_task_func () from /usr/lib64/libgstreamer-0.10.so.0 #20 0x00007f4ce87a0d36 in g_thread_pool_thread_proxy () from /usr/lib64/libglib-2.0.so.0 #21 0x00007f4ce87a0375 in g_thread_proxy () from /usr/lib64/libglib-2.0.so.0 #22 0x00007f4ce933fd73 in start_thread () from /lib64/libpthread.so.0 #23 0x00007f4ce97ef50d in clone () from /lib64/libc.so.6 Thread 4 (Thread 0x7f4cb73e1700 (LWP 2984)): #0 0x00007f4ce934390c in pthread_cond_wait () from /lib64/libpthread.so.0 #1 0x00007f4ce87bb5b7 in g_cond_wait () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f4ce18de733 in gst_task_func () from /usr/lib64/libgstreamer-0.10.so.0 #3 0x00007f4ce87a0d36 in g_thread_pool_thread_proxy () from /usr/lib64/libglib-2.0.so.0 #4 0x00007f4ce87a0375 in g_thread_proxy () from /usr/lib64/libglib-2.0.so.0 #5 0x00007f4ce933fd73 in start_thread () from /lib64/libpthread.so.0 #6 0x00007f4ce97ef50d in clone () from /lib64/libc.so.6 Thread 3 (Thread 0x7f4cb6be0700 (LWP 2985)): #0 0x00007f4ce934390c in pthread_cond_wait () from /lib64/libpthread.so.0 #1 0x00007f4ce87bb5b7 in g_cond_wait () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f4ce18de733 in gst_task_func () from /usr/lib64/libgstreamer-0.10.so.0 #3 0x00007f4ce87a0d36 in g_thread_pool_thread_proxy () from /usr/lib64/libglib-2.0.so.0 #4 0x00007f4ce87a0375 in g_thread_proxy () from /usr/lib64/libglib-2.0.so.0 #5 0x00007f4ce933fd73 in start_thread () from /lib64/libpthread.so.0 #6 0x00007f4ce97ef50d in clone () from /lib64/libc.so.6 Thread 2 (Thread 0x7f4cb63df700 (LWP 2986)): #0 0x00007f4ce934390c in pthread_cond_wait () from /lib64/libpthread.so.0 #1 0x00007f4ce87bb5b7 in g_cond_wait () from /usr/lib64/libglib-2.0.so.0 #2 0x00007f4ce18de733 in gst_task_func () from /usr/lib64/libgstreamer-0.10.so.0 #3 0x00007f4ce87a0d36 in g_thread_pool_thread_proxy () from /usr/lib64/libglib-2.0.so.0 #4 0x00007f4ce87a0375 in g_thread_proxy () from /usr/lib64/libglib-2.0.so.0 #5 0x00007f4ce933fd73 in start_thread () from /lib64/libpthread.so.0 #6 0x00007f4ce97ef50d in clone () from /lib64/libc.so.6 Thread 1 (Thread 0x7f4ce50e67c0 (LWP 2966)): [KCrash Handler] #5 0x00007f4ceb66dae7 in QNetworkAccessManager::post(QNetworkRequest const&, QIODevice*) () from /usr/lib64/qt4/libQtNetwork.so.4 #6 0x00007f4ceb66db6c in QNetworkAccessManager::post(QNetworkRequest const&, QByteArray const&) () from /usr/lib64/qt4/libQtNetwork.so.4 #7 0x00000000004a67ae in Scrobbler::post (this=this@entry=0x22b8760, params=...) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0/scrobbler.cpp:211 #8 0x00000000004a90e9 in Scrobbler::nowPlaying (this=0x22b8760, file=...) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0/scrobbler.cpp:166 #9 0x000000000042fb89 in Scrobbler::qt_static_metacall (_o=0x22b8760, _c=2853271568, _id=2, _a=0x7fffaa117f60) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0_build/moc_scrobbler.cpp:63 #10 0x00007f4cead4b7cc in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4 #11 0x000000000047f421 in PlayerManager::signalItemChanged (this=this@entry=0x2308430, _t1=...) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0_build/playermanager.moc:254 #12 0x0000000000480d57 in PlayerManager::play (this=this@entry=0x2308430, file=...) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0/playermanager.cpp:261 #13 0x0000000000480f30 in PlayerManager::forward (this=0x2308430) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0/playermanager.cpp:379 #14 0x0000000000481b7d in PlayerManager::qt_static_metacall (_o=0x2308430, _c=2853271568, _id=21, _a=0x7fffaa118160) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0_build/playermanager.moc:128 #15 0x00007f4cead4b7cc in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4 #16 0x00007f4cea26ab62 in QAction::triggered(bool) () from /usr/lib64/qt4/libQtGui.so.4 #17 0x00007f4cea26c5e3 in QAction::activate(QAction::ActionEvent) () from /usr/lib64/qt4/libQtGui.so.4 #18 0x00000000004827d5 in trigger (this=<optimized out>) at /usr/include/qt4/QtGui/qaction.h:218 #19 Playlist::slotPlayCurrent (this=<optimized out>) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0/playlist.cpp:2375 #20 0x000000000048f8ea in Playlist::qt_static_metacall (_o=0x2449dd0, _c=2853271568, _id=37, _a=0x7fffaa118330) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0_build/playlist.moc:149 #21 0x00007f4cead4b7cc in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4 #22 0x00007f4cebc5cf72 in Q3ListView::doubleClicked(Q3ListViewItem*) () from /usr/lib64/qt4/libQt3Support.so.4 #23 0x00007f4cec3c3959 in K3ListView::contentsMouseDoubleClickEvent(QMouseEvent*) () from /usr/lib64/libkde3support.so.4 #24 0x000000000048e7e5 in Playlist::contentsMouseDoubleClickEvent (this=<optimized out>, e=<optimized out>) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0/playlist.cpp:1240 #25 0x00007f4cebb86bcc in Q3ScrollView::viewportMouseDoubleClickEvent(QMouseEvent*) () from /usr/lib64/qt4/libQt3Support.so.4 #26 0x00007f4cebb85336 in Q3ScrollView::eventFilter(QObject*, QEvent*) () from /usr/lib64/qt4/libQt3Support.so.4 #27 0x00007f4cebb3c73e in Q3ListView::eventFilter(QObject*, QEvent*) () from /usr/lib64/qt4/libQt3Support.so.4 #28 0x000000000048e326 in Playlist::eventFilter (this=0x2449dd0, watched=0x244a750, e=0x7fffaa118900) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0/playlist.cpp:1141 #29 0x00007f4cead37954 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4 #30 0x00007f4cea270e1c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #31 0x00007f4cea27776d in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #32 0x00007f4ceb3d75fa in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5 #33 0x00007f4cead377dd in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4 #34 0x00007f4cea276f03 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib64/qt4/libQtGui.so.4 #35 0x00007f4cea2e9a08 in QETWidget::translateMouseEvent(_XEvent const*) () from /usr/lib64/qt4/libQtGui.so.4 #36 0x00007f4cea2e845c in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/qt4/libQtGui.so.4 #37 0x00007f4cea30f152 in x11EventSourceDispatch(_GSource*, int (*)(void*), void*) () from /usr/lib64/qt4/libQtGui.so.4 #38 0x00007f4ce877bcd6 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0 #39 0x00007f4ce877c028 in g_main_context_iterate.isra.22 () from /usr/lib64/libglib-2.0.so.0 #40 0x00007f4ce877c0cc in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #41 0x00007f4cead64e65 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #42 0x00007f4cea30f1f6 in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtGui.so.4 #43 0x00007f4cead3641f in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #44 0x00007f4cead36715 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4 #45 0x00007f4cead3b9cb in QCoreApplication::exec() () from /usr/lib64/qt4/libQtCore.so.4 #46 0x0000000000475cb8 in main (argc=<optimized out>, argv=0x7fffaa1197c8) at /var/tmp/portage/kde-base/juk-4.11.0/work/juk-4.11.0/main.cpp:104 Is it enough? backtrace provided. Ah, it seems like this is because some of the optimizations done, the Scrobbler::m_networkAccessManager isn't initialized when post gets called. Should be fairly easy to fix. Git commit 1fc69df5578d2a34b36aff4ba43c4cfa30e829dc by Michael Pyne. Committed on 03/09/2013 at 01:14. Pushed by mpyne into branch 'KDE/4.11'. scrobbler: Change Scrobbler owner to be JuK, not PlayerManager. PlayerManager will always emit a track changed signal, which means the Scrobbler will always have to receive it even if we're not scrobbling (my last change to avoid making network requests when not using last.fm broke this, it seems). Instead move the Scrobbler into the base application class where we can track whether scrobbling is enabled or not, and Do the Right Thing. I don't have a last.fm account so although this should still work (I think), I can't verify. I have verified that we at least don't crash anymore. Martin, can you double-check when you get a chance? FIXED-IN:4.11.2 M +20 -3 juk.cpp M +4 -0 juk.h M +1 -6 playermanager.cpp M +0 -2 playermanager.h M +25 -4 scrobbler.cpp M +4 -1 scrobbler.h http://commits.kde.org/juk/1fc69df5578d2a34b36aff4ba43c4cfa30e829dc |