Version: 0.5.6 (using KDE KDE 3.5.6) Installed from: Fedora RPMs Compiler: gcc-4.1.1-51.fc6 OS: Linux Sometimes when turning off "Presentation" mode (press Esc), kpdf crashes. Version-Release number of selected component (if applicable): kdegraphics-3.5.6-0.1.fc6 [y4kk0@X ~]$ kpdf -v Qt: 3.3.7 KDE: 3.5.6-0.3.fc6 Fedora-Core KPDF: 0.5.6 [y4kk0@X ~]$ Steps to Reproduce: 1. open attached pdf file 2. go to view -> presentation mode 3. watch the presentation, etc. 4. press esc to turn off presentation mode 5. kpdf sometimes crashes For backtrace and mentioned pdf file please visit https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=235350
Can't reproduce
Pasting the backtrace from the fedora BR, FWIW: #6 0x00c34524 in KPDFDocument::cleanupPixmapMemory (this=0x9542ae0) at document.cpp:1194 #7 0x00c346f0 in KPDFDocument::slotTimedMemoryCheck (this=0x9542ae0) at document.cpp:1453 #8 0x00c37648 in KPDFDocument::qt_invoke (this=0x9542ae0, _id=3, _o=0xbfa43ba8) at document.moc:156 #9 0x41cd3bea in QObject::activate_signal () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #10 0x41cd471d in QObject::activate_signal () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #11 0x42061d29 in QTimer::timeout () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #12 0x41cfb41f in QTimer::event () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #13 0x41c6ae6b in QApplication::internalNotify () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #14 0x41c6c2e9 in QApplication::notify () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #15 0x4159f56e in KApplication::notify (this=0xbfa440c8, receiver=0x96b1788, event=0xbfa43e64) at kapplication.cpp:550 #16 0x41c5ec72 in QEventLoop::activateTimers () from /usr/lib/qt-3.3/lib/libqt-mt.so.3
I run kpdf in gdb and I got this backtrace: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread -1208256816 (LWP 1246)] 0x00249524 in KPDFDocument::cleanupPixmapMemory (this=0x8bbba88) at document.cpp:1194 1194 if ( d->observers[ p->id ]->canUnloadPixmap( p->page ) ) (gdb) thread apply all bt Thread 12 (Thread -1212519536 (LWP 1269)): #0 0x00917402 in __kernel_vsyscall () #1 0x46df8aa1 in __lll_mutex_unlock_wake () from /lib/libpthread.so.0 #2 0x46df57d9 in _L_mutex_unlock_101 () from /lib/libpthread.so.0 #3 0x46df5440 in __pthread_mutex_unlock_usercnt () from /lib/libpthread.so.0 #4 0x46df57d0 in pthread_mutex_unlock () from /lib/libpthread.so.0 #5 0x41fb5529 in QRecursiveMutexPrivate::unlock () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #6 0x41fb51b4 in QMutex::unlock () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #7 0x41c6b554 in QApplication::postEvent () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #8 0x00254f84 in PDFPixmapGeneratorThread::run (this=0x8c1b9f8) at generator_pdf.cpp:1193 #9 0x41c6320c in QThreadInstance::start () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #10 0x46df23db in start_thread () from /lib/libpthread.so.0 #11 0x46d4c26e in clone () from /lib/libc.so.6 Thread 1 (Thread -1208256816 (LWP 1246)): #0 0x00249524 in KPDFDocument::cleanupPixmapMemory (this=0x8bbba88) at document.cpp:1194 #1 0x0024985c in KPDFDocument::sendGeneratorRequest (this=0x8bbba88) at document.cpp:1155 #2 0x00249a00 in KPDFDocument::requestDone (this=0x8bbba88, req=0x8d17750) at document.cpp:1130 #3 0x00255c02 in PDFGenerator::customEvent (this=0x8cc5dc0, event=0x8ba76d8) at core/generator.h:78 #4 0x41cd331e in QObject::event () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #5 0x41c6ae6b in QApplication::internalNotify () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #6 0x41c6c2e9 in QApplication::notify () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #7 0x4159f56e in KApplication::notify (this=0xbf859e58, receiver=0x8cc5dc0, event=0x8ba76d8) at kapplication.cpp:550 #8 0x41c6bd70 in QApplication::sendPostedEvents () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #9 0x41c6bf26 in QApplication::sendPostedEvents () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #10 0x41c130bd in QEventLoop::processEvents () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #11 0x41c843f0 in QEventLoop::enterLoop () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #12 0x41c842a6 in QEventLoop::exec () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 ---Type <return> to continue, or q <return> to quit--- #13 0x41c6a97f in QApplication::exec () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 #14 0x0804ec89 in main (argc=147005320, argv=0xbf859e30) at main.cpp:79 #15 0x46c94f2c in __libc_start_main () from /lib/libc.so.6 #16 0x0804e981 in _start () (gdb) bt full #0 0x00249524 in KPDFDocument::cleanupPixmapMemory (this=0x8bbba88) at document.cpp:1194 p = (AllocatedPixmap *) 0x8cfe110 memoryToFree = <value optimized out> #1 0x0024985c in KPDFDocument::sendGeneratorRequest (this=0x8bbba88) at document.cpp:1155 request = (PixmapRequest *) 0x8d30f38 pixmapBytes = 15 #2 0x00249a00 in KPDFDocument::requestDone (this=0x8bbba88, req=0x8d17750) at document.cpp:1130 memoryBytes = 5063680 memoryPage = (AllocatedPixmap *) 0x8cfe110 #3 0x00255c02 in PDFGenerator::customEvent (this=0x8cc5dc0, event=0x8ba76d8) at core/generator.h:78 request = (PixmapRequest *) 0x8d17750 outImage = <value optimized out> outTextPage = (TextPage *) 0x0 outRects = {sh = 0x8c5ca28} #4 0x41cd331e in QObject::event () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 No symbol table info available. #5 0x41c6ae6b in QApplication::internalNotify () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 No symbol table info available. #6 0x41c6c2e9 in QApplication::notify () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 No symbol table info available. #7 0x4159f56e in KApplication::notify (this=0xbf859e58, receiver=0x8cc5dc0, event=0x8ba76d8) at kapplication.cpp:550 t = 6969 _selectAll = (const KShortcut &) @0x41766f0c: {m_nSeqs = 1, m_rgseq = {{m_nKeys = 1 '\001', m_bTriggerOnRelease = 0 '\0', m_rgvar = {{m_sym = 97, m_mod = 2}, {m_sym = 0, m_mod = 0}, {m_sym = 0, m_mod = 0}, {m_sym = 0, m_mod = 0}}, d = 0x0}, { m_nKeys = 0 '\0', m_bTriggerOnRelease = 0 '\0', m_rgvar = {{m_sym = 0, m_mod = 0}, {m_sym = 0, m_mod = 0}, {m_sym = 0, m_mod = 0}, { m_sym = 0, m_mod = 0}}, d = 0x0}}, d = 0x0} ic = (struct QPixmap *) 0x0 #8 0x41c6bd70 in QApplication::sendPostedEvents () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 No symbol table info available. ---Type <return> to continue, or q <return> to quit--- #9 0x41c6bf26 in QApplication::sendPostedEvents () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 No symbol table info available. #10 0x41c130bd in QEventLoop::processEvents () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 No symbol table info available. #11 0x41c843f0 in QEventLoop::enterLoop () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 No symbol table info available. #12 0x41c842a6 in QEventLoop::exec () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 No symbol table info available. #13 0x41c6a97f in QApplication::exec () from /usr/lib/qt-3.3/lib/libqt-mt.so.3 No symbol table info available. #14 0x0804ec89 in main (argc=147005320, argv=0xbf859e30) at main.cpp:79 about = {mAppName = 0x8050565 "kpdf", mProgramName = 0x8050560 "KPDF", mVersion = 0x8050740 "0.5.6", mShortDescription = 0x8050760 "kpdf, a kde pdf viewer based on xpdf", mLicenseKey = 1, mCopyrightStatement = 0x805069c "(C) 2002 Wilco Greven, Christophe Devriese\n(C) 2004-2005 Albert Astals Cid, Enrico Ros", mOtherText = 0x0, mHomepageAddress = 0x0, mBugEmailAddress = 0x805054c "submit@bugs.kde.org", mAuthorList = {sh = 0x8b074f8}, mCreditList = {sh = 0x8b07528}, mLicenseText = 0x0, d = 0x8b07558} app = {<> = {<No data fields>}, <KInstance> = {_vptr.KInstance = 0x41756aa4, _dirs = 0x8b33f30, _config = 0x8b2f168, _iconLoader = 0x8b4ffe0, _name = <incomplete type>, _aboutData = 0xbf859dfc, d = 0x8b2ecc0}, static metaObj = 0x8b374a0, display = 0x8b09138, kipcCommAtom = 336, kipcEventMask = 511, static KApp = 0xbf859e58, pArgc = 1187687136, pSessionConfig = 0x0, static s_DCOPClient = 0x8b3eaa8, static s_dcopClientNeedsPostInit = false, aCaption = {static null = { static null = <same as static member of an already seen type>, d = 0x8b010c0, static shared_null = 0x8b010c0}, d = 0x8b010c0, static shared_null = 0x8b010c0}, bSessionManagement = true, aIconPixmap = {pm = {icon = 0x8b4ff40, miniIcon = 0x8b824a8}, unused = "@\b$\b\000\000\000\000H\005\005\b�177�\024#A�&A\b\237\205\v\005\005\b$A&A\024!\005\b\030\237\205"}, aIconName = { static null = {static null = <same as static member of an already seen type>, d = 0x8b010c0, static shared_null = 0x8b010c0}, d = 0x8b010c0, static shared_null = 0x8b010c0}, aMiniIconName = {static null = { static null = <same as static member of an already seen type>, d = 0x8b010c0, static shared_null = 0x8b010c0}, d = 0x8b010c0, static shared_null = 0x8b010c0}, useStyles = true, smw = 0x8b3cf38, static loadedByKdeinit = false, captionLayout = 134546585, d = 0x8b34a68} #15 0x46c94f2c in __libc_start_main () from /lib/libc.so.6 ---Type <return> to continue, or q <return> to quit--- No symbol table info available. #16 0x0804e981 in _start () No symbol table info available. (gdb)
svn r652128 ==395== Invalid read of size 4 ==395== at 0x67D7B81: KPDFDocument::cleanupPixmapMemory(int) (document.cpp:1194) ==395== by 0x67D7D49: KPDFDocument::sendGeneratorRequest() (document.cpp:1155) ==395== by 0x67D82E8: KPDFDocument::requestDone(PixmapRequest*) (document.cpp:1130) ==395== by 0x67E8832: Generator::signalRequestDone(PixmapRequest*) (generator.h:78) ==395== by 0x67E67C1: PDFGenerator::customEvent(QCustomEvent*) (generator_pdf.cpp:1022) ==395== by 0x4C78D46: QObject::event(QEvent*) (in /usr/lib/libqt-mt.so.3.3.4) ==395== by 0x4C1304F: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/libqt-mt.so.3.3.4) ==395== by 0x4C13241: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libqt-mt.so.3.3.4) ==395== by 0x4731D5B: KApplication::notify(QObject*, QEvent*) (in /opt/kde346p/lib/libkdecore.so.4.2.0) ==395== by 0x4BA3DB6: QApplication::sendEvent(QObject*, QEvent*) (in /usr/lib/libqt-mt.so.3.3.4) ==395== by 0x4C14572: QApplication::sendPostedEvents(QObject*, int) (in /usr/lib/libqt-mt.so.3.3.4) ==395== by 0x4C14679: QApplication::sendPostedEvents() (in /usr/lib/libqt-mt.so.3.3.4) ==395== Address 0x0 is not stack'd, malloc'd or (recently) free'd KCrash: Application 'kpdf' crashing... ==395==
That's really weird, happens on all pdf? Which qt are you using?
libqt3-mt 3.3.4-8ubuntu5.1 (Breezy) pdf mentioned in original RH bug report: http://www.cisco.com/ca/events/pdfs/L2-security-Bootcamp-final.pdf
Mine is qt-3.3.7-0.1.fc6. I'm not sure whether it's important, but my KDE session is two and a half week old (it runs since 26th March). I also noticed that KPDF crashes with most of my PDFs.
@Dawid: Should not matter, but KPDF crashing is something i hardly see so there must be something wrong on your KPDF @All: can't reproduce :-/
SVN commit 665684 by pino: When getting the result of a pixmap request for an observer that went away in the meanwhile, don't create a memory entry for the pixmap, as we assume the allocated pixmaps fifo holds only descriptors for valid observers. BUG: 143951 M +13 -7 document.cpp --- branches/KDE/3.5/kdegraphics/kpdf/core/document.cpp #665683:665684 @@ -1117,15 +1117,21 @@ break; } - // [MEM] 1.2 append memory allocation descriptor to the FIFO - int memoryBytes = 4 * req->width * req->height; - AllocatedPixmap * memoryPage = new AllocatedPixmap( req->id, req->pageNumber, memoryBytes ); - d->allocatedPixmapsFifo.append( memoryPage ); - d->allocatedPixmapsTotalMemory += memoryBytes; + if ( d->observers.contains( req->id ) ) + { + // [MEM] 1.2 append memory allocation descriptor to the FIFO + int memoryBytes = 4 * req->width * req->height; + AllocatedPixmap * memoryPage = new AllocatedPixmap( req->id, req->pageNumber, memoryBytes ); + d->allocatedPixmapsFifo.append( memoryPage ); + d->allocatedPixmapsTotalMemory += memoryBytes; - // 2. notify an observer that its pixmap changed - if ( d->observers.contains( req->id ) ) + // 2. notify an observer that its pixmap changed d->observers[ req->id ]->notifyPageChanged( req->pageNumber, DocumentObserver::Pixmap ); + } +#ifndef NDEBUG + else + kdWarning() << "Receiving a done request for the defunct observer " << req->id << endl; +#endif // 3. delete request delete req;
I was doing my first bug report, and I found that it is already reported and fixed. But I read that the version is 0.5.6, and I get the same problem for 0.5.7. My sentence would have been: "KPDF krashes after pressing 2 times ESC in the presentation mode".
Unfortunately this bug was fixed too late to be included in KDE 3.5.7 release, so it will be fixed for KDE 3.5.8 If it is very critical for you, you can always bug your packager to update kpdf packages from SVN code. Keep reporting all the bugs you find :-)