Summary: | crashed at startup, an iPod was plugged in before starting amarok. ok 2 days ago | ||
---|---|---|---|
Product: | [Applications] amarok | Reporter: | Arthur Gruzauskas <debian> |
Component: | general | Assignee: | Amarok Developers <amarok-bugs-dist> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | aikawarazuni, bart.cerneels, maximilian.kossick, raultxo, RenePloetz |
Priority: | NOR | ||
Version: | 2.1.80 | ||
Target Milestone: | --- | ||
Platform: | Unlisted Binaries | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Arthur Gruzauskas
2009-09-10 14:02:08 UTC
not sure if this is already fixed... bart? Media Devices would be Alejandro, no? #5 SqlUserPlaylistProvider::checkTables (this=0x488db60) at ../../src/playlistmanager/sql/SqlUserPlaylistProvider.cpp:354 ^ That seems quite suggestive of a crash in SqlUserPlaylistProvider, which isn't exactly media devices. From what I can tell, it's a case of the PlaylistManager doing Sql stuff before Sql stuff is ready (i.e., an sql query), because MediaDevice stuff is trying to talk to the PlaylistManager, which then tries to set itself up and crashes because it's too early for that. Another unfortunate case of "attack of the singletons!" (tm). This has nothing to do with singletons. It's just that there is no guarantee that SqlCollection has been loaded at that point, i.e. before mediadevices are loaded (and that SqlUserPlaylistProvider does not check for a null pointer obviously). That guarantee has to be made explicitly. It's the PlaylistManager that triggers creation of the SqlUserPlaylistProvider however. What I mean by a singleton issue, is that no matter when a singleton gets instantiated, by whomever, it should always make sure there's no crash. In this case, something I talked over with Bart a while back makes sense, which is associating the default SqlUserPlaylistProvider with the default SqlCollection. There's already a UserPlaylistProvider associated with each of the media device collection types. This way, we can be sure that the collection exists when the provider is created. To clarify #5: The idea is the SqlUserPlaylistProvider is part of the .so/plugin of SqlCollection. This is more to group functional dependencies and have the possibility in the future to run an amarok without any SQL dependency. There will always be a need for default providers though. The current method (calling the constructor within PlaylistManager c'tor) might not continue to work. And at the moment the default is hardcoded. I've always intended this to be configurable though rc-file or distro default. I believe my amarok suffers from the same bug using an external mysql server. If I first start amarok with the git-version built around 12 hours ago, at the first start amarok simply hangs displaying the logo and saying on console after a while: <unknown program name>(16950)/: Communication problem with "amarok" , it probably crashed. Error message was: "org.freedesktop.DBus.Error.NoReply" : " "Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken." " If I do "kbuildsycoca4 --noincremental", I can crash amarok rather reliable with the following backtrace (note that this bug does not always show up, sometimes you get to the interface but cannot fetch any data from the mysql server): Application: Amarok (amarok), signal: Segmentation fault [Current thread is 1 (Thread 0x7f40bb6a3860 (LWP 17050))] Thread 11 (Thread 0x7f40aa74c910 (LWP 17051)): #0 0x0000003c9060b57d in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f40ae4e05c1 in ?? () from /usr/lib64/libxine.so.1 #2 0x0000003c9060686a in start_thread () from /lib64/libpthread.so.0 #3 0x0000003c8fade3bd in clone () from /lib64/libc.so.6 #4 0x0000000000000000 in ?? () Thread 10 (Thread 0x7f40a9739910 (LWP 17052)): #0 0x0000003c8fad50d3 in poll () from /lib64/libc.so.6 #1 0x0000003a96e3aecc in ?? () from /lib64/libglib-2.0.so.0 #2 0x0000003a96e3b20a in g_main_context_iteration () from /lib64/libglib-2.0.so.0 #3 0x0000003a97f6798e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4 #4 0x0000003a97f3ded2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4 #5 0x0000003a97f3e2a4 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4 #6 0x0000003a97e56f8b in QThread::exec() () from /usr/lib64/libQtCore.so.4 #7 0x00007f40ae739b3e in Phonon::MediaSource::type() const () from /usr/lib64/kde4/plugins/phonon_backend/phonon_xine.so #8 0x0000003a97e59d45 in ?? () from /usr/lib64/libQtCore.so.4 #9 0x0000003c9060686a in start_thread () from /lib64/libpthread.so.0 #10 0x0000003c8fade3bd in clone () from /lib64/libc.so.6 #11 0x0000000000000000 in ?? () Thread 9 (Thread 0x7f409fffe910 (LWP 17061)): #0 0x0000003c90608875 in __pthread_mutex_lock_full () from /lib64/libpthread.so.0 #1 0x00000035d8a421fb in pa_mutex_lock () from /usr/lib64/libpulsecommon-0.9.15.so #2 0x00000035d923382a in ?? () from /usr/lib64/libpulse.so.0 #3 0x00000035d92212d4 in pa_mainloop_poll () from /usr/lib64/libpulse.so.0 #4 0x00000035d9221683 in pa_mainloop_iterate () from /usr/lib64/libpulse.so.0 #5 0x00000035d92216f6 in pa_mainloop_run () from /usr/lib64/libpulse.so.0 #6 0x00000035d9233898 in ?? () from /usr/lib64/libpulse.so.0 #7 0x00000035d8a42c4f in ?? () from /usr/lib64/libpulsecommon-0.9.15.so #8 0x0000003c9060686a in start_thread () from /lib64/libpthread.so.0 #9 0x0000003c8fade3bd in clone () from /lib64/libc.so.6 #10 0x0000000000000000 in ?? () Thread 8 (Thread 0x7f409f5fd910 (LWP 17062)): #0 0x0000003c90608875 in __pthread_mutex_lock_full () from /lib64/libpthread.so.0 #1 0x00000035d8a421fb in pa_mutex_lock () from /usr/lib64/libpulsecommon-0.9.15.so #2 0x00000035d9233eac in pa_threaded_mainloop_lock () from /usr/lib64/libpulse.so.0 #3 0x00007f40a8727b72 in snd_config_iterator_end () from /usr/lib64/alsa-lib/libasound_module_ctl_pulse.so #4 0x00000035d963b898 in snd_hctl_handle_events () from /lib64/libasound.so.2 #5 0x00000035d96455b9 in snd_mixer_handle_events () from /lib64/libasound.so.2 #6 0x00007f40a8b35974 in snd_pcm_sw_params_set_start_threshold () from /usr/lib64/xine/plugins/1.26/xineplug_ao_out_alsa.so #7 0x0000003c9060686a in start_thread () from /lib64/libpthread.so.0 #8 0x0000003c8fade3bd in clone () from /lib64/libc.so.6 #9 0x0000000000000000 in ?? () Thread 7 (Thread 0x7f409ebfc910 (LWP 17063)): #0 0x0000003c9060b2f9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f40ae4f1493 in ?? () from /usr/lib64/libxine.so.1 #2 0x0000003c9060686a in start_thread () from /lib64/libpthread.so.0 #3 0x0000003c8fade3bd in clone () from /lib64/libc.so.6 #4 0x0000000000000000 in ?? () Thread 6 (Thread 0x7f409e1fb910 (LWP 17064)): #0 0x0000003c9060b2f9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f40ae4f1493 in ?? () from /usr/lib64/libxine.so.1 #2 0x0000003c9060686a in start_thread () from /lib64/libpthread.so.0 #3 0x0000003c8fade3bd in clone () from /lib64/libc.so.6 #4 0x0000000000000000 in ?? () Thread 5 (Thread 0x7f409d7fa910 (LWP 17065)): #0 0x0000003c9060b2f9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007f40ae4f1493 in ?? () from /usr/lib64/libxine.so.1 #2 0x0000003c9060686a in start_thread () from /lib64/libpthread.so.0 #3 0x0000003c8fade3bd in clone () from /lib64/libc.so.6 #4 0x0000000000000000 in ?? () Thread 4 (Thread 0x7f4094d41910 (LWP 17067)): #0 0x0000003c8fad14bb in read () from /lib64/libc.so.6 #1 0x00007f409c8380a9 in vio_read_buff () from /usr/lib64/mysql/libmysqlclient.so.16 #2 0x00007f409c83926f in ?? () from /usr/lib64/mysql/libmysqlclient.so.16 #3 0x00007f409c839548 in my_net_read () from /usr/lib64/mysql/libmysqlclient.so.16 #4 0x00007f409c833b32 in cli_safe_read () from /usr/lib64/mysql/libmysqlclient.so.16 #5 0x00007f409c8342f9 in ?? () from /usr/lib64/mysql/libmysqlclient.so.16 #6 0x00007f409c83262c in mysql_real_query () from /usr/lib64/mysql/libmysqlclient.so.16 #7 0x00007f409cbd562b in MySqlCollection::query (this=0x1d484e0, statement=@0x7f4094d40e40) at /usr/src/debug/amarok-2.2.1/src/collection/mysql-shared/MySqlCollection.cpp:119 #8 0x00007f409cbd7343 in MySqlServerCollection::query (this=0x1d484e0, query=@0x7f4094d40e40) at /usr/src/debug/amarok-2.2.1/src/collection/mysqlservercollection/MySqlServerCollection.cpp:144 #9 0x00007f409cbb0b11 in SqlQueryMaker::runQuery (this=<value optimized out>, query=@0x4000) at /usr/src/debug/amarok-2.2.1/src/collection/sqlcollection/SqlQueryMaker.cpp:727 #10 0x00007f409cbb9ee6 in SqlWorkerThread::run (this=0x222c150) at /usr/src/debug/amarok-2.2.1/src/collection/sqlcollection/SqlQueryMaker.cpp:54 #11 0x0000003aa260befd in ?? () from /usr/lib64/libthreadweaver.so.4 #12 0x0000003aa260c1fe in ThreadWeaver::Job::execute(ThreadWeaver::Thread*) () from /usr/lib64/libthreadweaver.so.4 #13 0x0000003aa260b1ef in ?? () from /usr/lib64/libthreadweaver.so.4 #14 0x0000003aa260b658 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4 #15 0x0000003a97e59d45 in ?? () from /usr/lib64/libQtCore.so.4 #16 0x0000003c9060686a in start_thread () from /lib64/libpthread.so.0 #17 0x0000003c8fade3bd in clone () from /lib64/libc.so.6 #18 0x0000000000000000 in ?? () Thread 3 (Thread 0x7f408bfff910 (LWP 17068)): [KCrash Handler] #5 0x00007f409c839282 in ?? () from /usr/lib64/mysql/libmysqlclient.so.16 #6 0x00007f409c839548 in my_net_read () from /usr/lib64/mysql/libmysqlclient.so.16 #7 0x00007f409c833b32 in cli_safe_read () from /usr/lib64/mysql/libmysqlclient.so.16 #8 0x00007f409c835d08 in cli_advanced_command () from /usr/lib64/mysql/libmysqlclient.so.16 #9 0x00007f409c80504d in mysql_ping () from /usr/lib64/mysql/libmysqlclient.so.16 #10 0x00007f409cbd70de in MySqlServerCollection::query (this=0x1d484e0, query=@0x7f408bffee40) at /usr/src/debug/amarok-2.2.1/src/collection/mysqlservercollection/MySqlServerCollection.cpp:126 #11 0x00007f409cbb0b11 in SqlQueryMaker::runQuery (this=<value optimized out>, query=@0x0) at /usr/src/debug/amarok-2.2.1/src/collection/sqlcollection/SqlQueryMaker.cpp:727 #12 0x00007f409cbb9ee6 in SqlWorkerThread::run (this=0x223de90) at /usr/src/debug/amarok-2.2.1/src/collection/sqlcollection/SqlQueryMaker.cpp:54 #13 0x0000003aa260befd in ?? () from /usr/lib64/libthreadweaver.so.4 #14 0x0000003aa260c1fe in ThreadWeaver::Job::execute(ThreadWeaver::Thread*) () from /usr/lib64/libthreadweaver.so.4 #15 0x0000003aa260b1ef in ?? () from /usr/lib64/libthreadweaver.so.4 #16 0x0000003aa260b658 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4 #17 0x0000003a97e59d45 in ?? () from /usr/lib64/libQtCore.so.4 #18 0x0000003c9060686a in start_thread () from /lib64/libpthread.so.0 #19 0x0000003c8fade3bd in clone () from /lib64/libc.so.6 #20 0x0000000000000000 in ?? () Thread 2 (Thread 0x7f408b5fe910 (LWP 17069)): #0 0x0000003c9060b2f9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x0000003a97e59593 in ?? () from /usr/lib64/libQtCore.so.4 #2 0x0000003a97e55115 in QMutex::lock() () from /usr/lib64/libQtCore.so.4 #3 0x00007f409cbd5763 in QMutexLocker::relock (this=<value optimized out>) at /usr/include/QtCore/qmutex.h:120 #4 QMutexLocker (this=<value optimized out>) at /usr/include/QtCore/qmutex.h:102 #5 MySqlCollection::query (this=<value optimized out>) at /usr/src/debug/amarok-2.2.1/src/collection/mysql-shared/MySqlCollection.cpp:110 #6 0x00007f409cbd7343 in MySqlServerCollection::query (this=0x1d484e0, query=@0x7f408b5fde40) at /usr/src/debug/amarok-2.2.1/src/collection/mysqlservercollection/MySqlServerCollection.cpp:144 #7 0x00007f409cbb0b11 in SqlQueryMaker::runQuery (this=<value optimized out>, query=@0x2) at /usr/src/debug/amarok-2.2.1/src/collection/sqlcollection/SqlQueryMaker.cpp:727 #8 0x00007f409cbb9ee6 in SqlWorkerThread::run (this=0x22426b0) at /usr/src/debug/amarok-2.2.1/src/collection/sqlcollection/SqlQueryMaker.cpp:54 #9 0x0000003aa260befd in ?? () from /usr/lib64/libthreadweaver.so.4 #10 0x0000003aa260c1fe in ThreadWeaver::Job::execute(ThreadWeaver::Thread*) () from /usr/lib64/libthreadweaver.so.4 #11 0x0000003aa260b1ef in ?? () from /usr/lib64/libthreadweaver.so.4 #12 0x0000003aa260b658 in ThreadWeaver::Thread::run() () from /usr/lib64/libthreadweaver.so.4 #13 0x0000003a97e59d45 in ?? () from /usr/lib64/libQtCore.so.4 #14 0x0000003c9060686a in start_thread () from /lib64/libpthread.so.0 #15 0x0000003c8fade3bd in clone () from /lib64/libc.so.6 #16 0x0000000000000000 in ?? () Thread 1 (Thread 0x7f40bb6a3860 (LWP 17050)): #0 0x0000003c9060b2f9 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x0000003a97e59593 in ?? () from /usr/lib64/libQtCore.so.4 #2 0x0000003a97e55115 in QMutex::lock() () from /usr/lib64/libQtCore.so.4 #3 0x00007f409cbd5763 in QMutexLocker::relock (this=<value optimized out>) at /usr/include/QtCore/qmutex.h:120 #4 QMutexLocker (this=<value optimized out>) at /usr/include/QtCore/qmutex.h:102 #5 MySqlCollection::query (this=<value optimized out>) at /usr/src/debug/amarok-2.2.1/src/collection/mysql-shared/MySqlCollection.cpp:110 #6 0x00007f409cbd7343 in MySqlServerCollection::query (this=0x1d484e0, query=@0x7ffffafba550) at /usr/src/debug/amarok-2.2.1/src/collection/mysqlservercollection/MySqlServerCollection.cpp:144 #7 0x00007f40bc3a790d in Meta::SqlPlaylistGroup::childSqlGroups (this=0x1dbba70) at /usr/src/debug/amarok-2.2.1/src/playlistmanager/sql/SqlPlaylistGroup.cpp:141 #8 0x00007f40bc3a7c40 in Meta::SqlPlaylistGroup::allChildPlaylists (this=0x1dbba70) at /usr/src/debug/amarok-2.2.1/src/playlistmanager/sql/SqlPlaylistGroup.cpp:211 #9 0x00007f40bc39b68e in SqlUserPlaylistProvider::playlists (this=<value optimized out>) at /usr/src/debug/amarok-2.2.1/src/playlistmanager/sql/SqlUserPlaylistProvider.cpp:63 #10 0x00007f40bc392468 in PlaylistManager::playlistsOfCategory (this=<value optimized out>, playlistCategory=2) at /usr/src/debug/amarok-2.2.1/src/playlistmanager/PlaylistManager.cpp:159 #11 0x00007f40bc3768ff in PlaylistBrowserNS::UserModel::loadPlaylists (this=0x2215670) at /usr/src/debug/amarok-2.2.1/src/browsers/playlistbrowser/UserPlaylistModel.cpp:123 #12 0x00007f40bc376b0b in PlaylistBrowserNS::UserModel::UserModel (this=0x2215670) at /usr/src/debug/amarok-2.2.1/src/browsers/playlistbrowser/UserPlaylistModel.cpp:75 #13 0x00007f40bc376b7f in PlaylistBrowserNS::UserModel::instance () at /usr/src/debug/amarok-2.2.1/src/browsers/playlistbrowser/UserPlaylistModel.cpp:53 #14 0x00007f40bc37cf79 in PlaylistBrowserNS::PlaylistCategory::PlaylistCategory(struct QWidget *) (this=0x223dc80, parent=<value optimized out>) at /usr/src/debug/amarok-2.2.1/src/browsers/playlistbrowser/PlaylistCategory.cpp:60 #15 0x00007f40bc36f127 in PlaylistBrowserNS::PlaylistBrowser::addCategory (this=0x21f4c70, category=<value optimized out>) at /usr/src/debug/amarok-2.2.1/src/browsers/playlistbrowser/PlaylistBrowser.cpp:92 #16 0x00007f40bc36f5cd in PlaylistBrowserNS::PlaylistBrowser::PlaylistBrowser(const char *, struct QWidget *) (this=0x21f4c70, name=<value optimized out>, parent=<value optimized out>) at /usr/src/debug/amarok-2.2.1/src/browsers/playlistbrowser/PlaylistBrowser.cpp:59 #17 0x00007f40bc45401c in MainWindow::init (this=0x1662270) at /usr/src/debug/amarok-2.2.1/src/MainWindow.cpp:330 #18 0x00007f40bc4550d2 in MainWindow::MainWindow (this=0x1662270) at /usr/src/debug/amarok-2.2.1/src/MainWindow.cpp:163 #19 0x00007f40bc42f203 in App::continueInit (this=0x7ffffafbbcf0) at /usr/src/debug/amarok-2.2.1/src/App.cpp:667 #20 0x00007f40bc431886 in App::App (this=0x7ffffafbbcf0) at /usr/src/debug/amarok-2.2.1/src/App.cpp:225 #21 0x0000000000409efd in main (argc=<value optimized out>, argv=0x7ffffafbdaf8) at /usr/src/debug/amarok-2.2.1/src/main.cpp:225 @Rene: Your crash is apparently unrelated to iPods. It's crashing in MySQL: #5 0x00007f409c839282 in ?? () from /usr/lib64/mysql/libmysqlclient.so.16 #6 0x00007f409c839548 in my_net_read () from /usr/lib64/mysql/libmysqlclient.so.16 #7 0x00007f409c833b32 in cli_safe_read () from /usr/lib64/mysql/libmysqlclient.so.16 #8 0x00007f409c835d08 in cli_advanced_command () from /usr/lib64/mysql/libmysqlclient.so.16 #9 0x00007f409c80504d in mysql_ping () from /usr/lib64/mysql/libmysqlclient.so.16 #10 0x00007f409cbd70de in MySqlServerCollection::query (this=0x1d484e0, query=@0x7f408bffee40) at /usr/src/debug/amarok-2.2.1/src/collection/mysqlservercollection/MySqlServerCollection.cpp:126 @Rene: you might want to look at bug #209380 it seems very similar Bart, Alejandro, any news on this? Assuming this was caused by the sqlStorage not being available, the recent obsessive pointer checking would have fixed this. OK, closing as fixed for now. Feel free to reopen this report if you can reproduce this with current Amarok 2.2.1 or higher. *** Bug 233489 has been marked as a duplicate of this bug. *** |