Version: 3.5 Beta 1 (using KDE Devel) Installed from: Compiled sources Compiler: GCC 3.4.3 OS: Linux Akregator segfaults when attempting to read two particular feeds. http://www.clagnut.com/rss/ http://www.clagnut.com/rss/blogmarks/
Created attachment 12821 [details] Sample feed that crashes Akregator
Created attachment 12822 [details] Another sample feed that crashes Akregator
Confirmed. Caused by metakit backend, category handling. Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread -1241943392 (LWP 22483)] [KCrash handler] #7 0xb5ac2b92 in c4_FormatV::Replace (this=0x948d700, index_=0, seq_=0x95132c8) at format.cpp:1137 #8 0xb5ac2b21 in c4_FormatV::Set (this=0x948d700, index_=0, buf_=@0x66206568) at format.cpp:1115 #9 0xb5ad2a2a in c4_Sequence::SetAt (this=0x8397248, index_=0, newElem_= {_seq = 0x9612070, _index = 1}) at viewx.cpp:116 #10 0xb5ad1d2b in c4_Row::operator= (this=0xbfffcf70, rowRef_=@0x66206568) at mk4.inl:13 #11 0xb5aac21d in Akregator::Backend::FeedStorageMK4Impl::addCategory ( this=0x930aba8, guid=@0x94998a0, cat=@0xbfffd0f0) at mk4.inl:848 #12 0xb7f8fdab in Akregator::Article::initialize (this=0xbfffd340, article=<incomplete type>, archive=0x66206568) at article.cpp:131 #13 0xb7f90749 in Article (this=0xbfffd340, article=<incomplete type>, feed=0x930aba8) at article.cpp:176 #14 0xb7f94bed in Akregator::Feed::appendArticles (this=0x9523350, doc=@0x66206568) at qvaluelist.h:186 #15 0xb7f95a05 in Akregator::Feed::fetchCompleted (this=0x9523350, l=0xbfffd470, doc={d = 0x83b5a60}, status=1713399144) at feed.cpp:621 #16 0xb7f97105 in Akregator::Feed::qt_invoke (this=0x9523350, _id=-1073752752, _o=0xbfffd5f0) at qucom_p.h:312 #17 0xb6698067 in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #18 0xb7fde56c in RSS::Loader::loadingComplete (this=0x9500db8, t0=0x66206568, t1=) at loader.moc:428 #19 0xb7fdce4e in RSS::Loader::slotRetrieverDone (this=0x9500db8, data=@0x66206568, success=true) at loader.cpp:355 #20 0xb7fde5fd in RSS::Loader::qt_invoke (this=0x9500db8, _id=2, _o=0xbfffd7d0) at qucom_p.h:312 #21 0xb6698067 in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #22 0xb7fddc09 in RSS::DataRetriever::dataRetrieved (this=0xbfffd80c, t0=@0x66206568, t1=true) at loader.moc:97 #23 0xb7fdc369 in RSS::FileRetriever::slotResult (this=0x954fc30, job=0x66206568) at loader.cpp:134 #24 0xb7fddfe9 in RSS::FileRetriever::qt_invoke (this=0x954fc30, _id=4, _o=0xbfffd920) at qucom_p.h:312 #25 0xb6698067 in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #26 0xb728fcea in KIO::Job::result (this=0x93f6e90, t0=0x66206568) at jobclasses.moc:162 #27 0xb72744ec in KIO::Job::emitResult (this=0x93f6e90) at job.cpp:222 #28 0xb72762cc in KIO::SimpleJob::slotFinished (this=0x93f6e90) at job.cpp:570 #29 0xb727a08e in KIO::TransferJob::slotFinished (this=0x93f6e90) at job.cpp:938 #30 0xb7291dcd in KIO::TransferJob::qt_invoke (this=0x93f6e90, _id=17, _o=0xbfffdcc0) at jobclasses.moc:1071 #31 0xb6698067 in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #32 0xb6697eae in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #33 0xb7268dee in KIO::SlaveInterface::finished (this=0x66206568) at qmetaobject.h:261 #34 0xb7265bf8 in KIO::SlaveInterface::dispatch (this=0x85d19f8, _cmd=104, rawdata=@0xbfffe060) at slaveinterface.cpp:243 #35 0xb7264ce0 in KIO::SlaveInterface::dispatch (this=0x85d19f8) at slaveinterface.cpp:173 #36 0xb7261ae8 in KIO::Slave::gotInput (this=0x85d19f8) at slave.cpp:300 #37 0xb7264428 in KIO::Slave::qt_invoke (this=0x85d19f8, _id=4, _o=0xbfffe1c0) at slave.moc:113 #38 0xb6698067 in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #39 0xb66981be in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #40 0xb69b3ee0 in QSocketNotifier::activated () from /usr/share/qt3/lib/libqt-mt.so.3 #41 0xb66b3036 in QSocketNotifier::event () from /usr/share/qt3/lib/libqt-mt.so.3 #42 0xb6640370 in QApplication::internalNotify () from /usr/share/qt3/lib/libqt-mt.so.3 #43 0xb663f9d4 in QApplication::notify () from /usr/share/qt3/lib/libqt-mt.so.3 #44 0xb6c55285 in KApplication::notify (this=0xbffff570, receiver=0x958ba70, event=0xbfffe560) at kapplication.cpp:550 #45 0xb6630a10 in QEventLoop::activateSocketNotifiers () from /usr/share/qt3/lib/libqt-mt.so.3 #46 0xb65ec917 in QEventLoop::processEvents () from /usr/share/qt3/lib/libqt-mt.so.3 #47 0xb665174c in QEventLoop::enterLoop () from /usr/share/qt3/lib/libqt-mt.so.3 #48 0xb66405d3 in QApplication::enter_loop () from /usr/share/qt3/lib/libqt-mt.so.3 #49 0xb681220c in QDialog::exec () from /usr/share/qt3/lib/libqt-mt.so.3 #50 0xb5c9d8f8 in Akregator::View::addFeed (this=0x820d598, url=@0x66206568, after=0xb62009fc, parent=0x831c288, autoExec=false) at akregator_view.cpp:857 #51 0xb5c9d6eb in Akregator::View::slotFeedAdd (this=0x820d598) at akregator_view.cpp:843 #52 0xb5ca1512 in Akregator::View::qt_invoke (this=0x820d598, _id=70, _o=0xbfffe8e0) at akregator_view.moc:390 #53 0xb6698067 in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #54 0xb6697eae in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #55 0xb6f70e3b in KAction::activated (this=0x66206568) at qmetaobject.h:261 #56 0xb6f6ff4a in KAction::slotActivated (this=0x8275b78) at kaction.cpp:1102 #57 0xb6f70063 in KAction::slotPopupActivated (this=0x8275b78) at kaction.cpp:1137 #58 0xb6f71140 in KAction::qt_invoke (this=0x8275b78, _id=16, _o=0xbfffea90) at kaction.moc:219 #59 0xb6698067 in QObject::activate_signal () from /usr/share/qt3/lib/libqt-mt.so.3 #60 0xb69b31a5 in QSignal::signal () from /usr/share/qt3/lib/libqt-mt.so.3 #61 0xb66b0ca9 in QSignal::activate () from /usr/share/qt3/lib/libqt-mt.so.3 #62 0xb6794348 in QPopupMenu::mouseReleaseEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #63 0xb6f5c3a1 in KPopupMenu::mouseReleaseEvent (this=0x81baf00, e=0xbffff050) at kpopupmenu.cpp:511 #64 0xb66cb7e9 in QWidget::event () from /usr/share/qt3/lib/libqt-mt.so.3 #65 0xb6640370 in QApplication::internalNotify () from /usr/share/qt3/lib/libqt-mt.so.3 #66 0xb663fac7 in QApplication::notify () from /usr/share/qt3/lib/libqt-mt.so.3 #67 0xb6c55285 in KApplication::notify (this=0xbffff570, receiver=0x81baf00, event=0xbffff050) at kapplication.cpp:550 #68 0xb65d8d1d in QETWidget::translateMouseEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #69 0xb65d6e1c in QApplication::x11ProcessEvent () from /usr/share/qt3/lib/libqt-mt.so.3 #70 0xb65ecec2 in QEventLoop::processEvents () from /usr/share/qt3/lib/libqt-mt.so.3 #71 0xb665174c in QEventLoop::enterLoop () from /usr/share/qt3/lib/libqt-mt.so.3 #72 0xb665160e in QEventLoop::exec () from /usr/share/qt3/lib/libqt-mt.so.3 #73 0xb664057b in QApplication::exec () from /usr/share/qt3/lib/libqt-mt.so.3 #74 0x08050bef in main (argc=1713399144, argv=0x66206568) at main.cpp:110
SVN commit 467681 by osterfeld: Don't crash when the same category term shows up in different categories. Creating a hash with term as key is not a good idea as term is not unique... BUG: 113758 M +10 -7 feedstoragemk4impl.cpp --- branches/KDE/3.5/kdepim/akregator/src/mk4storage/feedstoragemk4impl.cpp #467680:467681 @@ -161,9 +161,7 @@ d->tagView = d->tagView.Hash(hash, 1); // hash on tag d->catStorage = new c4_Storage((filePath + ".mk4___CATEGORIES").local8Bit(), true); - d->catView = d->catStorage->GetAs("tagIndex[catTerm:S,catScheme:S,catName:S,categorizedArticles[guid:S]]"); - hash = d->catStorage->GetAs("archiveHash[_H:I,_R:I]"); - d->catView = d->catView.Hash(hash, 1); + d->catView = d->catStorage->GetAs("catIndex[catTerm:S,catScheme:S,catName:S,categorizedArticles[guid:S]]"); } @@ -543,12 +541,17 @@ d->pcatTerm(catrow) = cat.term.utf8().data(); d->pcatScheme(catrow) = cat.scheme.utf8().data(); d->pcatName(catrow) = cat.name.utf8().data(); + int catidx2 = d->catView.Find(catrow); + if (catidx2 == -1) + { catidx2 = d->catView.Add(catrow); - catrow = d->catView.GetAt(catidx2); - c4_View catView2 = d->pcategorizedArticles(catrow); + } + c4_Row catrow2 = d->catView.GetAt(catidx2); + c4_View catView2 = d->pcategorizedArticles(catrow2); + c4_Row row3; d->pguid(row3) = guid.ascii(); int guididx = catView2.Find(row3); @@ -556,8 +559,8 @@ { guididx = catView2.Add(row3); catView2.SetAt(guididx, row3); - d->pcategorizedArticles(catrow) = catView2; - d->catView.SetAt(catidx2, catrow); + d->pcategorizedArticles(catrow2) = catView2; + d->catView.SetAt(catidx2, catrow2); } d->modified = true;
SVN commit 467682 by osterfeld: forward port of 113758 CCBUG: 113758 M +10 -7 feedstoragemk4impl.cpp --- trunk/KDE/kdepim/akregator/src/mk4storage/feedstoragemk4impl.cpp #467681:467682 @@ -162,9 +162,7 @@ d->tagView = d->tagView.Hash(hash, 1); // hash on tag d->catStorage = new c4_Storage((filePath + ".mk4___CATEGORIES").local8Bit(), true); - d->catView = d->catStorage->GetAs("tagIndex[catTerm:S,catScheme:S,catName:S,categorizedArticles[guid:S]]"); - hash = d->catStorage->GetAs("archiveHash[_H:I,_R:I]"); - d->catView = d->catView.Hash(hash, 1); + d->catView = d->catStorage->GetAs("catIndex[catTerm:S,catScheme:S,catName:S,categorizedArticles[guid:S]]"); } @@ -544,12 +542,17 @@ d->pcatTerm(catrow) = cat.term.utf8().data(); d->pcatScheme(catrow) = cat.scheme.utf8().data(); d->pcatName(catrow) = cat.name.utf8().data(); + int catidx2 = d->catView.Find(catrow); + if (catidx2 == -1) + { catidx2 = d->catView.Add(catrow); - catrow = d->catView.GetAt(catidx2); - c4_View catView2 = d->pcategorizedArticles(catrow); + } + c4_Row catrow2 = d->catView.GetAt(catidx2); + c4_View catView2 = d->pcategorizedArticles(catrow2); + c4_Row row3; d->pguid(row3) = guid.ascii(); int guididx = catView2.Find(row3); @@ -557,8 +560,8 @@ { guididx = catView2.Add(row3); catView2.SetAt(guididx, row3); - d->pcategorizedArticles(catrow) = catView2; - d->catView.SetAt(catidx2, catrow); + d->pcategorizedArticles(catrow2) = catView2; + d->catView.SetAt(catidx2, catrow2); } d->modified = true;
That's fixed it. Thanks!