Bug 323721 - Okular crashes on corrupted pdf
Summary: Okular crashes on corrupted pdf
Status: RESOLVED WORKSFORME
Alias: None
Product: okular
Classification: Applications
Component: general (show other bugs)
Version: 0.16.5
Platform: Debian unstable Linux
: NOR crash
Target Milestone: ---
Assignee: Okular developers
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2013-08-19 13:42 UTC by Francesco Presel
Modified: 2013-09-12 12:40 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Example of corrupted file (512 bytes, application/download)
2013-08-19 14:17 UTC, Francesco Presel
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Francesco Presel 2013-08-19 13:42:37 UTC
Application: okular (0.16.5)
KDE Platform Version: 4.10.5
Qt Version: 4.8.5
Operating System: Linux 3.10.5-desktop-f x86_64
Distribution: SolydK

-- Information about the crash:
- What I was doing when the application crashed:

I tried to open a file which had the extension .pdf but whose content was actually only made of null characters (0x00). The okular window initially appeared; then, instead of displaying the window "this file is not valid" (as it used to), it just crashed

The crash can be reproduced every time.

-- Backtrace:
Application: Okular (okular), signal: Bus error
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[KCrash Handler]
#6  __strncmp_sse2 () at ../sysdeps/x86_64/multiarch/../strcmp.S:212
#7  0x00007fc3eb818c76 in qstrncmp (len=<optimized out>, str2=0x1ec83c8 "$kico_draw-text_22_1:1:trans", str1=<optimized out>) at /usr/include/qt4/QtCore/qbytearray.h:104
#8  findNamedEntry (key=..., this=0x7fc3dfb25000) at ../../kdecore/util/kshareddatacache.cpp:786
#9  KSharedDataCache::find (this=0x19ccb00, key=..., destination=destination@entry=0x7fff743884b0) at ../../kdecore/util/kshareddatacache.cpp:1637
#10 0x00007fc3ec968cb0 in KIconLoaderPrivate::findCachedPixmapWithPath (this=0x19cf630, key=..., data=..., path=...) at ../../kdeui/icons/kiconloader.cpp:854
#11 0x00007fc3ec968ffa in KIconLoader::loadIcon (this=0x19b6210, _name=..., group=group@entry=KIconLoader::Desktop, size=22, state=2, overlays=..., path_store=path_store@entry=0x0, canReturnNull=canReturnNull@entry=false) at ../../kdeui/icons/kiconloader.cpp:1149
#12 0x00007fc3ec96113e in KIconEngine::pixmap (this=<optimized out>, size=..., mode=<optimized out>, state=<optimized out>) at ../../kdeui/icons/kiconengine.cpp:104
#13 0x00007fc3ebd2f925 in QIcon::pixmap (this=this@entry=0x7fff74388ab8, size=..., mode=<optimized out>, state=<optimized out>) at image/qicon.cpp:684
#14 0x00007fc3ebf9974c in QCommonStyle::drawControl (this=this@entry=0x1931350, element=element@entry=QStyle::CE_ToolButtonLabel, opt=opt@entry=0x7fff74388a70, p=p@entry=0x7fff74388d00, widget=0x1d604b0) at styles/qcommonstyle.cpp:1592
#15 0x00007fc3e07cdc8a in Oxygen::Style::drawToolButtonLabelControl (this=0x1931350, option=0x7fff74388c10, painter=0x7fff74388d00, widget=<optimized out>) at ../../../kstyles/oxygen/oxygenstyle.cpp:7265
#16 0x00007fc3e07bf729 in Oxygen::Style::drawToolButtonComplexControl (this=0x1931350, option=0x7fff74388d20, painter=0x7fff74388d00, widget=0x1d604b0) at ../../../kstyles/oxygen/oxygenstyle.cpp:7970
#17 0x00007fc3e07cdaee in Oxygen::Style::drawComplexControl (this=0x1931350, element=QStyle::CC_ToolButton, option=0x7fff74388d20, painter=0x7fff74388d00, widget=0x1d604b0) at ../../../kstyles/oxygen/oxygenstyle.cpp:1169
#18 0x00007fc3ec0f3c59 in drawComplexControl (opt=..., cc=QStyle::CC_ToolButton, this=0x7fff74388d00) at ../../include/QtGui/../../src/gui/painting/qstylepainter.h:94
#19 QToolButton::paintEvent (this=0x1d604b0) at widgets/qtoolbutton.cpp:553
#20 0x00007fc3ebcdeaf4 in QWidget::event (this=0x1d604b0, event=0x7fff74389180) at kernel/qwidget.cpp:8533
#21 0x00007fc3ebc8f70c in QApplicationPrivate::notify_helper (this=this@entry=0x18e6de0, receiver=receiver@entry=0x1d604b0, e=e@entry=0x7fff74389180) at kernel/qapplication.cpp:4567
#22 0x00007fc3ebc95d80 in QApplication::notify (this=this@entry=0x7fff7438b110, receiver=receiver@entry=0x1d604b0, e=e@entry=0x7fff74389180) at kernel/qapplication.cpp:4353
#23 0x00007fc3ec9b2cfa in KApplication::notify (this=0x7fff7438b110, receiver=0x1d604b0, event=0x7fff74389180) at ../../kdeui/kernel/kapplication.cpp:311
#24 0x00007fc3eb28ab5d in QCoreApplication::notifyInternal (this=0x7fff7438b110, receiver=receiver@entry=0x1d604b0, event=event@entry=0x7fff74389180) at kernel/qcoreapplication.cpp:949
#25 0x00007fc3ebcd9201 in sendSpontaneousEvent (event=0x7fff74389180, receiver=0x1d604b0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234
#26 QWidgetPrivate::drawWidget (this=this@entry=0x1d605b0, pdev=pdev@entry=0x1e6ce40, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x1d12d30) at kernel/qwidget.cpp:5599
#27 0x00007fc3ebcd9c30 in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x1d2c350, pdev=pdev@entry=0x1e6ce40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x1d12d30) at kernel/qwidget.cpp:5808
#28 0x00007fc3ebcd8dbc in QWidgetPrivate::drawWidget (this=this@entry=0x1d2c350, pdev=pdev@entry=0x1e6ce40, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x1d12d30) at kernel/qwidget.cpp:5652
#29 0x00007fc3ebcd9c30 in QWidgetPrivate::paintSiblingsRecursive (this=this@entry=0x1a899f0, pdev=pdev@entry=0x1e6ce40, siblings=..., index=<optimized out>, rgn=..., offset=..., flags=flags@entry=4, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x1d12d30) at kernel/qwidget.cpp:5808
#30 0x00007fc3ebcd8dbc in QWidgetPrivate::drawWidget (this=0x1a899f0, pdev=0x1e6ce40, rgn=..., offset=..., flags=flags@entry=5, sharedPainter=sharedPainter@entry=0x0, backingStore=backingStore@entry=0x1d12d30) at kernel/qwidget.cpp:5652
#31 0x00007fc3ebe9829e in QWidgetBackingStore::sync (this=this@entry=0x1d12d30) at painting/qbackingstore.cpp:1373
#32 0x00007fc3ebe98615 in QWidgetBackingStore::sync (this=0x1d12d30, exposedWidget=0x1d522a0, exposedRegion=...) at painting/qbackingstore.cpp:1161
#33 0x00007fc3ebcce712 in QWidgetPrivate::syncBackingStore (this=this@entry=0x1d2f090, region=...) at kernel/qwidget.cpp:1903
#34 0x00007fc3ebcf9608 in QETWidget::translatePaintEvent (this=this@entry=0x1d522a0, event=event@entry=0x7fff74389d50) at kernel/qapplication_x11.cpp:5258
#35 0x00007fc3ebd06486 in QApplication::x11ProcessEvent (this=0x7fff7438b110, event=event@entry=0x7fff74389d50) at kernel/qapplication_x11.cpp:3561
#36 0x00007fc3ebd2d792 in x11EventSourceDispatch (s=0x18e8400, callback=0x0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#37 0x00007fc3e74bfea6 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#38 0x00007fc3e74c01f8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#39 0x00007fc3e74c029c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#40 0x00007fc3eb2b7ce5 in QEventDispatcherGlib::processEvents (this=0x18a1b30, flags=...) at kernel/qeventdispatcher_glib.cpp:425
#41 0x00007fc3ebd2d846 in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#42 0x00007fc3eb2897bf in QEventLoop::processEvents (this=this@entry=0x7fff7438a140, flags=...) at kernel/qeventloop.cpp:149
#43 0x00007fc3eb289ab5 in QEventLoop::exec (this=this@entry=0x7fff7438a140, flags=...) at kernel/qeventloop.cpp:204
#44 0x00007fc3ec1328cc in QDialog::exec (this=0x1dee5a0) at dialogs/qdialog.cpp:562
#45 0x00007fc3ec926202 in KMessageBox::createKMessageBox (dialog=dialog@entry=0x1dee5a0, icon=..., text=..., strlist=..., ask=..., checkboxReturn=checkboxReturn@entry=0x0, options=..., details=..., notifyType=notifyType@entry=QMessageBox::Critical) at ../../kdeui/dialogs/kmessagebox.cpp:344
#46 0x00007fc3ec926441 in KMessageBox::createKMessageBox (dialog=dialog@entry=0x1dee5a0, icon=icon@entry=QMessageBox::Critical, text=..., strlist=..., ask=..., checkboxReturn=checkboxReturn@entry=0x0, options=..., details=...) at ../../kdeui/dialogs/kmessagebox.cpp:159
#47 0x00007fc3ec926657 in KMessageBox::errorListWId (parent_id=65011799, text=..., strlist=..., caption=..., options=...) at ../../kdeui/dialogs/kmessagebox.cpp:854
#48 0x00007fc3ec92676a in KMessageBox::error (parent=<optimized out>, text=..., caption=..., options=...) at ../../kdeui/dialogs/kmessagebox.cpp:821
#49 0x00007fc3db849d81 in ?? () from /usr/lib/kde4/okularpart.so
#50 0x000000000040b14d in _start ()

Possible duplicates by query: bug 311735, bug 309663.

Reported using DrKonqi
Comment 1 Albert Astals Cid 2013-08-19 13:46:29 UTC
Attach the file
Comment 2 Francesco Presel 2013-08-19 14:17:02 UTC
Created attachment 81787 [details]
Example of corrupted file

As I said, this file is actually completely empty; it is not a pdf at all (a part from the extension).

You can create such a file from terminal by using
dd if=/dev/zero of=zero.pdf bs=[size of file to create (any)] count=1
Comment 3 Albert Astals Cid 2013-08-19 14:27:22 UTC
Works fine here (i.e. i get a can't open file dialog), and your backtrace seems to imply it's crashing somewhere else totally unrelated, does it crash for you every time you open this file? Can you open any other pdf file?
Comment 4 Francesco Presel 2013-08-19 14:53:15 UTC
It does open valid pdf files correctly.

I've discovered that it also crashes if I launch okular without any file as argument, like if I launch it with an invalid file.

If I open a valid file and then, from the File menu, I "open" an invalid file, I first get the expected "can't open file" message, and then a crash.

In case it's unrelated, whom should I file this against?
Comment 5 Albert Astals Cid 2013-08-20 20:08:33 UTC
hmmm, so just opening okular without any file gets you a crash?

That's really weird. Is the backtrace of the crash the same as the one you attached in the report?

Also can you run "valgrind okular" and attach its output?
Comment 6 Christoph Feck 2013-08-29 21:38:02 UTC
Francesco, if you can provide the information requested in comment #5, please add it.
Comment 7 Francesco Presel 2013-08-30 09:59:43 UTC
(In reply to comment #6)
> Francesco, if you can provide the information requested in comment #5,
> please add it.

I'm sorry, I won't have access to that computer for a few more days
Comment 8 Francesco Presel 2013-09-04 19:22:39 UTC
I'm not able to reproduce this crash any more. Perhaps some update has solved the problem.
All my test-cases (okular without document, invalid document) now work as expected

Thanks for your assistance.
Comment 9 Christoph Feck 2013-09-12 12:40:10 UTC
Thanks for the update. If you see this bug again, please reopen or add a comment.