Summary: | KPDF foult down if tried open specific pdf document | ||
---|---|---|---|
Product: | [Unmaintained] kpdf | Reporter: | Ladislav Nesnera <nesnera> |
Component: | general | Assignee: | Albert Astals Cid <aacid> |
Status: | RESOLVED FIXED | ||
Severity: | normal | ||
Priority: | NOR | ||
Version: | 0.5.7 | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Ladislav Nesnera
2008-02-25 11:02:05 UTC
Is there some way to upload problematic file? Yes, add a new attachment to the bug report (how big is the document?) Also, please provide a more useful backtrace, as explained in http://techbase.kde.org/index.php?title=Development/Tutorials/Debugging/How_to_create_useful_crash_reports Possibly, trying a newer KPDF version would be also a good thing... Problematic pdf is available at http://nesnera.webgarden.cz/file/6868759 Can confirm the crash with KPDF 0.5.8 (KDE 3.5.8): Using host libthread_db library "/lib/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread 0x2b5f0d007420 (LWP 20580)] [KCrash handler] #5 0x00002b5f06f12d3d in _int_free () from /lib/libc.so.6 #6 0x00002b5f06f16bbc in free () from /lib/libc.so.6 #7 0x00002b5f0da0236b in Object::free (this=0x7fffa4823700) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Object.cc:129 #8 0x00002b5f0da66ddb in Gfx::opSetExtGState (this=0x919d50, args=<value optimized out>) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Gfx.cc:979 #9 0x00002b5f0da58d85 in Gfx::go (this=0x919d50, topLevel=0) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Gfx.cc:581 #10 0x00002b5f0da590dc in Gfx::display (this=0x919d50, obj=0x7fffa4823c80, topLevel=0) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Gfx.cc:553 #11 0x00002b5f0da63aac in Gfx::doForm1 (this=0x919d50, str=0x7fffa4823c80, resDict=<value optimized out>, matrix=<value optimized out>, bbox=0x7fffa4823b90, transpGroup=1, softMask=0, blendingColorSpace=0x9a71d0, isolated=0, knockout=0, alpha=0, transferFunc=0x0, backdropColor=0x0) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Gfx.cc:3841 #12 0x00002b5f0da64c85 in Gfx::doForm (this=0x919d50, str=0x7fffa4823c80) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Gfx.cc:3769 #13 0x00002b5f0da64e55 in Gfx::opXObject (this=0x919d50, args=<value optimized out>) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Gfx.cc:3338 #14 0x00002b5f0da58d85 in Gfx::go (this=0x919d50, topLevel=1) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Gfx.cc:581 #15 0x00002b5f0da590dc in Gfx::display (this=0x919d50, obj=0x7fffa4824000, topLevel=1) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Gfx.cc:553 #16 0x00002b5f0da6d52a in Page::displaySlice (this=0x985340, out=0x987e30, hDPI=137.28927469697166, vDPI=137.26133909287256, rotate=0, useMediaBox=<value optimized out>, crop=0, sliceX=<value optimized out>, sliceY=-1, sliceW=-1, sliceH=-1, printing=0, catalog=0x985290, abortCheckCbk=0, abortCheckCbkData=0x0) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Page.cc:434 #17 0x00002b5f0da6e0a9 in Page::display (this=0x2b5f071f89c0, out=0xa19230, hDPI=0, vDPI=0, rotate=0, useMediaBox=1, crop=10588720, printing=<value optimized out>, catalog=0x985290, abortCheckCbk=0, abortCheckCbkData=0x0) at /build/buildd/kdegraphics-3.5.8/./kpdf/xpdf/xpdf/Page.cc:383 #18 0x00002b5f0dabcf26 in PDFGenerator::generatePixmap (this=0x985bc0, request=0x9921c0) at /build/buildd/kdegraphics-3.5.8/./kpdf/core/generator_pdf/generator_pdf.cpp:319 #19 0x00002b5f0dab4e5a in KPDFDocument::sendGeneratorRequest (this=0x75b600) at /build/buildd/kdegraphics-3.5.8/./kpdf/core/document.cpp:1169 #20 0x00002b5f0dab540f in KPDFDocument::requestPixmaps (this=0x75b600, requests=@0x75b658) at /build/buildd/kdegraphics-3.5.8/./kpdf/core/document.cpp:504 #21 0x00002b5f0dacbf4b in PageView::slotRequestVisiblePixmaps (this=0x825050, newLeft=<value optimized out>, newTop=<value optimized out>) at /build/buildd/kdegraphics-3.5.8/./kpdf/ui/pageview.cpp:1927 #22 0x00002b5f0daccadc in PageView::slotRelayoutPages (this=0x825050) at /build/buildd/kdegraphics-3.5.8/./kpdf/ui/pageview.cpp:1817 #23 0x00002b5f0dad7728 in PageView::qt_invoke (this=0x825050, _id=64, _o=0x7fffa4824570) at ./pageview.moc:193 #24 0x00002b5f086b5186 in QObject::activate_signal (this=0x828400, clist=0x751ba0, o=0x7fffa4824570) at kernel/qobject.cpp:2356 #25 0x00002b5f08a2ce05 in QSignal::signal (this=0x828400, t0=@0x828450) at .moc/debug-shared-mt/moc_qsignal.cpp:100 #26 0x00002b5f086d33c7 in QSignal::activate (this=0x828400) at kernel/qsignal.cpp:212 #27 0x00002b5f086dac0c in QSingleShotTimer::event (this=0x8283b0) at kernel/qtimer.cpp:286 #28 0x00002b5f0864d3aa in QApplication::internalNotify (this=0x7fffa4824e40, receiver=0x8283b0, e=0x7fffa4824a60) at kernel/qapplication.cpp:2635 #29 0x00002b5f0864f158 in QApplication::notify (this=0x7fffa4824e40, receiver=0x8283b0, e=0x7fffa4824a60) at kernel/qapplication.cpp:2358 #30 0x00002b5f07fafaad in KApplication::notify (this=0x7fffa4824e40, receiver=0x8283b0, event=0x7fffa4824a60) at /tmp/buildd/kdelibs-3.5.8.dfsg.1/./kdecore/kapplication.cpp:550 #31 0x00002b5f085deabe in QApplication::sendEvent (receiver=0x8283b0, event=0x7fffa4824a60) at ../include/qapplication.h:520 #32 0x00002b5f08640b04 in QEventLoop::activateTimers (this=0x6536f0) at kernel/qeventloop_unix.cpp:556 #33 0x00002b5f085f3185 in QEventLoop::processEvents (this=0x6536f0, flags=4) at kernel/qeventloop_x11.cpp:389 #34 0x00002b5f08667673 in QEventLoop::enterLoop (this=0x6536f0) at kernel/qeventloop.cpp:198 #35 0x00002b5f0866735f in QEventLoop::exec (this=0x6536f0) at kernel/qeventloop.cpp:145 #36 0x00002b5f0864ee8c in QApplication::exec (this=0x7fffa4824e40) at kernel/qapplication.cpp:2758 #37 0x000000000040a3ec in main (argc=<value optimized out>, argv=0x6fc8b0) at /build/buildd/kdegraphics-3.5.8/./kpdf/shell/main.cpp:79 #38 0x00002b5f06ebd1c4 in __libc_start_main () from /lib/libc.so.6 #39 0x0000000000408f59 in _start () ... but I can confirm also that with KPDF 0.5.9 (KDE 3.5.9) it works (no crashes). 0.5.9 does not crash here either but i can see a wrong write with valgrind ==11116== Invalid read of size 1 ==11116== at 0xDFCF02E: SplashXPathScanner::clipAALine(SplashBitmap*, int*, int*, int) (SplashXPathScanner.cc:424) ==11116== by 0xDFC1BBB: SplashClip::clipAALine(SplashBitmap*, int*, int*, int) (SplashClip.cc:380) ==11116== by 0xDFC0C21: Splash::drawAAPixel(SplashPipe*, int, int) (Splash.cc:640) ==11116== by 0xDFBB9C6: Splash::drawImage(int (*)(void*, unsigned char*, unsigned char*), void*, SplashColorMode, int, int, int, double*) (Splash.cc:2680) ==11116== by 0xDF6165D: SplashOutputDev::drawSoftMaskedImage(GfxState*, Object*, Stream*, int, int, GfxImageColorMap*, Stream*, int, int, GfxImageColorMap*) (SplashOutputDev.cc:2422) ==11116== by 0xDEF2DDE: Gfx::doImage(Object*, Stream*, int) (Gfx.cc:3656) ==11116== by 0xDEFE3EC: Gfx::opXObject(Object*, int) (Gfx.cc:3330) ==11116== by 0xDEFAF37: Gfx::execOp(Object*, Object*, int) (Gfx.cc:690) ==11116== by 0xDEFB0AC: Gfx::go(int) (Gfx.cc:581) ==11116== by 0xDEFB4EE: Gfx::display(Object*, int) (Gfx.cc:553) ==11116== by 0xDEFCD30: Gfx::doForm1(Object*, Dict*, double*, double*, int, int, GfxColorSpace*, int, int, int, Function*, GfxColor*) (Gfx.cc:3841) ==11116== by 0xDEFE265: Gfx::doForm(Object*) (Gfx.cc:3769) ==11116== Address 0xEB7A7A4 is 0 bytes after a block of size 396 alloc'd ==11116== at 0x4C21C16: malloc (vg_replace_malloc.c:149) ==11116== by 0xDF9C91D: gmalloc (gmem.cc:97) ==11116== by 0xDFC1615: SplashBitmap::SplashBitmap(int, int, int, SplashColorMode, int, int) (SplashBitmap.cc:47) ==11116== by 0xDFBE9BA: Splash::Splash(SplashBitmap*, int, SplashScreen*) (Splash.cc:804) ==11116== by 0xDF60DF2: SplashOutputDev::beginTransparencyGroup(GfxState*, double*, GfxColorSpace*, int, int, int) (SplashOutputDev.cc:2522) ==11116== by 0xDEFCCC3: Gfx::doForm1(Object*, Dict*, double*, double*, int, int, GfxColorSpace*, int, int, int, Function*, GfxColor*) (Gfx.cc:3831) ==11116== by 0xDEFE265: Gfx::doForm(Object*) (Gfx.cc:3769) ==11116== by 0xDEFE4AD: Gfx::opXObject(Object*, int) (Gfx.cc:3338) ==11116== by 0xDEFAF37: Gfx::execOp(Object*, Object*, int) (Gfx.cc:690) ==11116== by 0xDEFB0AC: Gfx::go(int) (Gfx.cc:581) ==11116== by 0xDEFB4EE: Gfx::display(Object*, int) (Gfx.cc:553) ==11116== by 0xDF43986: Page::displaySlice(OutputDev*, double, double, int, int, int, int, int, int, int, int, Catalog*, int (*)(void*), void*) (Page.cc:434) ==11116== ==11116== Invalid write of size 1 ==11116== at 0xDFCF048: SplashXPathScanner::clipAALine(SplashBitmap*, int*, int*, int) (SplashXPathScanner.cc:424) ==11116== by 0xDFC1BBB: SplashClip::clipAALine(SplashBitmap*, int*, int*, int) (SplashClip.cc:380) ==11116== by 0xDFC0C21: Splash::drawAAPixel(SplashPipe*, int, int) (Splash.cc:640) ==11116== by 0xDFBB9C6: Splash::drawImage(int (*)(void*, unsigned char*, unsigned char*), void*, SplashColorMode, int, int, int, double*) (Splash.cc:2680) ==11116== by 0xDF6165D: SplashOutputDev::drawSoftMaskedImage(GfxState*, Object*, Stream*, int, int, GfxImageColorMap*, Stream*, int, int, GfxImageColorMap*) (SplashOutputDev.cc:2422) ==11116== by 0xDEF2DDE: Gfx::doImage(Object*, Stream*, int) (Gfx.cc:3656) ==11116== by 0xDEFE3EC: Gfx::opXObject(Object*, int) (Gfx.cc:3330) ==11116== by 0xDEFAF37: Gfx::execOp(Object*, Object*, int) (Gfx.cc:690) ==11116== by 0xDEFB0AC: Gfx::go(int) (Gfx.cc:581) ==11116== by 0xDEFB4EE: Gfx::display(Object*, int) (Gfx.cc:553) ==11116== by 0xDEFCD30: Gfx::doForm1(Object*, Dict*, double*, double*, int, int, GfxColorSpace*, int, int, int, Function*, GfxColor*) (Gfx.cc:3841) ==11116== by 0xDEFE265: Gfx::doForm(Object*) (Gfx.cc:3769) ==11116== Address 0xEB7A7A4 is 0 bytes after a block of size 396 alloc'd ==11116== at 0x4C21C16: malloc (vg_replace_malloc.c:149) ==11116== by 0xDF9C91D: gmalloc (gmem.cc:97) ==11116== by 0xDFC1615: SplashBitmap::SplashBitmap(int, int, int, SplashColorMode, int, int) (SplashBitmap.cc:47) ==11116== by 0xDFBE9BA: Splash::Splash(SplashBitmap*, int, SplashScreen*) (Splash.cc:804) ==11116== by 0xDF60DF2: SplashOutputDev::beginTransparencyGroup(GfxState*, double*, GfxColorSpace*, int, int, int) (SplashOutputDev.cc:2522) ==11116== by 0xDEFCCC3: Gfx::doForm1(Object*, Dict*, double*, double*, int, int, GfxColorSpace*, int, int, int, Function*, GfxColor*) (Gfx.cc:3831) ==11116== by 0xDEFE265: Gfx::doForm(Object*) (Gfx.cc:3769) ==11116== by 0xDEFE4AD: Gfx::opXObject(Object*, int) (Gfx.cc:3338) ==11116== by 0xDEFAF37: Gfx::execOp(Object*, Object*, int) (Gfx.cc:690) ==11116== by 0xDEFB0AC: Gfx::go(int) (Gfx.cc:581) ==11116== by 0xDEFB4EE: Gfx::display(Object*, int) (Gfx.cc:553) ==11116== by 0xDF43986: Page::displaySlice(OutputDev*, double, double, int, int, int, int, int, int, int, int, Catalog*, int (*)(void*), void*) (Page.cc:434) SVN commit 785716 by aacid: xx0 is set as maximum to buffer width so we need < not <= here Fixes some crashes due to write out of bounds BUGS: 158387, 158549 M +3 -2 SplashXPathScanner.cc WebSVN link: http://websvn.kde.org/?view=rev&revision=785716 |