Summary: | Amarok crashes when iPod is plugged in with following message: ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. | ||
---|---|---|---|
Product: | [Applications] amarok | Reporter: | Bernd Buschinski <b.buschinski> |
Component: | Collections/iPod iPhone | Assignee: | Amarok Developers <amarok-bugs-dist> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | aumuell, matej, mikko.cal, simon |
Priority: | NOR | ||
Version: | 2.4-GIT | ||
Target Milestone: | 2.5 | ||
Platform: | Gentoo Packages | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 2.5 | |
Sentry Crash Report: | |||
Attachments: |
New crash information added by DrKonqi
new-same-backtrace different crash with Qt 4.7.4 |
Description
Bernd Buschinski
2011-08-10 09:39:54 UTC
Bernd, are you able to reproduce this bug, or did it happen just once? If you could reproduce, could you try current Amarok git? Created attachment 65099 [details]
New crash information added by DrKonqi
amarok (2.4-GIT) on KDE Platform 4.7.1 (4.7.1) using Qt 4.7.2
same with my android phone, if its pugged in i get this crasher
-- Backtrace (Reduced):
#11 0x00007f193a631a4f in at (this=<value optimized out>, source_parent=...) at ../../include/QtCore/../../src/corelib/tools/qvector.h:339
#12 QSortFilterProxyModelPrivate::can_create_mapping (this=<value optimized out>, source_parent=...) at itemviews/qsortfilterproxymodel.cpp:406
#13 0x00007f193a631b39 in QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeInserted (this=0x26c4, source_parent=..., start=6, end=-1) at itemviews/qsortfilterproxymodel.cpp:1271
#14 0x00007f193a63927c in QSortFilterProxyModel::qt_metacall (this=0x18e2c00, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff1e7dd490) at .moc/debug-shared/moc_qsortfilterproxymodel.cpp:134
#15 0x00007f193b073665 in PlaylistBrowserFilterProxy::qt_metacall (this=0x18e2c00, _c=QMetaObject::InvokeMetaMethod, _id=36, _a=0x7fff1e7dd490) at /home/user/kde/build/amarok/src/moc_PlaylistBrowserFilterProxy.cpp:72
Thanks for your confirmation, Simon. From the backtrace it seems that Qt wants to output a message: qt_message(QtMsgType, const char *, typedef __va_list_tag __va_list_tag *) (msgType=QtFatalMsg, msg=0x7f1939681d98 "ASSERT failure in %s: \"%s\", file %s, line %d", ap=0x7fff1e7dd1e0) Could you please run amarok from console using `amarok --debug` and watch for similar message? Even if you don't see it, please attach last screen of Amarok debugging output when the crash happens. Created attachment 65106 [details]
new-same-backtrace
Hello, sorry for my late replay, I can still reproduce the crash
here is the default konsole ouput:
QObject: Cannot create children for a parent that is in a different thread.
(Parent is Meta::IpodHandler(0x33cd980), parent's thread is QThread(0x1fad930), current thread is ThreadWeaver::Thread(0x2b249c0)
QObject: Cannot create children for a parent that is in a different thread.
(Parent is Meta::IpodHandler(0x33cd980), parent's thread is QThread(0x1fad930), current thread is ThreadWeaver::Thread(0x2b249c0)
QObject: Cannot create children for a parent that is in a different thread.
(Parent is Meta::IpodHandler(0x33cd980), parent's thread is QThread(0x1fad930), current thread is ThreadWeaver::Thread(0x2b249c0)
QObject: Cannot create children for a parent that is in a different thread.
(Parent is Meta::IpodHandler(0x33cd980), parent's thread is QThread(0x1fad930), current thread is ThreadWeaver::Thread(0x2b249c0)
QObject: Cannot create children for a parent that is in a different thread.
(Parent is Meta::IpodHandler(0x33cd980), parent's thread is QThread(0x1fad930), current thread is ThreadWeaver::Thread(0x2b249c0)
QObject: Cannot create children for a parent that is in a different thread.
(Parent is Meta::IpodHandler(0x33cd980), parent's thread is QThread(0x1fad930), current thread is ThreadWeaver::Thread(0x2b249c0)
QObject: Cannot create children for a parent that is in a different thread.
(Parent is Meta::IpodHandler(0x33cd980), parent's thread is QThread(0x1fad930), current thread is ThreadWeaver::Thread(0x2b249c0)
QObject: Cannot create children for a parent that is in a different thread.
(Parent is Meta::IpodHandler(0x33cd980), parent's thread is QThread(0x1fad930), current thread is ThreadWeaver::Thread(0x2b249c0)
QObject: Cannot create children for a parent that is in a different thread.
(Parent is Meta::IpodHandler(0x33cd980), parent's thread is QThread(0x1fad930), current thread is ThreadWeaver::Thread(0x2b249c0)
Object::connect: No such signal Playlists::MediaDeviceUserPlaylistProvider::playlistSaved( const Playlists::MediaDevicePlaylistPtr &, const QString& )
Object::connect: No such signal Playlists::MediaDeviceUserPlaylistProvider::playlistRenamed( const Playlists::MediaDevicePlaylistPtr &)
Object::connect: No such signal Playlists::MediaDeviceUserPlaylistProvider::playlistsDeleted( const Playlists::MediaDevicePlaylistList & )
ASSERT failure in QVector<T>::at: "index out of range", file ../../include/QtCore/../../src/corelib/tools/qvector.h, line 351
KCrash: Application 'amarok' crashing...
hmm now it crashes everytime, even if my phone isn't plugegd in, seems it wants to access the collection on the phone? marok: BEGIN: void CollectionTreeItemModelBase::handleCompilations(CollectionTreeItem*) const amarok: [MySqlStorage] Initialized thread, count== 4 amarok: END__: void CollectionTreeItemModelBase::handleCompilations(CollectionTreeItem*) const [Took: 0.001s] amarok: [MySqlStorage] Initialized thread, count== 5 amarok: BEGIN: virtual void CollectionTreeItemModel::requestCollectionsExpansion() amarok: END__: virtual void CollectionTreeItemModel::requestCollectionsExpansion() [Took: 0s] ASSERT failure in QVector<T>::at: "index out of range", file ../../include/QtCore/../../src/corelib/tools/qvector.h, line 339 QSocketNotifier: Invalid socket 33 and type 'Read', disabling... KCrash: crashing... crashRecursionCounter = 2 KCrash: Application Name = amarok path = /home/user/kde/bin pid = 11065 KCrash: Arguments: /home/user/kde/bin/amarok --nocrashhandler --debug KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi from kdeinit sock_file=/home/user/.kde4/socket-d-partment/kdeinit4__0 QSocketNotifier: Invalid socket 72 and type 'Read', disabling... Thanks for your debug output, Benrd, that sheds some new light onto the problem so let's see if I'm able to diagnose it. Simon, you may want to start with a fresh config: mv $KDEHOME/share/config/amarokrc $KDEHOME/share/config/amarokrc.crashing (if you fear losing your stats, backup also $KDEHOME/share/apps/amarok). $KDEHOME is usually ~/.kde or ~/.kde4. If it solves the crash on startup, you may want to determine what exact thing in config makes Amarok crash. Perhaps a some songs in a playlist or opened playlists view? i moved to a new db yesterday, deleting config files didn't fix it Which Qt version are you people using? if it is Qt 4.8 rc1 then this might be related, see also bug 285720 Created attachment 65273 [details]
different crash with Qt 4.7.4
hm.. well.. it also crashes with Qt 4.7.4 but the backtrace is different(with the same ipod)
I'm also getting this crash every time on startup, a little bit after selecting the Amazon country. $ kde4-config -v Qt: 4.7.4 KDE Development Platform: 4.7.3 (4.7.3) kde4-config: 1.0 Amarok from git. amarok: BEGIN: void CollectionTreeItemModelBase::handleCompilations(CollectionTreeItem*) const amarok: END__: void CollectionTreeItemModelBase::handleCompilations(CollectionTreeItem*) const [Took: 0s] amarok: BEGIN: void CollectionTreeItemModelBase::handleCompilations(CollectionTreeItem*) const amarok: END__: void CollectionTreeItemModelBase::handleCompilations(CollectionTreeItem*) const [Took: 0s] ASSERT failure in QVector<T>::at: "index out of range", file ../../include/QtCore/../../src/corelib/tools/qvector.h, line 339 QSocketNotifier: Invalid socket 15 and type 'Read', disabling... amarok: NOTE: MySQL server had gone away, ping reconnected it KCrash: crashing... crashRecursionCounter = 2 KCrash: Application Name = amarok path = /usr/bin pid = 2062 KCrash: Arguments: /usr/bin/amarok --nocrashhandler -d KCrash: Attempting to start /usr/lib64/kde4/libexec/drkonqi from kdeinit sock_file=/home/mikko/.kde4/socket-X4/kdeinit4__0 Thread 1 (Thread 0x7fe079e42780 (LWP 2062)): [KCrash Handler] #6 0x00007fe076441915 in raise () from /lib64/libc.so.6 #7 0x00007fe076442cba in abort () from /lib64/libc.so.6 #8 0x00007fe076d162e4 in qt_message_output (msgType=<value optimized out>, buf=<value optimized out>) at global/qglobal.cpp:2291 #9 0x00007fe076d16459 in qt_message(QtMsgType, const char *, typedef __va_list_tag __va_list_tag *) (msgType=QtFatalMsg, msg=0x7fe076e7de88 "ASSERT failure in %s: \"%s\", file %s, line %d", ap=0x7fff0200de00) at global/qglobal.cpp:2337 #10 0x00007fe076d16615 in qFatal (msg=<value optimized out>) at global/qglobal.cpp:2520 #11 0x00007fe077e20c99 in at (this=<value optimized out>, source_parent=...) at ../../include/QtCore/../../src/corelib/tools/qvector.h:339 #12 QSortFilterProxyModelPrivate::can_create_mapping (this=<value optimized out>, source_parent=...) at itemviews/qsortfilterproxymodel.cpp:406 #13 0x00007fe077e24291 in QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeInserted (this=0x1c5ec20, source_parent=..., start=<value optimized out>, end=<value optimized out>) at itemviews/qsortfilterproxymodel.cpp:1271 #14 0x00007fe077e283bc in QSortFilterProxyModel::qt_metacall (this=0x1c5ec00, _c=QMetaObject::InvokeMetaMethod, _id=11, _a=0x7fff0200e090) at .moc/debug-shared/moc_qsortfilterproxymodel.cpp:136 #15 0x00007fe0788a4579 in PlaylistBrowserFilterProxy::qt_metacall (this=0x1c5ec00, _c=QMetaObject::InvokeMetaMethod, _id=36, _a=0x7fff0200e090) at /home/mikko/amarok/build/src/moc_PlaylistBrowserFilterProxy.cpp:72 #16 0x00007fe076e2ecdf in QMetaObject::activate (sender=0x1c5c9f0, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0x7fff0200e090) at kernel/qobject.cpp:3278 #17 0x00007fe076e7a0c4 in QAbstractItemModel::rowsAboutToBeInserted (this=<value optimized out>, _t1=<value optimized out>, _t2=0, _t3=0) at .moc/debug-shared/moc_qabstractitemmodel.cpp:174 #18 0x00007fe076e0e809 in QAbstractItemModel::beginInsertRows (this=0x1c5c9f0, parent=..., first=0, last=0) at kernel/qabstractitemmodel.cpp:2395 #19 0x00007fe078bbeb3d in QtGroupingProxy::addSourceRow (this=0x1c5c9f0, idx=...) at /home/mikko/amarok/src/browsers/playlistbrowser/QtGroupingProxy.cpp:239 #20 0x00007fe078bbe40c in QtGroupingProxy::buildTree (this=0x1c5c9f0) at /home/mikko/amarok/src/browsers/playlistbrowser/QtGroupingProxy.cpp:156 #21 0x00007fe078bd7451 in PlaylistsByProviderProxy::buildTree (this=0x1c5c9f0) at /home/mikko/amarok/src/browsers/playlistbrowser/PlaylistsByProviderProxy.cpp:287 #22 0x00007fe0788a76b8 in QtGroupingProxy::qt_metacall (this=0x1c5c9f0, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x1c5dd20) at /home/mikko/amarok/build/src/moc_QtGroupingProxy.cpp:82 #23 0x00007fe0788a5d67 in PlaylistsByProviderProxy::qt_metacall (this=0x1c5c9f0, _c=QMetaObject::InvokeMetaMethod, _id=25, _a=0x1c5dd20) at /home/mikko/amarok/build/src/moc_PlaylistsByProviderProxy.cpp:73 #24 0x00007fe076e2e742 in QObject::event (this=0x1c5c9f0, e=<value optimized out>) at kernel/qobject.cpp:1217 #25 0x00007fe07783ad40 in QApplicationPrivate::notify_helper (this=0x1080910, receiver=0x1c5c9f0, e=0x1c5b710) at kernel/qapplication.cpp:4481 #26 0x00007fe07783ffe1 in QApplication::notify (this=<value optimized out>, receiver=0x1c5c9f0, e=0x1c5b710) at kernel/qapplication.cpp:4360 #27 0x00007fe0797a9811 in KApplication::notify (this=0x7fff0200ef40, receiver=0x1c5c9f0, event=0x1c5b710) at /var/tmp/paludis/kde-base-kdelibs-4.7.3/work/kdelibs-4.7.3/kdeui/kernel/kapplication.cpp:311 #28 0x00007fe076e1812b in QCoreApplication::notifyInternal (this=0x7fff0200ef40, receiver=0x1c5c9f0, event=0x1c5b710) at kernel/qcoreapplication.cpp:787 #29 0x00007fe076e1c0a1 in sendEvent (receiver=0x0, event_type=0, data=0xefa9f0) at kernel/qcoreapplication.h:215 #30 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0xefa9f0) at kernel/qcoreapplication.cpp:1428 #31 0x00007fe076e461f3 in sendPostedEvents (s=0xf21250) at kernel/qcoreapplication.h:220 #32 postEventSourceDispatch (s=0xf21250) at kernel/qeventdispatcher_glib.cpp:277 #33 0x00007fe06fc95f3a in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0 #34 0x00007fe06fc96718 in g_main_context_iterate.clone.6 () from /usr/lib64/libglib-2.0.so.0 #35 0x00007fe06fc9697f in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #36 0x00007fe076e4635a in QEventDispatcherGlib::processEvents (this=0xefa1d0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:422 #37 0x00007fe0778ec486 in QGuiEventDispatcherGlib::processEvents (this=<value optimized out>, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204 #38 0x00007fe076e16b92 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149 #39 0x00007fe076e16e14 in QEventLoop::exec (this=0x7fff0200eeb0, flags=...) at kernel/qeventloop.cpp:201 #40 0x00007fe076e1c37b in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1064 #41 0x000000000040d1f7 in main (argc=2, argv=0x7fff02011608) at /home/mikko/amarok/src/main.cpp:296 Btw, I'm also on Gentoo. (In reply to comment #10) > I'm also getting this crash every time on startup, a little bit after selecting > the Amazon country. Thanks for your report, Mikko. I believe that you are rather affected by bug 285720, which is about following assert: ASSERT failure in QVector<T>::at: "index out of range" This bug is rather about: ASSERT failure in QCoreApplication::sendEvent: "Cannot send events to objects owned by a different thread. But let me gues, you have debug USE-flag turnet on for qt-core package, dont you? Both of these bugs can be worked around by disabling debugging asserts in Qt. ok, thanks I added my info to the other bug. And yes, +debug is enabled in order to get more useful backtraces. (In reply to comment #13) > And yes, +debug is enabled in order to get more useful backtraces. Mikko, this is a common misconception in Gentoo. USE=debug means "enable assertions and debugging output useful for developers", in order to create useful backtraces, FEATURES=splitdebug and -ggdb in CFLAGS suffices. See http://www.gentoo.org/proj/en/qa/backtraces.xml section debug USE flag. Git commit 5580f735cfadea341d75470c4a83ac91bcef073d by Matěj Laitl. Committed on 06/11/2011 at 17:30. Pushed by laitl into branch 'master'. Do not crash in Hander::Capability constructor in Qt debug builds Hander::Capability::Capability() used to have following code: moveToThread( hander->thread() ); setParent( handler ); This unfortunately asserts with: ASSERT failure in QCoreApplication ::sendEvent: Cannot send events to objects owned by a different thread in debugging Qt builds. Put setParent() call into a slot, and emit a signal to trigger it so that it is called in object's new thread. This should fix bug 279798, but it cannot be tested in current master until bug 285720 is resolved. BUG: 279798 FIXED-IN: 2.5 M +1 -0 ChangeLog M +2 -0 src/core-impl/collections/mediadevicecollection/MediaDeviceMeta.cpp M +17 -7 src/core-impl/collections/mediadevicecollection/handler/MediaDeviceHandlerCapability.cpp M +26 -6 src/core-impl/collections/mediadevicecollection/handler/MediaDeviceHandlerCapability.h http://commits.kde.org/amarok/5580f735cfadea341d75470c4a83ac91bcef073d |