WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED INVALID
49794
[Qt] Strange infinite recursion on MiniBrowser termination
https://bugs.webkit.org/show_bug.cgi?id=49794
Summary
[Qt] Strange infinite recursion on MiniBrowser termination
Balazs Kelemen
Reported
2010-11-19 04:59:41 PST
1. go to www.yahoo.com (or any site that requires plugins) 2. close MiniBrowser I could not find the right moment when to close the browser to be able to reproduce the bug all the time, but sometimes it appears. Backtrace: #0 0xb3cf19e7 in ?? () from /lib/libc.so.6 #1 0xb3cf40ba in malloc () from /lib/libc.so.6 #2 0xb3ee9525 in operator new(unsigned int) () from /usr/lib/libstdc++.so.6 #3 0xb3fe2dd6 in QMutex::QMutex (this=0xaba11a88, mode=QMutex::NonRecursive) at thread/qmutex.cpp:124 #4 0xb3fe58bb in QThreadPrivate::QThreadPrivate (this=0xaba11a38, d=0xaba11918) at thread/qthread.cpp:177 #5 0xb3fe5ada in QAdoptedThread::QAdoptedThread (this=0xaba11a28, data=0xaba11918) at thread/qthread.cpp:137 #6 0xb3fe7f29 in QThreadData::current () at thread/qthread_unix.cpp:164 #7 0xb41007e7 in QObject::QObject (this=0xaba117d0, dd=..., parent=0x0) at kernel/qobject.cpp:772 #8 0xb3fe4e60 in QThread::QThread (this=0xaba117d0, dd=..., parent=0x0) at thread/qthread.cpp:385 #9 0xb3fe5aee in QAdoptedThread::QAdoptedThread (this=0xaba117d0, data=0xaba116c0) at thread/qthread.cpp:137 #10 0xb3fe7f29 in QThreadData::current () at thread/qthread_unix.cpp:164 #11 0xb41007e7 in QObject::QObject (this=0xaba11578, dd=..., parent=0x0) at kernel/qobject.cpp:772 #12 0xb3fe4e60 in QThread::QThread (this=0xaba11578, dd=..., parent=0x0) at thread/qthread.cpp:385 #13 0xb3fe5aee in QAdoptedThread::QAdoptedThread (this=0xaba11578, data=0xaba11468) at thread/qthread.cpp:137 #14 0xb3fe7f29 in QThreadData::current () at thread/qthread_unix.cpp:164 #15 0xb41007e7 in QObject::QObject (this=0xaba11320, dd=..., parent=0x0) at kernel/qobject.cpp:772 #16 0xb3fe4e60 in QThread::QThread (this=0xaba11320, dd=..., parent=0x0) at thread/qthread.cpp:385 #17 0xb3fe5aee in QAdoptedThread::QAdoptedThread (this=0xaba11320, data=0xaba11210) at thread/qthread.cpp:137 #18 0xb3fe7f29 in QThreadData::current () at thread/qthread_unix.cpp:164 #19 0xb41007e7 in QObject::QObject (this=0xaba110c8, dd=..., parent=0x0) at kernel/qobject.cpp:772 ... The call stack contains a few thousand items! By putting a break in QThreadPrivate::start you can catch the top of the call stack: #4 0xb3fe5aee in QAdoptedThread::QAdoptedThread (this=0x8056168, data=0x8068d88) at thread/qthread.cpp:137 #5 0xb3fe7f29 in QThreadData::current () at thread/qthread_unix.cpp:164 #6 0xb41007e7 in QObject::QObject (this=0x8056018, dd=..., parent=0x0) at kernel/qobject.cpp:772 #7 0xb3fe4e60 in QThread::QThread (this=0x8056018, dd=..., parent=0x0) at thread/qthread.cpp:385 #8 0xb3fe5aee in QAdoptedThread::QAdoptedThread (this=0x8056018, data=0x8058c18) at thread/qthread.cpp:137 #9 0xb3fe7f29 in QThreadData::current () at thread/qthread_unix.cpp:164 #10 0xb41007e7 in QObject::QObject (this=0x8136be8, dd=..., parent=0x0) at kernel/qobject.cpp:772 #11 0xb3fe4e60 in QThread::QThread (this=0x8136be8, dd=..., parent=0x0) at thread/qthread.cpp:385 #12 0xb3fe5aee in QAdoptedThread::QAdoptedThread (this=0x8136be8, data=0x8157cd8) at thread/qthread.cpp:137 #13 0xb3fe7f29 in QThreadData::current () at thread/qthread_unix.cpp:164 #14 0xb411d5cf in postEventSourcePrepare (s=0x815a618, timeout=0x0) at kernel/qeventdispatcher_glib.cpp:254 #15 0xb411d639 in postEventSourceCheck (source=0x815a618) at kernel/qeventdispatcher_glib.cpp:270 #16 0xb350b392 in g_main_context_check () from /usr/lib/libglib-2.0.so.0 #17 0xb350bac0 in ?? () from /usr/lib/libglib-2.0.so.0 #18 0xb350bebe in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #19 0xb411d0a1 in QEventDispatcherGlib::processEvents (this=0x815a728, flags=...) at kernel/qeventdispatcher_glib.cpp:415 #20 0xb40ec62a in QEventLoop::processEvents (this=0xb1ffe32c, flags=...) at kernel/qeventloop.cpp:149 #21 0xb40ecab2 in QEventLoop::exec (this=0xb1ffe32c, flags=...) at kernel/qeventloop.cpp:201 #22 0xb3fe530a in QThread::exec (this=0xb283dfd8) at thread/qthread.cpp:490 #23 0xb3fe53cd in QThread::run (this=0xb283dfd8) at thread/qthread.cpp:555 #24 0xb3fe89b9 in QThreadPrivate::start (arg=0xb283dfd8) at thread/qthread_unix.cpp:266 #25 0xb3f256e5 in start_thread () from /lib/libpthread.so.0 #26 0xb3f25600 in ?? () from /lib/libpthread.so.0
Attachments
Add attachment
proposed patch, testcase, etc.
Balazs Kelemen
Comment 1
2010-11-19 05:05:23 PST
I think the bug is related to plugins that fork. Currently we have no full plugin support, but in PluginInfoStoreQt.cpp we load the plugin to ask it about it's capabilities. I found in the debugger that we actually do not unload the plugin from the UI process (after calling unload for the PluginPackage we use, I still see the library through "info shared"). Moreover, there are plugins that fork from NP_Initialize. Seems like Qt tries to do something nasty with the forked process?
Balazs Kelemen
Comment 2
2011-04-05 01:04:33 PDT
Cannot reproduce anymore.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug