Summary: | DOM Tree Viewer Unable to Catch Exceptions due to RTLD_LOCAL | ||
---|---|---|---|
Product: | [Applications] konqueror | Reporter: | Dennis <shr3kst3r> |
Component: | khtml | Assignee: | Konqueror Developers <konq-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | christophe, dawan, dima, faure, grundleborg, j.mairboeck, jmayer, mail, maksim, sami.liedes, wbsoft, zakrzewski.jakub |
Priority: | NOR | ||
Version: | 3.5 | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 4.6 | |
Sentry Crash Report: |
Description
Dennis
2005-08-17 05:07:10 UTC
Confirmed (3.5 r449049). Backtrace with debugging symbols: Using host libthread_db library "/lib/tls/libthread_db.so.1". [Thread debugging using libthread_db enabled] [New Thread -1233226048 (LWP 6107)] [KCrash handler] #7 0xffffe410 in ?? () #8 0xbfffe14c in ?? () #9 0x00000006 in ?? () #10 0x000017db in ?? () #11 0xb6d767e5 in raise () from /lib/tls/libc.so.6 #12 0xb6d78399 in abort () from /lib/tls/libc.so.6 #13 0xb6f338d7 in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libstdc++.so.6 #14 0xb6f311c5 in __cxa_call_unexpected () from /usr/lib/libstdc++.so.6 #15 0xb6f31202 in std::terminate () from /usr/lib/libstdc++.so.6 #16 0xb6f31382 in __cxa_throw () from /usr/lib/libstdc++.so.6 #17 0xb604b57b in DOM::DOMImplementation::createCSSStyleSheet (this=0x0, title=@0x0, media=@0x0) at dom_exception.h:60 #18 0xb5b63668 in DOMTreeView::connectToPart () from /usr/local/kde3-r449049/lib/kde3/libdomtreeviewerplugin.so #19 0xb5b641e2 in DOMTreeView::slotSetHtmlPartDelayed () from /usr/local/kde3-r449049/lib/kde3/libdomtreeviewerplugin.so #20 0xb5b6557a in DOMTreeView::qt_invoke () from /usr/local/kde3-r449049/lib/kde3/libdomtreeviewerplugin.so #21 0xb73a6e47 in QObject::activate_signal (this=0x83efb08, clist=0x871ae20, o=0xbfffe5c0) at kernel/qobject.cpp:2355 #22 0xb7784bf4 in QSignal::signal (this=0x83efb08, t0=@0x83efb30) at .moc/debug-shared-mt/moc_qsignal.cpp:100 #23 0xb73c999e in QSignal::activate (this=0x83efb08) at kernel/qsignal.cpp:212 #24 0xb73d3aa3 in QSingleShotTimer::event (this=0x83efae0) at kernel/qtimer.cpp:286 #25 0xb7335f69 in QApplication::internalNotify (this=0xbfffefb0, receiver=0x83efae0, e=0xbfffe8f0) at kernel/qapplication.cpp:2635 #26 0xb7335387 in QApplication::notify (this=0xbfffefb0, receiver=0x83efae0, e=0xbfffe8f0) at kernel/qapplication.cpp:2358 #27 0xb7a88cb6 in KApplication::notify (this=0xbfffefb0, receiver=0x83efae0, event=0xbfffe8f0) at /home/thiago/programs/src/kde3/KDE/kdelibs/kdecore/kapplication.cpp:550 #28 0xb72ba6c3 in QApplication::sendEvent (receiver=0x83efae0, event=0xbfffe8f0) at qapplication.h:491 #29 0xb7320e76 in QEventLoop::activateTimers (this=0x80f0ed0) at kernel/qeventloop_unix.cpp:556 #30 0xb72d05d1 in QEventLoop::processEvents (this=0x80f0ed0, flags=4) at kernel/qeventloop_x11.cpp:389 #31 0xb734deea in QEventLoop::enterLoop (this=0x80f0ed0) at kernel/qeventloop.cpp:198 #32 0xb734de08 in QEventLoop::exec (this=0x80f0ed0) at kernel/qeventloop.cpp:145 #33 0xb733610d in QApplication::exec (this=0xbfffefb0) at kernel/qapplication.cpp:2758 #34 0xb648403f in kdemain (argc=0, argv=0x0) at /home/thiago/programs/src/kde3/KDE/kdebase/konqueror/konq_main.cc:206 #35 0xb6535554 in kdeinitmain (argc=0, argv=0x0) at ./konqueror/kdeinit_konqueror.la.cpp:3 #36 0x0804de4d in launch (argc=2, _name=0x807778c "konqueror", args=0x80777a0 "\001", cwd=0x0, envc=1, envs=0x80777b1 "", reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x0) at /home/thiago/programs/src/kde3/KDE/kdelibs/kinit/kinit.cpp:637 #37 0x0804e63d in handle_launcher_request (sock=8) at /home/thiago/programs/src/kde3/KDE/kdelibs/kinit/kinit.cpp:1201 #38 0x0804ebf7 in handle_requests (waitForPid=0) at /home/thiago/programs/src/kde3/KDE/kdelibs/kinit/kinit.cpp:1404 #39 0x0804f476 in main (argc=2, argv=0xbffff934, envp=0x0) at /home/thiago/programs/src/kde3/KDE/kdelibs/kinit/kinit.cpp:1848 *** Bug 116007 has been marked as a duplicate of this bug. *** *** Bug 127406 has been marked as a duplicate of this bug. *** *** Bug 127403 has been marked as a duplicate of this bug. *** *** Bug 137354 has been marked as a duplicate of this bug. *** The problem still exists with current (3.5.5) Konquerror. *** Bug 141902 has been marked as a duplicate of this bug. *** *** Bug 143081 has been marked as a duplicate of this bug. *** *** Bug 152264 has been marked as a duplicate of this bug. *** Confirmed in kde4 trunk (domtreeviewer rev. 780649) // kdelibs rev. 797569 Application: Konqueror (konqueror), signal SIGABRT [Thread debugging using libthread_db enabled] [New Thread 0xb61fe720 (LWP 11603)] [KCrash handler] #6 0xb7f4b410 in __kernel_vsyscall () #7 0xb6558085 in raise () from /lib/tls/i686/cmov/libc.so.6 #8 0xb6559a01 in abort () from /lib/tls/i686/cmov/libc.so.6 #9 0xb6767480 in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libstdc++.so.6 #10 0xb6764d05 in ?? () from /usr/lib/libstdc++.so.6 #11 0xb6764d42 in std::terminate () from /usr/lib/libstdc++.so.6 #12 0xb6764e6a in __cxa_throw () from /usr/lib/libstdc++.so.6 #13 0xb4600d97 in DOM::DOMImplementation::createCSSStyleSheet ( this=0xbf808ff4, title=@0xbf808fb8, media=@0xbf808fb0) at /media/sda7/kde/src/KDE/kdelibs/khtml/dom/dom_doc.cpp:131 #14 0xb275e837 in DOMTreeView::connectToPart (this=0x8a401f8) at /media/sda7/kde/src/extragear/base/konq-plugins/domtreeviewer/domtreeview.cpp:863 #15 0xb275ee82 in DOMTreeView::slotSetHtmlPartDelayed (this=0x8a401f8) at /media/sda7/kde/src/extragear/base/konq-plugins/domtreeviewer/domtreeview.cpp:901 #16 0xb275f561 in DOMTreeView::qt_metacall (this=0x8a401f8, _c=QMetaObject::InvokeMetaMethod, _id=26, _a=0xbf8090dc) at /media/sda7/kde/build4/extragear/base/konq-plugins/domtreeviewer/domtreeview.moc:162 #17 0xb72704c7 in QMetaObject::activate (sender=0x8916f80, from_signal_index=4, to_signal_index=4, argv=0x0) at kernel/qobject.cpp:3007 #18 0xb7270949 in QMetaObject::activate (sender=0x8916f80, m=0xb730aa68, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3080 #19 0xb727a4d5 in QSingleShotTimer::timeout (this=0x8916f80) at .moc/debug-shared/qtimer.moc:74 #20 0xb727a5f2 in QSingleShotTimer::timerEvent (this=0x8916f80) at kernel/qtimer.cpp:300 #21 0xb726e75e in QObject::event (this=0x8916f80, e=0xbf809614) at kernel/qobject.cpp:1105 #22 0xb69508fd in QApplicationPrivate::notify_helper (this=0x805d9d8, receiver=0x8916f80, e=0xbf809614) at kernel/qapplication.cpp:3766 #23 0xb6950be3 in QApplication::notify (this=0xbf809a6c, receiver=0x8916f80, e=0xbf809614) at kernel/qapplication.cpp:3360 #24 0xb78cc133 in KApplication::notify (this=0xbf809a6c, receiver=0x8916f80, event=0xbf809614) at /media/sda7/kde/src/KDE/kdelibs/kdeui/kernel/kapplication.cpp:311 #25 0xb725b63a in QCoreApplication::notifyInternal (this=0xbf809a6c, receiver=0x8916f80, event=0xbf809614) at kernel/qcoreapplication.cpp:583 #26 0xb725f179 in QCoreApplication::sendEvent (receiver=0x8916f80, event=0xbf809614) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215 #27 0xb728e065 in QTimerInfoList::activateTimers (this=0x8060cd4) at kernel/qeventdispatcher_unix.cpp:563 #28 0xb728b84c in timerSourceDispatch (source=0x8060ca0) at kernel/qeventdispatcher_glib.cpp:166 #29 0xb63d8bf8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #30 0xb63dbe5e in ?? () from /usr/lib/libglib-2.0.so.0 #31 0x08060098 in ?? () #32 0x00000000 in ?? () #0 0xb7f4b410 in __kernel_vsyscall () Reproduced indeed, and I don't get it; I see throw DOMException in Node::firstChild(), and that's called directly in a try/catch block (in DOMTreeView::slotShowTree), so this should not fail. The bug report topic says "due to RTLD_LOCAL", did someone identify this as the reason? konqueror dlopens khtmlpart.so and domtreeviewerplugin.so independently, so the latter can't catch the exceptions from the former? Ouch. This would mean the only solution is to start opening parts and plugins with RTLD_GLOBAL, i.e. with QLibrary::ExportExternalSymbolsHint. Indeed... this patch works. http://www.davidfaure.fr/2010/kpluginloader.cpp.diff The question is what does it break... SVN commit 1199708 by dfaure: Don't call load() in the constructor, but rather on-demand in all other methods, so that the user of KPluginLoader has time to call setLoadHints(QLibrary::ExportExternalSymbolsHint) if needed. CCBUG: 110947 M +10 -10 kpluginloader.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1199708 SVN commit 1199713 by dfaure: Load parts using RTLD_GLOBAL so that the domtreeviewer can catch exceptions from khtmlpart. Otherwise it just crashes. Since 2005... BUG: 110947 FIXED-IN: 4.6 M +1 -0 konqfactory.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1199713 *** Bug 249640 has been marked as a duplicate of this bug. *** *** Bug 247995 has been marked as a duplicate of this bug. *** |