Bug 200409 - rendering more than one DVI document in the same application instance crashes
Summary: rendering more than one DVI document in the same application instance crashes
Status: RESOLVED FIXED
Alias: None
Product: okular
Classification: Applications
Component: DVI backend (show other bugs)
Version: unspecified
Platform: Unlisted Binaries Linux
: NOR crash
Target Milestone: ---
Assignee: Okular developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-07-16 08:55 UTC by Jacopo De Simoi
Modified: 2009-07-25 16:00 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jacopo De Simoi 2009-07-16 08:55:22 UTC
Application that crashed: konqueror
Version of the application: 4.2.96 (KDE 4.2.96 (KDE 4.3 RC2))
KDE Version: 4.2.96 (KDE 4.2.96 (KDE 4.3 RC2))
Qt Version: 4.5.1
Operating System: Linux 2.6.29-tuxonice-r3 x86_64

What I was doing when the application crashed:
The subject is self-explanatory;
I cannot reproduce now when re-opening the very same file; however, konqueror kept crashing if I tried to restore the previous session.

 -- Backtrace:
Application: Konqueror (kdeinit4), signal: Segmentation fault
[Current thread is 0 (LWP 24745)]

Thread 2 (Thread 0x4149a950 (LWP 24753)):
[KCrash Handler]
#5  0x00007f6b2cbc85eb in QPainter::drawImage () from /usr/lib64/qt4/libQtGui.so.4
#6  0x00007f6b1b4137ab in QPainter::drawImage (this=0x0, x=236, y=229, image=@0x414999a0, sx=0, sy=0, sw=-1, sh=-1, flags=@0x414999c0) at /usr/include/qt4/QtGui/qpainter.h:887
#7  0x00007f6b1b411698 in dviRenderer::set_char (this=0xb895b0, cmd=87, ch=87) at /mnt/trunk/kde/kdegraphics/okular/generators/dvi/dviRenderer_draw.cpp:98
#8  0x00007f6b1b40f3da in dviRenderer::draw_part (this=0xb895b0, current_dimconv=16.604400166044002, is_vfmacro=false) at /mnt/trunk/kde/kdegraphics/okular/generators/dvi/dviRenderer_draw.cpp:282
#9  0x00007f6b1b411098 in dviRenderer::draw_page (this=0xb895b0) at /mnt/trunk/kde/kdegraphics/okular/generators/dvi/dviRenderer_draw.cpp:650
#10 0x00007f6b1b40c1f0 in dviRenderer::drawPage (this=0xb895b0, page=0x9d17f0) at /mnt/trunk/kde/kdegraphics/okular/generators/dvi/dviRenderer.cpp:174
#11 0x00007f6b1b404850 in DviGenerator::image (this=0xb8ccb0, request=0xb211b0) at /mnt/trunk/kde/kdegraphics/okular/generators/dvi/generator_dvi.cpp:250
#12 0x00007f6b1d5c4034 in Okular::PixmapGenerationThread::run (this=0xaf27f0) at /mnt/trunk/kde/kdegraphics/okular/core/generator_p.cpp:64
#13 0x00007f6b2f55e960 in ?? () from /usr/lib64/qt4/libQtCore.so.4
#14 0x00007f6b2f2ed047 in start_thread () from /lib/libpthread.so.0
#15 0x00007f6b2bf0f28d in clone () from /lib/libc.so.6
#16 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f6b2faf7760 (LWP 24745)):
#0  0x00007f6b2c198030 in ?? () from /lib/libgcc_s.so.1
#1  0x00007f6b2bf3fddf in dl_iterate_phdr () from /lib/libc.so.6
#2  0x00007f6b2c197c56 in _Unwind_Find_FDE () from /lib/libgcc_s.so.1
#3  0x00007f6b2c195969 in ?? () from /lib/libgcc_s.so.1
#4  0x00007f6b2c196337 in _Unwind_Backtrace () from /lib/libgcc_s.so.1
#5  0x00007f6b2bf1f1de in backtrace () from /lib/libc.so.6
#6  0x00007f6b2ef672d1 in kRealBacktrace (levels=-1) at /mnt/trunk/kde/kdelibs/kdecore/io/kdebug.cpp:594
#7  0x00007f6b2db0fe79 in kBacktrace (levels=10295) at /mnt/trunk/kde/kdelibs/kdecore/io/kdebug.h:98
#8  0x00007f6b2db0884c in ~KIconLoader (this=0x665160) at /mnt/trunk/kde/kdelibs/kdeui/icons/kiconloader.cpp:557
#9  0x00007f6b2be819e9 in exit () from /lib/libc.so.6
#10 0x00007f6b2cb15f18 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#11 0x00007f6b2db37a88 in KApplication::xioErrhandler (this=0x7fff37b34020, dpy=0x66e480) at /mnt/trunk/kde/kdelibs/kdeui/kernel/kapplication.cpp:408
#12 0x00007f6b2e97a6f4 in _XIOError () from /usr/lib/libX11.so.6
#13 0x00007f6b2e980b8c in _XGetXCBBuffer () from /usr/lib/libX11.so.6
#14 0x00007f6b2e981980 in _XReply () from /usr/lib/libX11.so.6
#15 0x00007f6b2e96092c in XGetWindowProperty () from /usr/lib/libX11.so.6
#16 0x00007f6b2e95fb4d in XGetWMHints () from /usr/lib/libX11.so.6
#17 0x00007f6b2cb3a8a3 in QWidgetPrivate::setWindowIcon_sys () from /usr/lib64/qt4/libQtGui.so.4
#18 0x00007f6b2cb0e6c5 in QWidget::create () from /usr/lib64/qt4/libQtGui.so.4
#19 0x00007f6b2cb0f123 in QWidgetPrivate::createWinId () from /usr/lib64/qt4/libQtGui.so.4
#20 0x00007f6b2cb0f5fe in QWidget::winId () from /usr/lib64/qt4/libQtGui.so.4
#21 0x00007f6b2dbb6ab6 in KXMessages::broadcastMessage (this=0x7fff37b33320, msg_type_P=0x1077ff8 "\200\207H-k\177", message_P=@0x7fff37b33370, screen_P=<value optimized out>, obsolete_P=192)
    at /mnt/trunk/kde/kdelibs/kdeui/util/kxmessages.cpp:103
#22 0x00007f6b2db5808f in KStartupInfo::sendFinish (id_P=<value optimized out>) at /mnt/trunk/kde/kdelibs/kdeui/kernel/kstartupinfo.cpp:533
#23 0x00007f6b2db5812a in KStartupInfo::appStarted (startup_id=@0x7fff37b33430) at /mnt/trunk/kde/kdelibs/kdeui/kernel/kstartupinfo.cpp:605
#24 0x00007f6b2db581c7 in KStartupInfo::appStarted () at /mnt/trunk/kde/kdelibs/kdeui/kernel/kstartupinfo.cpp:588
#25 0x00007f6b2db38fdc in KApplication::qt_metacall (this=0x7fff37b34020, _c=QMetaObject::InvokeMetaMethod, _id=6, _a=0x7fff37b33530) at /mnt/trunk/kde/kdelibs/build/kdeui/kapplication.moc:90
#26 0x00007f6b234addc5 in KonquerorApplication::qt_metacall (this=0x1ad0, _c=10295, _id=8579, _a=0x10c18) at /mnt/trunk/kde/kdebase/build/apps/konqueror/src/konqapplication.moc:69
#27 0x00007f6b2f64b953 in QMetaObject::activate () from /usr/lib64/qt4/libQtCore.so.4
#28 0x00007f6b2f648522 in QObject::event () from /usr/lib64/qt4/libQtCore.so.4
#29 0x00007f6b2cac03ce in QApplicationPrivate::notify_helper () from /usr/lib64/qt4/libQtGui.so.4
#30 0x00007f6b2cac77b2 in QApplication::notify () from /usr/lib64/qt4/libQtGui.so.4
#31 0x00007f6b2db38eee in KApplication::notify (this=0x7fff37b34020, receiver=0xc664a0, event=0x7fff37b33b70) at /mnt/trunk/kde/kdelibs/kdeui/kernel/kapplication.cpp:302
#32 0x00007f6b2f637a33 in QCoreApplication::notifyInternal () from /usr/lib64/qt4/libQtCore.so.4
#33 0x00007f6b2f6623e9 in ?? () from /usr/lib64/qt4/libQtCore.so.4
#34 0x00007f6b2f65facd in ?? () from /usr/lib64/qt4/libQtCore.so.4
#35 0x00007f6b2b587502 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#36 0x00007f6b2b58a7e5 in ?? () from /usr/lib/libglib-2.0.so.0
#37 0x00007f6b2b58aceb in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#38 0x00007f6b2f66017e in QEventDispatcherGlib::processEvents () from /usr/lib64/qt4/libQtCore.so.4
#39 0x00007f6b2cb4870f in ?? () from /usr/lib64/qt4/libQtGui.so.4
#40 0x00007f6b2f636cc5 in QEventLoop::processEvents () from /usr/lib64/qt4/libQtCore.so.4
#41 0x00007f6b2f636e36 in QEventLoop::exec () from /usr/lib64/qt4/libQtCore.so.4
#42 0x00007f6b2f63907b in QCoreApplication::exec () from /usr/lib64/qt4/libQtCore.so.4
#43 0x00007f6b2352bd85 in kdemain (argc=<value optimized out>, argv=<value optimized out>) at /mnt/trunk/kde/kdebase/apps/konqueror/src/konqmain.cpp:257
#44 0x0000000000406fd5 in launch (argc=2, _name=0x644fe8 "/usr/bin/konqueror", args=0x645003 "", cwd=0x0, envc=0, envs=<value optimized out>, reset_env=false, tty=0x0, avoid_loops=false, 
    startup_id_str=0x645014 "twospoons;1247726878;718692;2903_TIME231968262") at /mnt/trunk/kde/kdelibs/kinit/kinit.cpp:676
#45 0x0000000000407979 in handle_launcher_request (sock=7, who=<value optimized out>) at /mnt/trunk/kde/kdelibs/kinit/kinit.cpp:1168
#46 0x0000000000407e54 in handle_requests (waitForPid=0) at /mnt/trunk/kde/kdelibs/kinit/kinit.cpp:1361
#47 0x00000000004085bc in main (argc=1, argv=0x7fff37b353f8, envp=0x7fff37b35408) at /mnt/trunk/kde/kdelibs/kinit/kinit.cpp:1788

Reported using DrKonqi
Comment 1 Jacopo De Simoi 2009-07-16 09:08:32 UTC
In fact I can reproduce the crash by regenerating the dvi file (by recompiling the tex file) while displaying the dvi on a split view; regenerating it with a normal view doesn't seem to trigger the crash.
Comment 2 Pino Toscano 2009-07-16 23:03:45 UTC
Confirm, update to reflect the real issue.
Comment 3 Pino Toscano 2009-07-25 15:59:39 UTC
SVN commit 1002247 by pino:

use a per-dviRender-instance painter instead of a global (!) one, so different documents can be painted safely at the same time
BUG: 200409


 M  +2 -2      dviRenderer.cpp  
 M  +2 -0      dviRenderer.h  
 M  +0 -1      dviRenderer_draw.cpp  
 M  +0 -1      special.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1002247
Comment 4 Pino Toscano 2009-07-25 16:00:18 UTC
SVN commit 1002248 by pino:

use a per-dviRender-instance painter instead of a global (!) one, so different documents can be painted safely at the same time
BUG: 200409


 M  +2 -2      dviRenderer.cpp  
 M  +2 -0      dviRenderer.h  
 M  +0 -1      dviRenderer_draw.cpp  
 M  +0 -1      special.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1002248