Bug 192152 - Amarok crashes when trying to fetch podcasts
Summary: Amarok crashes when trying to fetch podcasts
Status: RESOLVED FIXED
Alias: None
Product: amarok
Classification: Applications
Component: Podcast (show other bugs)
Version: 2.0.90
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Amarok Developers
URL:
Keywords:
: 192758 (view as bug list)
Depends on:
Blocks:
 
Reported: 2009-05-09 18:44 UTC by Børre Gaup
Modified: 2009-05-18 20:28 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Børre Gaup 2009-05-09 18:44:39 UTC
Version:           2.0.90 (using KDE 4.2.2)
Compiler:          gcc 4.3.3 
OS:                Linux
Installed from:    Ubuntu Packages

When Amarok tries to fetch a podcast it crashes. 
This is the end of the output from amarok --debug:

amarok: BEGIN: bool PodcastReader::update(Meta::PodcastChannelPtr)
amarok: BEGIN: bool PodcastReader::read(const KUrl&)
amarok: BEGIN: void ProgressBar::setDescription(const QString&)
amarok: END__: void ProgressBar::setDescription(const QString&) - Took 5.2e-05s
amarok: BEGIN: void CompoundProgressBar::addProgressBar(ProgressBar*, QObject*)
amarok:          p before:  QPoint(2,-57)
amarok:          p after:  QPoint(4,522)
amarok: BEGIN: void ProgressBar::setDescription(const QString&)
amarok: END__: void ProgressBar::setDescription(const QString&) - Took 4.8e-05s
amarok: END__: void CompoundProgressBar::addProgressBar(ProgressBar*, QObject*) - Took 0.00071s
amarok: BEGIN: ProgressBar* ProgressBar::setAbortSlot(QObject*, const char*)
amarok:          Setting abort slot for  "Ođasmahttimin «NRK P1 – Herreavdelingen»"
amarok:          connecting to  1slotAbort()
amarok: END__: ProgressBar* ProgressBar::setAbortSlot(QObject*, const char*) - Took 0.0001s
amarok: END__: bool PodcastReader::read(const KUrl&) - Took 0.0018s
amarok: END__: bool PodcastReader::update(Meta::PodcastChannelPtr) - Took 0.0019s
amarok: BEGIN: bool PodcastReader::update(Meta::PodcastChannelPtr)
amarok: BEGIN: bool PodcastReader::read(const KUrl&)
amarok: BEGIN: void ProgressBar::setDescription(const QString&)
amarok: END__: void ProgressBar::setDescription(const QString&) - Took 4.8e-05s
amarok: BEGIN: void CompoundProgressBar::addProgressBar(ProgressBar*, QObject*)
amarok:          p before:  QPoint(2,-107)
amarok:          p after:  QPoint(4,472)
amarok: BEGIN: void ProgressBar::setDescription(const QString&)
amarok: END__: void ProgressBar::setDescription(const QString&) - Took 0.0001s
amarok: END__: void CompoundProgressBar::addProgressBar(ProgressBar*, QObject*) - Took 0.082s
amarok: BEGIN: ProgressBar* ProgressBar::setAbortSlot(QObject*, const char*)
amarok:          Setting abort slot for  "Ođasmahttimin «NRK P1 – P.I.L.S.»"
amarok:          connecting to  1slotAbort()
amarok: END__: ProgressBar* ProgressBar::setAbortSlot(QObject*, const char*) - Took 0.00013s
amarok: END__: bool PodcastReader::read(const KUrl&) - Took 0.083s
amarok: END__: bool PodcastReader::update(Meta::PodcastChannelPtr) - Took 0.083s
ASSERT: "!isEmpty()" in file /usr/include/qt4/QtCore/qlist.h, line 252
KCrash: Application 'amarok' crashing...
sock_file=/home/boerre/.kde/socket-boerre-laptop/kdeinit4__0

The addresses to the podcasts are:
http://podkast.nrk.no/program/herreavdelingen.rss
http://podkast.nrk.no/program/pils.rss
Comment 1 Børre Gaup 2009-05-09 19:26:17 UTC
I also started amarok, and went to Playlist->Podcasts and pressed the refresh button. It resulted in the following backtrace:
Program: Amarok (amarok), signal SIGABRT
[Current thread is 0 (LWP 5342)]

Thread 8 (Thread 0xb117fb90 (LWP 5343)):
#0  0xb7ffd430 in __kernel_vsyscall ()
#1  0xb77b9412 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb1ffdae3 in ?? () from /usr/lib/libxine.so.1

Thread 7 (Thread 0xb08f4b90 (LWP 5344)):
#0  0xb436e0ac in clock_gettime () from /lib/tls/i686/cmov/librt.so.1
#1  0xb6a1be2b in QTimerInfoList::getTime (this=0x8e334a4, t=@0x8e334c8) at kernel/qeventdispatcher_unix.cpp:339
#2  0xb6a1c001 in QTimerInfoList::updateCurrentTime (this=0x8e334a4) at kernel/qeventdispatcher_unix.cpp:297
#3  0xb6a1dbec in QTimerInfoList::timerWait (this=0x8e334a4, tm=@0xb08f4114) at kernel/qeventdispatcher_unix.cpp:420
#4  0xb6a1a3ba in timerSourcePrepare (source=0xb4371ff4, timeout=0xb08f4168) at kernel/qeventdispatcher_glib.cpp:140
#5  0xb440a9c0 in g_main_context_prepare () from /usr/lib/libglib-2.0.so.0
#6  0xb440adda in ?? () from /usr/lib/libglib-2.0.so.0
#7  0xb440b268 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#8  0xb6a1a1f7 in QEventDispatcherGlib::processEvents (this=0x8d4ec90, flags={i = -1332788648}) at kernel/qeventdispatcher_glib.cpp:326
#9  0xb69ecdda in QEventLoop::processEvents (this=0xb08f42d0, flags={i = -1332788584}) at kernel/qeventloop.cpp:149
#10 0xb69ed21a in QEventLoop::exec (this=0xb08f42d0, flags={i = -1332788520}) at kernel/qeventloop.cpp:200
#11 0xb68f7239 in QThread::exec (this=0x8ea0be0) at thread/qthread.cpp:487
#12 0xb204b20a in ?? () from /usr/lib/kde4/plugins/phonon_backend/phonon_xine.so
#13 0xb68fa56e in QThreadPrivate::start (arg=0x8ea0be0) at thread/qthread_unix.cpp:189
#14 0xb77b54ff in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#15 0xb670849e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 6 (Thread 0xafeffb90 (LWP 5345)):
#0  0xb7ffd430 in __kernel_vsyscall ()
#1  0xb77b90e5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb200ed8e in ?? () from /usr/lib/libxine.so.1
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

Thread 5 (Thread 0xaf4ffb90 (LWP 5346)):
#0  0xb7ffd430 in __kernel_vsyscall ()
#1  0xb77b90e5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb200ed8e in ?? () from /usr/lib/libxine.so.1
#3  0x00000001 in ?? ()

Thread 4 (Thread 0xaec7ab90 (LWP 5351)):
#0  0xb7ffd430 in __kernel_vsyscall ()
#1  0xb77b90e5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb68fb5b2 in QWaitCondition::wait (this=0x927f710, mutex=0x95aeda0, time=4294967295) at thread/qwaitcondition_unix.cpp:87
#3  0xb5d62148 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x927f6f8, th=0x96792e0) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WeaverImpl.cpp:365
#4  0xb5d64eec in ThreadWeaver::WorkingHardState::waitForAvailableJob (this=0x932e018, th=0x96792e0) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WorkingHardState.cpp:80
#5  0xb5d60d2b in ThreadWeaver::WeaverImpl::waitForAvailableJob (this=0x927f6f8, th=0x96792e0) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WeaverImpl.cpp:356
#6  0xb5d64fea in ThreadWeaver::WorkingHardState::applyForWork (this=0x932e018, th=0x96792e0) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WorkingHardState.cpp:71
#7  0xb5d626d3 in ThreadWeaver::WeaverImpl::applyForWork (this=0x927f6f8, th=0x96792e0, previous=0x96c90b8) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WeaverImpl.cpp:351
#8  0xb5d62fbe in ThreadWeaver::ThreadRunHelper::run (this=0xaec7a320, parent=0x927f6f8, th=0x96792e0) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/Thread.cpp:87
#9  0xb5d635fb in ThreadWeaver::Thread::run (this=0x96792e0) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/Thread.cpp:142
#10 0xb68fa56e in QThreadPrivate::start (arg=0x96792e0) at thread/qthread_unix.cpp:189
#11 0xb77b54ff in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#12 0xb670849e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 3 (Thread 0xad1fdb90 (LWP 5352)):
#0  0xb7ffd430 in __kernel_vsyscall ()
#1  0xb77b90e5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb68fb5b2 in QWaitCondition::wait (this=0x927f710, mutex=0x95aeda0, time=4294967295) at thread/qwaitcondition_unix.cpp:87
#3  0xb5d62148 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x927f6f8, th=0x9666760) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WeaverImpl.cpp:365
#4  0xb5d64eec in ThreadWeaver::WorkingHardState::waitForAvailableJob (this=0x932e018, th=0x9666760) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WorkingHardState.cpp:80
#5  0xb5d60d2b in ThreadWeaver::WeaverImpl::waitForAvailableJob (this=0x927f6f8, th=0x9666760) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WeaverImpl.cpp:356
#6  0xb5d64fea in ThreadWeaver::WorkingHardState::applyForWork (this=0x932e018, th=0x9666760) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WorkingHardState.cpp:71
#7  0xb5d626d3 in ThreadWeaver::WeaverImpl::applyForWork (this=0x927f6f8, th=0x9666760, previous=0x0) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WeaverImpl.cpp:351
#8  0xb5d62fbe in ThreadWeaver::ThreadRunHelper::run (this=0xad1fd320, parent=0x927f6f8, th=0x9666760) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/Thread.cpp:87
#9  0xb5d635fb in ThreadWeaver::Thread::run (this=0x9666760) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/Thread.cpp:142
#10 0xb68fa56e in QThreadPrivate::start (arg=0x9666760) at thread/qthread_unix.cpp:189
#11 0xb77b54ff in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#12 0xb670849e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 2 (Thread 0xac9fcb90 (LWP 5353)):
#0  0xb7ffd430 in __kernel_vsyscall ()
#1  0xb77b90e5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/tls/i686/cmov/libpthread.so.0
#2  0xb68fb5b2 in QWaitCondition::wait (this=0x927f710, mutex=0x95aeda0, time=4294967295) at thread/qwaitcondition_unix.cpp:87
#3  0xb5d62148 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x927f6f8, th=0x95f7428) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WeaverImpl.cpp:365
#4  0xb5d64eec in ThreadWeaver::WorkingHardState::waitForAvailableJob (this=0x932e018, th=0x95f7428) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WorkingHardState.cpp:80
#5  0xb5d60d2b in ThreadWeaver::WeaverImpl::waitForAvailableJob (this=0x927f6f8, th=0x95f7428) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WeaverImpl.cpp:356
#6  0xb5d64fea in ThreadWeaver::WorkingHardState::applyForWork (this=0x932e018, th=0x95f7428) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WorkingHardState.cpp:71
#7  0xb5d626d3 in ThreadWeaver::WeaverImpl::applyForWork (this=0x927f6f8, th=0x95f7428, previous=0x965ace8) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/WeaverImpl.cpp:351
#8  0xb5d62fbe in ThreadWeaver::ThreadRunHelper::run (this=0xac9fc320, parent=0x927f6f8, th=0x95f7428) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/Thread.cpp:87
#9  0xb5d635fb in ThreadWeaver::Thread::run (this=0x95f7428) at /build/buildd/kde4libs-4.2.3/threadweaver/Weaver/Thread.cpp:142
#10 0xb68fa56e in QThreadPrivate::start (arg=0x95f7428) at thread/qthread_unix.cpp:189
#11 0xb77b54ff in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#12 0xb670849e in clone () from /lib/tls/i686/cmov/libc.so.6

Thread 1 (Thread 0xb3eca710 (LWP 5342)):
[KCrash Handler]
#6  0xb7ffd430 in __kernel_vsyscall ()
#7  0xb664f6d0 in raise () from /lib/tls/i686/cmov/libc.so.6
#8  0xb6651098 in abort () from /lib/tls/i686/cmov/libc.so.6
#9  0xb68f21e5 in qt_message_output (msgType=QtFatalMsg, buf=0x952b460 "ASSERT: \"!isEmpty()\" in file /usr/include/qt4/QtCore/qlist.h, line 252") at global/qglobal.cpp:2017
#10 0xb68f22d1 in qFatal (msg=0xb6a410d8 "ASSERT: \"%s\" in file %s, line %d") at global/qglobal.cpp:2216
#11 0xb68f23c5 in qt_assert (assertion=0xb7c1eb19 "!isEmpty()", file=0xb7c1d01c "/usr/include/qt4/QtCore/qlist.h", line=252) at global/qglobal.cpp:1786
#12 0xb799de60 in SqlPodcastProvider::update (this=0x9099e88, channel={d = 0xbff18970}) at /usr/include/qt4/QtCore/qlist.h:252
#13 0xb7a8e563 in PlaylistBrowserNS::PodcastModel::refreshPodcast (this=0x95e95e0, channel={d = 0xbff189bc})
    at /build/buildd/amarok-2.0.90mysql5.1.30/amarok-2.0.90/src/browsers/playlistbrowser/PodcastModel.cpp:519
#14 0xb7a8e686 in PlaylistBrowserNS::PodcastModel::refreshPodcasts (this=0x95e95e0) at /build/buildd/amarok-2.0.90mysql5.1.30/amarok-2.0.90/src/browsers/playlistbrowser/PodcastModel.cpp:506
#15 0xb7a8ee88 in PlaylistBrowserNS::PodcastModel::qt_metacall (this=0x95e95e0, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbff18adc)
    at /build/buildd/amarok-2.0.90mysql5.1.30/amarok-2.0.90/build/src/PodcastModel.moc:77
#16 0xb6a04a58 in QMetaObject::activate (sender=0x95ebf28, from_signal_index=5, to_signal_index=6, argv=0xbff18adc) at kernel/qobject.cpp:3120
#17 0xb6a04e90 in QMetaObject::activate (sender=0x95ebf28, m=0xb7731f08, from_local_signal_index=1, to_local_signal_index=2, argv=0xbff18adc) at kernel/qobject.cpp:3214
#18 0xb6e98551 in QAction::triggered (this=0x95ebf28, _t1=false) at .moc/release-shared/moc_qaction.cpp:236
#19 0xb6e99acf in QAction::activate (this=0x95ebf28, event=QAction::Trigger) at kernel/qaction.cpp:1160
#20 0xb736cd12 in QToolButton::nextCheckState (this=0x6) at ../../include/QtGui/../../src/gui/kernel/qaction.h:203
#21 0xb7285573 in QAbstractButtonPrivate::click (this=0x95ec988) at widgets/qabstractbutton.cpp:525
#22 0xb7285846 in QAbstractButton::mouseReleaseEvent (this=0x95ebec0, e=0xbff190e8) at widgets/qabstractbutton.cpp:1115
#23 0xb736d20c in QToolButton::mouseReleaseEvent (this=0x95ebec0, e=0xbff190e8) at widgets/qtoolbutton.cpp:709
#24 0xb6ef58c3 in QWidget::event (this=0x95ebec0, event=0xbff190e8) at kernel/qwidget.cpp:7521
#25 0xb728381e in QAbstractButton::event (this=0x95ebec0, e=0xbff190e8) at widgets/qabstractbutton.cpp:1077
#26 0xb736fc3a in QToolButton::event (this=0x95ebec0, event=0xbff190e8) at widgets/qtoolbutton.cpp:1151
#27 0xb6e9ebcc in QApplicationPrivate::notify_helper (this=0x8d570d0, receiver=0x95ebec0, e=0xbff190e8) at kernel/qapplication.cpp:4057
#28 0xb6ea7851 in QApplication::notify (this=0xbff1aa44, receiver=0x95ebec0, e=0xbff190e8) at kernel/qapplication.cpp:3759
#29 0xb7e4ae5d in KApplication::notify (this=0xbff1aa44, receiver=0x95ebec0, event=0xbff190e8) at /build/buildd/kde4libs-4.2.3/kdeui/kernel/kapplication.cpp:307
#30 0xb69ee7ab in QCoreApplication::notifyInternal (this=0xbff1aa44, receiver=0x95ebec0, event=0xbff190e8) at kernel/qcoreapplication.cpp:610
#31 0xb6ea68be in QApplicationPrivate::sendMouseEvent (receiver=0x95ebec0, event=0xbff190e8, alienWidget=0x95ebec0, nativeWidget=0x8e9db80, buttonDown=0xb774aaa0, lastMouseReceiver=@0xb774aaa4)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:216
#32 0xb6f16aee in QETWidget::translateMouseEvent (this=0x8e9db80, event=0xbff1a77c) at kernel/qapplication_x11.cpp:4448
#33 0xb6f15ead in QApplication::x11ProcessEvent (this=0xbff1aa44, event=0xbff1a77c) at kernel/qapplication_x11.cpp:3444
#34 0xb6f4106a in x11EventSourceDispatch (s=0x8d54588, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#35 0xb4407b88 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#36 0xb440b0eb in ?? () from /usr/lib/libglib-2.0.so.0
#37 0xb440b268 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#38 0xb6a1a1d8 in QEventDispatcherGlib::processEvents (this=0x8d37680, flags={i = -1074681544}) at kernel/qeventdispatcher_glib.cpp:324
#39 0xb6f40765 in QGuiEventDispatcherGlib::processEvents (this=0x8d37680, flags={i = -1074681496}) at kernel/qguieventdispatcher_glib.cpp:202
#40 0xb69ecdda in QEventLoop::processEvents (this=0xbff1a9e0, flags={i = -1074681432}) at kernel/qeventloop.cpp:149
#41 0xb69ed21a in QEventLoop::exec (this=0xbff1a9e0, flags={i = -1074681368}) at kernel/qeventloop.cpp:200
#42 0xb69ef6c9 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#43 0xb6e9ea47 in QApplication::exec () at kernel/qapplication.cpp:3526
#44 0x0814c3e8 in main (argc=2, argv=0xbff1af34) at /build/buildd/amarok-2.0.90mysql5.1.30/amarok-2.0.90/src/main.cpp:128
Comment 2 Myriam Schweingruber 2009-05-15 13:44:17 UTC
*** Bug 192758 has been marked as a duplicate of this bug. ***
Comment 3 Bart Cerneels 2009-05-18 20:28:16 UTC
SVN commit 969704 by shanachie:

Because urls and guid's can contain %-signs followed by numbers QString::arg() is no good.

This cause INSERTs to fail and probably was responable for crashes later on.
This might also fix bug 192152 because that feed has percent signs as well. I could not reproduce the crash though.
BUG:189104
BUG:192152

 M  +2 -1      ChangeLog  
 M  +55 -27    src/podcasts/sql/SqlPodcastMeta.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=969704