Bug 121556

Summary: Kpdf kpart make Konqueror crash when viewing some embedded Pdf
Product: [Unmaintained] kpdf Reporter: Francesco Locunto <fidel78>
Component: generalAssignee: Albert Astals Cid <aacid>
Status: RESOLVED FIXED    
Severity: crash CC: greedkills, konq-bugs
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Crash backtrace

Description Francesco Locunto 2006-02-07 18:57:39 UTC
Version:            (using KDE KDE 3.5.0)
Installed from:    SuSE RPMs
OS:                Linux

At this web site:

http://www.gazzettaufficiale.it/guri/cgi-bin/db2www/arti/arti.mac/report4?service=0&numeroarticolo=9999&subarticolo=1&progressivo=0&versione=1&redazione=06A01262&dataGazzetta=2006-02-06&numgu=30&cdimg=06A01262999901

Konqueror embeds Kpdf to view the pdf file. All seems ok, but if I try to go back with Konqueror "back" button for example, or I try to navigate with the links on the left side of the page, Konqueror crashs!

This crash happens not only on this page, but also with other pages of www.gazzettaufficiale.it containing embedded pdf files.

I'll post the crash backtrace shortly.
Comment 1 Francesco Locunto 2006-02-07 19:01:03 UTC
Created attachment 14599 [details]
Crash backtrace
Comment 2 Albert Astals Cid 2006-02-08 23:20:19 UTC
I'd say the problem here is that konqueror removes things from kpdf foot too late in the process of "destroying" the html page to load the other and kpdf as problems with that, what do you konq guys think?

Valgrindizin seems the "ui" of kpdf got destroyed before than the part itself

==10759== Invalid read of size 8
==10759==    at 0x1A194F92: KPDFDocument::closeDocument() (document.cpp:252)
==10759==    by 0x1A19523C: KPDFDocument::~KPDFDocument() (document.cpp:127)
==10759==    by 0x1A09886F: KPDF::Part::~Part() (part.cpp:294)
==10759==    by 0x1205E6BA: KParts::Part::slotWidgetDestroyed() (in /home/kde35/instalado/lib/libkparts.so.2.1.0)
==10759==    by 0x1205E85C: KParts::Part::qt_invoke(int, QUObject*) (in /home/kde35/instalado/lib/libkparts.so.2.1.0)
==10759==    by 0x1205EAD9: KParts::ReadOnlyPart::qt_invoke(int, QUObject*) (in /home/kde35/instalado/lib/libkparts.so.2.1.0)
==10759==    by 0x1A09D752: KPDF::Part::qt_invoke(int, QUObject*) (part.moc:214)
==10759==    by 0x13E36878: QObject::activate_signal(QConnectionList*, QUObject*) (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x13E372DF: QObject::activate_signal(int) (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x14172315: QObject::destroyed() (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x13E352CC: QObject::~QObject() (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x13E6D04D: QWidget::~QWidget() (in /usr/lib/libqt-mt.so.3.3.4)
==10759==  Address 0x19933B10 is 248 bytes inside a block of size 264 free'd
==10759==    at 0x11B1DCCC: operator delete(void*) (vg_replace_malloc.c:246)
==10759==    by 0x1A1A8EB5: PageView::~PageView() (pageview.cpp:175)
==10759==    by 0x13E6CF87: QWidget::~QWidget() (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x11F053D2: QFrame::~QFrame() (qframe.h:48)
==10759==    by 0x13F6C888: QSplitter::~QSplitter() (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x13E338F4: QObject::event(QEvent*) (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x13E6E36A: QWidget::event(QEvent*) (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x13F6DC4E: QSplitter::event(QEvent*) (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x13DD11E3: QApplication::internalNotify(QObject*, QEvent*) (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x13DD1F3F: QApplication::notify(QObject*, QEvent*) (in /usr/lib/libqt-mt.so.3.3.4)
==10759==    by 0x1309E9E0: KApplication::notify(QObject*, QEvent*) (kapplication.cpp:550)
==10759==    by 0x11CC698B: QApplication::sendEvent(QObject*, QEvent*) (qapplication.h:491)
Comment 3 Albert Astals Cid 2006-02-18 11:34:43 UTC
*** Bug 122200 has been marked as a duplicate of this bug. ***
Comment 4 Albert Astals Cid 2006-02-18 12:53:12 UTC
SVN commit 510876 by aacid:

Reoder some deletes, add some removeObserver and use some magic QGuardPtr so that when embedded on konqueror and changing page it does crash, i still think that konqueror should not delete kpart created widgets behind its back, but probably it's easier to change kpdf than all the other code.
BUGS: 121556


 M  +16 -11    part.cpp  
 M  +7 -3      part.h  
 M  +6 -0      ui/minibar.cpp  
 M  +2 -0      ui/minibar.h  
 M  +2 -1      ui/pageview.cpp  
 M  +2 -1      ui/thumbnaillist.cpp  
 M  +6 -1      ui/toc.cpp  
 M  +2 -1      ui/toc.h