Bug 210499

Summary: okular crash when opening many *.ps files that are actually pdf files
Product: [Applications] okular Reporter: Kevin <kjslag>
Component: generalAssignee: Okular developers <okular-devel>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: Unlisted Binaries   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: open okular with a few copies of this, and it will crash

Description Kevin 2009-10-14 01:55:30 UTC
Application that crashed: okular
Version of the application: 0.9.2
KDE Version: 4.3.2 (KDE 4.3.2)
Qt Version: 4.5.3
Operating System: Linux 2.6.31-ARCH x86_64

What I was doing when the application crashed:
The .ps files are actually pdfs...

terminal:

$ ls
12.ps  13.ps  23.ps  L1.ps  L2.ps  L3.ps  LR.ps  LV.ps  R1.ps  R2.ps  R3.ps  RV.ps  V1.ps  V2.ps  V3.ps
$ okular *
undefined -21
QImage::scaled: Image is a null image
undefined -21
QImage::scaled: Image is a null image
KCrash: Application 'okular' crashing...
sock_file=/home/k/.kde4/socket-J/kdeinit4__0

[1]+  Stopped                 okular *

 -- Backtrace:
Application: Okular (okular), signal: Segmentation fault
[Current thread is 1 (Thread 0x7f38cf284750 (LWP 11013))]

Thread 2 (Thread 0x7f38ac285910 (LWP 11014)):
[KCrash Handler]
#5  0x00007f38b08956d6 in psgetpagebbox () from /usr/lib/libspectre.so.1
#6  0x00007f38b0893650 in spectre_gs_send_page () from /usr/lib/libspectre.so.1
#7  0x00007f38b0894215 in spectre_device_render () from /usr/lib/libspectre.so.1
#8  0x00007f38b08947fb in spectre_page_render () from /usr/lib/libspectre.so.1
#9  0x00007f38b0adcfbb in GSRendererThread::run() () from /usr/lib/kde4/okularGenerator_ghostview.so
#10 0x00007f38cd8a4ba5 in ?? () from /usr/lib/libQtCore.so.4
#11 0x00007f38cc1f257a in start_thread () from /lib/libpthread.so.0
#12 0x00007f38cc71614d in clone () from /lib/libc.so.6
#13 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f38cf284750 (LWP 11013)):
#0  0x00007f38cc70d993 in poll () from /lib/libc.so.6
#1  0x00007f38c778f89a in _xcb_conn_wait () from /usr/lib/libxcb.so.1
#2  0x00007f38c778fe37 in _xcb_out_send () from /usr/lib/libxcb.so.1
#3  0x00007f38c77900e5 in xcb_writev () from /usr/lib/libxcb.so.1
#4  0x00007f38cb4d67aa in _XSend () from /usr/lib/libX11.so.6
#5  0x00007f38cb4c3233 in PutSubImage () from /usr/lib/libX11.so.6
#6  0x00007f38cb4c33de in XPutImage () from /usr/lib/libX11.so.6
#7  0x00007f38ccf0a8ca in QX11PixmapData::fromImage(QImage const&, QFlags<Qt::ImageConversionFlag>) () from /usr/lib/libQtGui.so.4
#8  0x00007f38ccef8c30 in QPixmap::fromImage(QImage const&, QFlags<Qt::ImageConversionFlag>) () from /usr/lib/libQtGui.so.4
#9  0x00007f38ccf3fee8 in QPaintEngine::drawImage(QRectF const&, QImage const&, QRectF const&, QFlags<Qt::ImageConversionFlag>) () from /usr/lib/libQtGui.so.4
#10 0x00007f38ccfeafb2 in ?? () from /usr/lib/libQtGui.so.4
#11 0x00007f38ccf5401e in ?? () from /usr/lib/libQtGui.so.4
#12 0x00007f38ccf5b0cd in QPainter::drawRoundedRect(QRectF const&, double, double, Qt::SizeMode) () from /usr/lib/libQtGui.so.4
#13 0x00007f38c62104c8 in OxygenStyle::renderScrollBarHandle(QPainter*, QRect const&, QPalette const&, Qt::Orientation, bool) const () from /usr/lib/kde4/plugins/styles/oxygen.so
#14 0x00007f38c6217bc8 in OxygenStyle::drawKStylePrimitive(KStyle::WidgetType, int, QStyleOption const*, QRect const&, QPalette const&, QFlags<QStyle::StateFlag>, QPainter*, QWidget const*, KStyle::Option*) const () from /usr/lib/kde4/plugins/styles/oxygen.so
#15 0x00007f38ce5aa0d0 in KStyle::drawControl(QStyle::ControlElement, QStyleOption const*, QPainter*, QWidget const*) const () from /usr/lib/libkdeui.so.5
#16 0x00007f38c620cc53 in OxygenStyle::drawControl(QStyle::ControlElement, QStyleOption const*, QPainter*, QWidget const*) const () from /usr/lib/kde4/plugins/styles/oxygen.so
#17 0x00007f38cd0fb9cc in QCommonStyle::drawComplexControl(QStyle::ComplexControl, QStyleOptionComplex const*, QPainter*, QWidget const*) const () from /usr/lib/libQtGui.so.4
#18 0x00007f38ce5a6cae in KStyle::drawComplexControl(QStyle::ComplexControl, QStyleOptionComplex const*, QPainter*, QWidget const*) const () from /usr/lib/libkdeui.so.5
#19 0x00007f38c620c92e in OxygenStyle::drawComplexControl(QStyle::ComplexControl, QStyleOptionComplex const*, QPainter*, QWidget const*) const () from /usr/lib/kde4/plugins/styles/oxygen.so
#20 0x00007f38cd2379af in QScrollBar::paintEvent(QPaintEvent*) () from /usr/lib/libQtGui.so.4
#21 0x00007f38cce898b0 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#22 0x00007f38cce3b07c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#23 0x00007f38cce4234e in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#24 0x00007f38ce599586 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#25 0x00007f38cd989bfc in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#26 0x00007f38cce90ca3 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#27 0x00007f38cce91400 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#28 0x00007f38cce90913 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#29 0x00007f38cce91400 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#30 0x00007f38cce90913 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#31 0x00007f38cce91400 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#32 0x00007f38cce90913 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#33 0x00007f38cce91400 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#34 0x00007f38cce90913 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#35 0x00007f38cce91400 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#36 0x00007f38cce90913 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#37 0x00007f38cce91400 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#38 0x00007f38cce91314 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#39 0x00007f38cce90913 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#40 0x00007f38cce91400 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#41 0x00007f38cce90913 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#42 0x00007f38cce91400 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#43 0x00007f38cce91314 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#44 0x00007f38cce91314 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) ()
   from /usr/lib/libQtGui.so.4
#45 0x00007f38cce90913 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/libQtGui.so.4
#46 0x00007f38cd00088e in ?? () from /usr/lib/libQtGui.so.4
#47 0x00007f38cd000bc9 in ?? () from /usr/lib/libQtGui.so.4
#48 0x00007f38cce993c2 in ?? () from /usr/lib/libQtGui.so.4
#49 0x00007f38ccea6ad4 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4
#50 0x00007f38ccece96c in ?? () from /usr/lib/libQtGui.so.4
#51 0x00007f38c92891fe in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#52 0x00007f38c928cbb8 in g_main_context_iterate () from /usr/lib/libglib-2.0.so.0
#53 0x00007f38c928cce0 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#54 0x00007f38cd9b2123 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#55 0x00007f38ccece14e in ?? () from /usr/lib/libQtGui.so.4
#56 0x00007f38cd988532 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#57 0x00007f38cd988904 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#58 0x00007f38cd98aab9 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#59 0x00000000004087cc in _start ()

Reported using DrKonqi
Comment 1 Albert Astals Cid 2009-10-19 00:53:29 UTC
Can you please attach one of those files?
Comment 2 Kevin 2009-10-19 06:22:20 UTC
Created attachment 37659 [details]
open okular with a few copies of this, and it will crash

btw, the .ps file isn't rendered correctly either (assuming ps2pdf is correct)
Comment 3 Albert Astals Cid 2009-10-19 21:06:40 UTC
Here it works, that is, this file named foo.pdf, is detected as a ps and is opened, but i agree it seems to be rendered incorrectly.

The thing is that the test application renders the file fine, so definetely there is something wrong in our code
Comment 4 Kevin 2009-10-19 23:09:25 UTC
i have to open at least 4 copies for okular to crash
Comment 5 Albert Astals Cid 2009-10-21 00:53:09 UTC
You mean opening a file is ok, but opening 4 different instances of the same file makes okular crash? Or are you using embedding of okular part inside konqueror?
Comment 6 Kevin 2009-10-21 05:41:15 UTC
yes, so when I make 4 copies of the attatched file

$ ls
1.ps 2.ps 3.ps 4.ps
$ okular *

then okular crashes but

okular 1.ps

wouldn't crash okular
Comment 7 Albert Astals Cid 2009-10-23 00:38:28 UTC
Should be fixed in next okular version, thanks for the report