Summary: | listAllEngines() sometimes returns empty list [crash @ ~ContextView] | ||
---|---|---|---|
Product: | [Applications] amarok | Reporter: | Mark Kretschmann <kretschmann> |
Component: | general | Assignee: | Amarok Developers <amarok-bugs-dist> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | amarok-bugs-dist, antoine.gaillard13, GeoBaltz, kretschmann, unnamedrambler |
Priority: | HI | ||
Version: | 2.1-SVN | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | debug log of entire amarok session up to crash |
Description
Mark Kretschmann
2009-03-17 10:10:12 UTC
SVN commit 940326 by markey: Make ContextObserver's ctor and dtor protected instead of public. There's no use case in Amarok for creating a standalone ContextObserver anywhere. CCBUG: 187384 M +4 -3 ContextObserver.h WebSVN link: http://websvn.kde.org/?view=rev&revision=940326 For comparison, debug output of _normal_ session, when Amarok does not crash on exit: amarok: BEGIN: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) amarok: Removing observer: 0x8b65e20 amarok: END__: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) - Took 0.00011s amarok: BEGIN: virtual OSDWidget::~OSDWidget() amarok: END__: virtual OSDWidget::~OSDWidget() - Took 3.5e-05s amarok: BEGIN: void SideBar::deleteBrowsers() amarok: BEGIN: virtual CollectionTreeView::~CollectionTreeView() amarok: BEGIN: virtual CollectionTreeItemModel::~CollectionTreeItemModel() amarok: END__: virtual CollectionTreeItemModel::~CollectionTreeItemModel() - Took 0.00011s amarok: END__: virtual CollectionTreeView::~CollectionTreeView() - Took 0.00028s amarok: BEGIN: virtual ServiceBrowser::~ServiceBrowser() amarok: BEGIN: virtual CollectionTreeView::~CollectionTreeView() amarok: END__: virtual CollectionTreeView::~CollectionTreeView() - Took 0.00012s amarok: BEGIN: virtual CollectionTreeView::~CollectionTreeView() amarok: END__: virtual CollectionTreeView::~CollectionTreeView() - Took 5.3e-05s amarok: BEGIN: virtual LastFmService::~LastFmService() amarok: END__: virtual LastFmService::~LastFmService() - Took 0.0031s amarok: BEGIN: virtual CollectionTreeView::~CollectionTreeView() amarok: END__: virtual CollectionTreeView::~CollectionTreeView() - Took 5.5e-05s amarok: BEGIN: virtual CollectionTreeView::~CollectionTreeView() amarok: END__: virtual CollectionTreeView::~CollectionTreeView() - Took 4.4e-05s amarok: BEGIN: virtual CollectionTreeView::~CollectionTreeView() amarok: END__: virtual CollectionTreeView::~CollectionTreeView() - Took 4.4e-05s amarok: END__: virtual ServiceBrowser::~ServiceBrowser() - Took 0.0058s amarok: BEGIN: virtual ScriptableServiceManager::~ScriptableServiceManager() amarok: END__: virtual ScriptableServiceManager::~ScriptableServiceManager() - Took 4.3e-05s amarok: BEGIN: virtual FileBrowser::Widget::~Widget() amarok: BEGIN: void FileBrowser::Widget::writeConfig() amarok: END__: void FileBrowser::Widget::writeConfig() - Took 0.00017s amarok: END__: virtual FileBrowser::Widget::~Widget() - Took 0.00031s amarok: BEGIN: virtual MyDirLister::~MyDirLister() amarok: END__: virtual MyDirLister::~MyDirLister() - Took 9.7e-05s amarok: END__: void SideBar::deleteBrowsers() - Took 0.088s amarok: BEGIN: virtual MainWindow::~MainWindow() amarok: BEGIN: virtual PlaylistFileProvider::~PlaylistFileProvider() amarok: 0 Playlists loaded amarok: END__: virtual PlaylistFileProvider::~PlaylistFileProvider() - Took 0.001s amarok: BEGIN: virtual Context::ContextView::~ContextView() amarok: Unloading plasma engine: "amarok-current" amarok: BEGIN: virtual CurrentEngine::~CurrentEngine() amarok: END__: virtual CurrentEngine::~CurrentEngine() - Took 4.5e-05s amarok: BEGIN: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) amarok: Removing observer: 0x8d51684 amarok: END__: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) - Took 6.3e-05s amarok: BEGIN: virtual ContextObserver::~ContextObserver() amarok: BEGIN: void ContextSubject::detach(ContextObserver*) amarok: END__: void ContextSubject::detach(ContextObserver*) - Took 3.6e-05s amarok: END__: virtual ContextObserver::~ContextObserver() - Took 9.8e-05s amarok: Unloading plasma engine: "amarok-service" amarok: Unloading plasma engine: "amarok-wikipedia" amarok: BEGIN: virtual WikipediaEngine::~WikipediaEngine() amarok: END__: virtual WikipediaEngine::~WikipediaEngine() - Took 3.9e-05s amarok: BEGIN: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) amarok: Removing observer: 0x8d3813c amarok: END__: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) - Took 7e-05s amarok: BEGIN: virtual ContextObserver::~ContextObserver() amarok: BEGIN: void ContextSubject::detach(ContextObserver*) amarok: END__: void ContextSubject::detach(ContextObserver*) - Took 0.00063s amarok: END__: virtual ContextObserver::~ContextObserver() - Took 0.00084s amarok: Unloading plasma engine: "amarok-lyrics" amarok: BEGIN: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) amarok: Removing observer: 0x8eb59fc amarok: END__: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) - Took 0.00021s amarok: BEGIN: virtual ContextObserver::~ContextObserver() amarok: BEGIN: void ContextSubject::detach(ContextObserver*) amarok: END__: void ContextSubject::detach(ContextObserver*) - Took 0.00011s amarok: END__: virtual ContextObserver::~ContextObserver() - Took 0.00032s amarok: BEGIN: void Context::ContextView::clear(const Context::ContextState&) amarok(26820) Context::ContextView::clear: " " Line: 129 amarok: BEGIN: virtual void Context::VerticalAppletLayout::saveToConfig(KConfigGroup&) amarok: saving applet "Current Track" amarok: saving applet "Wikipedia" amarok: saving applet "Lyrics" amarok: END__: virtual void Context::VerticalAppletLayout::saveToConfig(KConfigGroup&) - Took 0.00056s amarok: BEGIN: virtual QSizeF LyricsApplet::sizeHint(Qt::SizeHint, const QSizeF&) const amarok: END__: virtual QSizeF LyricsApplet::sizeHint(Qt::SizeHint, const QSizeF&) const - Took 0.00019s amarok: END__: void Context::ContextView::clear(const Context::ContextState&) - Took 0.005s amarok: END__: virtual Context::ContextView::~ContextView() - Took 0.0098s amarok: BEGIN: virtual ContextSubject::~ContextSubject() amarok: END__: virtual ContextSubject::~ContextSubject() - Took 0.00011s amarok: BEGIN: virtual Context::ContextScene::~ContextScene() amarok: END__: virtual Context::ContextScene::~ContextScene() - Took 0.00025s amarok: BEGIN: virtual Context::Containment::~Containment() amarok: END__: virtual Context::Containment::~Containment() - Took 0.00011s amarok: BEGIN: virtual Amarok::Splitter::~Splitter() amarok: END__: virtual Amarok::Splitter::~Splitter() - Took 0.00021s amarok: BEGIN: virtual SideBar::~SideBar() amarok: END__: virtual SideBar::~SideBar() - Took 0.00024s amarok: BEGIN: virtual SideBarWidget::~SideBarWidget() amarok: END__: virtual SideBarWidget::~SideBarWidget() - Took 0.0021s amarok: BEGIN: virtual StatusBar::~StatusBar() amarok: BEGIN: virtual CompoundProgressBar::~CompoundProgressBar() amarok: BEGIN: virtual PopupWidget::~PopupWidget() amarok: END__: virtual PopupWidget::~PopupWidget() - Took 0.00011s amarok: END__: virtual CompoundProgressBar::~CompoundProgressBar() - Took 0.0004s amarok: END__: virtual StatusBar::~StatusBar() - Took 0.00085s amarok: BEGIN: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) amarok: Removing observer: 0x89bdf00 amarok: END__: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) - Took 0.00021s amarok: BEGIN: virtual MainToolbar::~MainToolbar() amarok: END__: virtual MainToolbar::~MainToolbar() - Took 0.00018s amarok: BEGIN: virtual SvgHandler::~SvgHandler() amarok: END__: virtual SvgHandler::~SvgHandler() - Took 0.0075s amarok: BEGIN: virtual PaletteHandler::~PaletteHandler() amarok: END__: virtual PaletteHandler::~PaletteHandler() - Took 3.9e-05s amarok: END__: virtual MainWindow::~MainWindow() - Took 0.1s amarok: BEGIN: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) amarok: Removing observer: 0x87ae450 amarok: END__: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) - Took 6.1e-05s amarok: BEGIN: virtual CollectionManager::~CollectionManager() amarok: BEGIN: virtual MySqlEmbeddedCollection::~MySqlEmbeddedCollection() amarok: END__: virtual MySqlEmbeddedCollection::~MySqlEmbeddedCollection() - Took 0.00012s amarok: END__: virtual CollectionManager::~CollectionManager() - Took 0.0011s amarok: BEGIN: virtual MountPointManager::~MountPointManager() amarok: END__: virtual MountPointManager::~MountPointManager() - Took 4.7e-05s amarok: BEGIN: virtual Playlist::Actions::~Actions() amarok: END__: virtual Playlist::Actions::~Actions() - Took 4.3e-05s amarok: BEGIN: virtual Playlist::Model::~Model() amarok: BEGIN: bool PlaylistManager::exportPlaylist(Meta::TrackList, const QString&) amarok: BEGIN: Meta::XSPFPlaylist::XSPFPlaylist(Meta::TrackList) amarok: BEGIN: virtual void Meta::XSPFPlaylist::setTrackList(Meta::TrackList, bool) amarok: END__: virtual void Meta::XSPFPlaylist::setTrackList(Meta::TrackList, bool) - Took 0.00011s amarok: END__: Meta::XSPFPlaylist::XSPFPlaylist(Meta::TrackList) - Took 0.0002s amarok: BEGIN: virtual bool Meta::XSPFPlaylist::save(const QString&, bool) amarok: END__: virtual bool Meta::XSPFPlaylist::save(const QString&, bool) - Took 0.00095s amarok: END__: bool PlaylistManager::exportPlaylist(Meta::TrackList, const QString&) - Took 0.0013s amarok: END__: virtual Playlist::Model::~Model() - Took 0.0014s amarok: BEGIN: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) amarok: Removing observer: 0x89cf378 amarok: END__: virtual void MetaStream::Track::unsubscribe(Meta::Observer*) - Took 6.1e-05s amarok: BEGIN: virtual EngineController::~EngineController() amarok: END__: virtual EngineController::~EngineController() - Took 0.041s amarok: END__: virtual App::~App() - Took 0.34s amarok: Deinitialized thread, count== 4 SVN commit 940354 by markey: Use X-KDE-ParentApp for identifying Amarok's plasma engines, instead of the hack we used before. (This is the way the Plasma docs recommend to do it). PS: You may need to run "kbuildsycoca4" once, or suffer from horrible crashes and skin diseases. CCBUG: 187384 M +5 -8 ContextView.cpp M +1 -0 engines/current/amarok-data-engine-current.desktop M +2 -0 engines/lyrics/amarok-data-engine-lyrics.desktop M +1 -0 engines/service/amarok-data-engine-service.desktop M +2 -0 engines/wikipedia/amarok-data-engine-wikipedia.desktop WebSVN link: http://websvn.kde.org/?view=rev&revision=940354 Wondering if my last commit fixed this bug.. I can't currently reproduce it any more (but this could be coincidence). @All: Please keep an eye on this too :) hey can you help me i have a problem with my pc and i must anythinf wiht bugs report but i dont now what i must make . mfg tamara Closing report for now, as I can't reproduce the problem any more. Please reopen if it happens again. Args, it just happened again.. reopening. SVN commit 942633 by markey: Add assert on unloading plasma engines, checking if any engines are loaded at all. Apparently sometimes Amarok thinks that no engines have been loaded, which leads to a crash. I'm trying to trace down if this is a LibPlasma or Amarok bug. CCBUG: 187384 M +4 -0 ContextView.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=942633 Ok, so I just got this: amarok: BEGIN: virtual Context::ContextView::~ContextView() ASSERT failure in Listing loaded Plasma engines: "List is empty (no engines loaded!?)", file /home/mark/kde/src/amarok/src/context/ContextView.cpp, line 98 I think this makes it sound more and more likely that we're dealing with a bug in LibPlasma :) *** Bug 187994 has been marked as a duplicate of this bug. *** I've opened a fresh bug report for libPlasma, as this one here got too confusing. It's here: BUG 188064 Might as well close this one now. Please the Plasma bug report for updates. I've been getting this crash recently.. not every time. Thread 1 (Thread 0x7f13f50fb780 (LWP 12400)): [KCrash Handler] #5 0x00007f13f1ecf035 in raise () from /lib/libc.so.6 #6 0x00007f13f1ed0460 in abort () from /lib/libc.so.6 #7 0x00007f13f341d76f in qt_message_output(QtMsgType, char const*) () from /usr/lib/libQtCore.so.4 #8 0x00007f13f341d912 in ?? () from /usr/lib/libQtCore.so.4 #9 0x00007f13f341dac5 in qFatal(char const*, ...) () from /usr/lib/libQtCore.so.4 #10 0x00007f13f3ec3e1a in ~ContextView (this=0x336b450, __in_chrg=<value optimized out>) at /home/ramblurr/src/amarok/src/context/ContextView.cpp:118 #11 0x00007f13f42b26c9 in ~MainWindow (this=0x2972270, __in_chrg=<value optimized out>) at /home/ramblurr/src/amarok/src/MainWindow.cpp:214 #12 0x00007f13f4289070 in ~App (this=0x7fff75ad8280, __in_chrg=<value optimized out>) at /home/ramblurr/src/amarok/src/App.cpp:273 #13 0x000000000040af63 in main (argc=4, argv=0x7fff75ada1f8) at /home/ramblurr/src/amarok/src/main.cpp:237 /home/ramblurr/src/amarok/src/context/ContextView.cpp:118: // Assert added for tracing crash on exit, see BUG 187384 Q_ASSERT_X( !engines.isEmpty(), "Listing loaded Plasma engines", "List is empty (no engines loaded!?)" ); so this isn't a libplasma issue... re opening the bug. crash on exits suck. Created attachment 40868 [details]
debug log of entire amarok session up to crash
attached is the debug log for the entire amarok session up until the crash
*** Bug 230844 has been marked as a duplicate of this bug. *** @Casey: I'm sorry, but I fail to understand why you say it's not a Plasma issue. What's the rationale? If this assert gets triggered, it proves that it's a Plasma bug, that's why I put it there. See Bug #234350 - problem is that kbuildsycoca4 is being run by somebody else (in my case YAST/updateapplet) without the amarok info. Probably this bug only affects developers or anybody else running their own copy of amarok - any distro package manager will respect the SPOT (Single Point Of Truth) principal. One quick mitigation would be adding caveats to the info about building/running your own copy of amarok :-(. *** Bug 234350 has been marked as a duplicate of this bug. *** Never mind. After 2 successful attempts to reproduce this (with the auto updates), today the assert failed again without any install. Allow me to slowly slink away, muttering quietly to myself "Correlation is not causation", "Correlation is not causation", ... At any rate, how is this an Amarok bug? If anything, it seems to be a KDE (or Plasma) bug. I could remove the ASSERT, and then the code would still be buggy. That's not what we want, right? Could those of you who are affected by this bug please have a look at this comment? https://bugs.kde.org/show_bug.cgi?id=188064#c5 I'd like to make sure once and for all if this is a real bug, or not. I put this line export KDEDIRS=$HOME/kde into ~/.kde4/env/myenv.sh about 10 days ago, and no crashes since then. Looks like you got it... Closing since it is not reproducible anymore. |