Summary: | unable to load a chm file in okular | ||
---|---|---|---|
Product: | [Applications] okular | Reporter: | Kunal Thakar <kunalt> |
Component: | CHM backend | Assignee: | Okular developers <okular-devel> |
Status: | RESOLVED FIXED | ||
Severity: | crash | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | Crash report |
Description
Kunal Thakar
2007-02-11 19:50:26 UTC
Created attachment 19620 [details]
Crash report
Can we have the file that is causing the crash please? I have uploaded the file to http://kunalt.googlepages.com/chmfiles On Sun, Feb 11, 2007 at 06:50:28PM -0000, Kunal Thakar wrote: > ------- You are receiving this mail because: ------- Hi Kunal, > [KCrash handler] > #6 0xb606df04 in khtmlImLoad::Image::notifyPerformUpdate (this=0x8bbcfb0) > at /home/kunal/ldata/kde4/kdelibs/khtml/imload/image.cpp:81 > #7 0xb606d52d in khtmlImLoad::Updater::pushUpdates (this=0x860b2e8) > at /home/kunal/ldata/kde4/kdelibs/khtml/imload/updater.cpp:67 > #8 0xb606d5cd in khtmlImLoad::Updater::qt_metacall (this=0x860b2e8, > _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0xbfc2ccb8) > at /home/kunal/ldata/kde4/kdelibs-build/khtml/updater.moc:64 This bug is caused by a race condition deep inside khtml... I contacted the khtml developer, lets hope that they can provide a fix soon. Ciao, Tobias SVN commit 635326 by tokoe: Unregister Image from Updater in dtor to avoid crashes BUG:141546 M +1 -0 image.cpp M +11 -0 updater.cpp M +3 -0 updater.h --- trunk/KDE/kdelibs/khtml/imload/image.cpp #635325:635326 @@ -52,6 +52,7 @@ Image::~Image() { + ImageManager::updater()->unregisterImage(this); delete loader; delete original; assert(scaled.isEmpty()); --- trunk/KDE/kdelibs/khtml/imload/updater.cpp #635325:635326 @@ -53,6 +53,17 @@ frames[schedulePortion].append(frame); } +void Updater::unregisterImage(Image* frame) +{ + QVector<Image*>::const_iterator iter; + for (int i = 0; i < 10; ++i) + { + int pos = frames[i].indexOf(frame); + if (pos != -1) + frames[i].remove(pos); + } +} + void Updater::pushUpdates() { timePortion++; --- trunk/KDE/kdelibs/khtml/imload/updater.h #635325:635326 @@ -51,6 +51,9 @@ amount of time has passed. */ void haveUpdates(Image* frame); + + void unregisterImage(Image* frame); + private Q_SLOTS: void pushUpdates(); private: |