[Webkit-unassigned] [Bug 34081] [Qt] QtWebkit apps crash on exit on Symbian^3 onwards

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Fri Feb 26 00:17:52 PST 2010


https://bugs.webkit.org/show_bug.cgi?id=34081





--- Comment #2 from Janne Koskinen <koshuin at gmail.com>  2010-02-26 00:17:52 PST ---
Now that I got enviroment to work on found the reason for the crash. fix might
take some time....

Problem is that when we exit the application we delete the ThreadGlobalData
while in main:

Thread [Thread id: 7392] (Suspended: Breakpoint hit.)    
    21 WebCore::ThreadGlobalData::~ThreadGlobalData()
X:\qt\src\3rdparty\webkit\WebCore\platform\ThreadGlobalData.cpp:88 0x07f9a780   
    20 WTF::ThreadSpecific<WebCore::ThreadGlobalData>::destroy()
X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\ThreadSpecific.h:226 0x07f9a0ec    
    19 WTF::ThreadSpecific<WebCore::ThreadGlobalData>::Data::~Data()
X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\ThreadSpecific.h:83 0x07f9a552    
    18 0x7F9A50C( QtWebKit.dll )()  0x07f9a50c    
    17 QThreadStorage<WTF::ThreadSpecific<WebCore::ThreadGlobalData>::Data
*>::deleteData() X:\qt\src\corelib\thread\qthreadstorage.h:133 0x07f9a4cd    
    16 QThreadStorageData::finish()
X:\qt\src\corelib\thread\qthreadstorage.cpp:185 0x035417d3    
    15 QCoreApplicationPrivate::~QCoreApplicationPrivate()
X:\qt\src\corelib\kernel\qcoreapplication.cpp:289 0x034dea2c    
    14 QApplicationPrivate::~QApplicationPrivate()
X:\qt\src\gui\kernel\qapplication.cpp:192 0x03f7a8de    
    13 0x3F887AC( QtGui.dll )()  0x03f887ac    
    12 QScopedPointerDeleter<QObjectData>::cleanup()
X:\qt\src\corelib\tools\qscopedpointer.h:63 0x034f5428    
    11 QScopedPointer<QObjectData,
QScopedPointerDeleter<QObjectData>>::~QScopedPointer()
X:\qt\src\corelib\tools\qscopedpointer.h:100 0x034f53f5    
    10 QObject::~QObject() X:\qt\src\corelib\kernel\qobject.cpp:984 0x034f5b41  
    9 QCoreApplication::~QCoreApplication()
X:\qt\src\corelib\kernel\qcoreapplication.cpp:618 0x034df624    
    8 QApplication::~QApplication() X:\qt\src\gui\kernel\qapplication.cpp:1115
0x03f7c6ea    
    7 main() X:\webviewclient\main.cpp:56 0x00401150    
    6 QtMainWrapper() X:\qt\src\s60main\qts60main_mcrt0.cpp:86 0x00403201    
    5 E32Main() X:\qt\src\s60main\qts60main.cpp:56 0x00402d7c    
    4 _E32Startup()
M:\sf\os\kernelhwsrv\kernel\eka\euser\epoc\win32\uc_exe.cpp:87 0x004024dc    
    3 DThread::EpocThreadFunction()
V:\sf\os\KERNELHWSRV\KERNEL\EKA\KERNEL\win32\ckernel.cpp:84 0x0915ac33    
    2 NThread::StartThread()
V:\sf\os\KERNELHWSRV\KERNEL\EKA\nkern\win32\ncthrd.cpp:187 0x091595c7    
    1 0x7C80B50B( KERNEL32.dll )()  0x7c80b50b    

And now that we hit the global destructors we get:

Thread [Thread id: 7392] (Suspended: Breakpoint hit.)    
    21 WTF::ThreadSpecific<WebCore::ThreadGlobalData>::operator
WebCore::ThreadGlobalData *()
X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\ThreadSpecific.h:251 0x07f9a255    
    20 WTF::ThreadSpecific<WebCore::ThreadGlobalData>::operator *()
X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\ThreadSpecific.h:267 0x07f9a209    
    19 WebCore::threadGlobalData()
X:\qt\src\3rdparty\webkit\WebCore\platform\ThreadGlobalData.cpp:58 0x07f9a1c2   
    18 WebCore::stringTable()
X:\qt\src\3rdparty\webkit\WebCore\platform\text\AtomicString.cpp:45 0x07ff1698  
    17 WebCore::AtomicString::remove()
X:\qt\src\3rdparty\webkit\WebCore\platform\text\AtomicString.cpp:229 0x07ff1b3c 
    16 WebCore::StringImpl::~StringImpl()
X:\qt\src\3rdparty\webkit\WebCore\platform\text\StringImpl.cpp:104 0x07ffaf39   
    15 0x790B5AC( QtWebKit.dll )()  0x0790b5ac    
    14 WTF::RefCounted<WebCore::StringImpl>::deref()
X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\RefCounted.h:110 0x0790b567    
    13 WTF::derefIfNotNull<WebCore::StringImpl>()
X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\PassRefPtr.h:43 0x0790b531    
    12 WTF::RefPtr<WebCore::StringImpl>::~RefPtr()
X:\qt\src\3rdparty\webkit\JavaScriptCore\wtf\RefPtr.h:53 0x0790b195    
    11 0x790B169( QtWebKit.dll )()  0x0790b169    
    10 0x790D7A9( QtWebKit.dll )()  0x0790d7a9    
    9 __destroy_global_chain()
M:\sf\os\kernelhwsrv\kernel\eka\include\win32atx.h:96 0x08239d56    
    8 invokeTable() M:\sf\os\kernelhwsrv\kernel\eka\include\win32crt.h:74
0x0823a5f3    
    7 _E32Dll() M:\sf\os\kernelhwsrv\kernel\eka\euser\epoc\win32\uc_dll.cpp:73
0x0823a66b    
    6 CallStaticEntryPoints()
V:\sf\os\kernelhwsrv\kernel\eka\euser\us_func.cpp:767 0x60014ae0    
    5 User::Exit() V:\sf\os\kernelhwsrv\kernel\eka\euser\us_func.cpp:806
0x60014b56    
    4 _E32Startup()
M:\sf\os\kernelhwsrv\kernel\eka\euser\epoc\win32\uc_exe.cpp:93 0x004024f9    
    3 DThread::EpocThreadFunction()
V:\sf\os\KERNELHWSRV\KERNEL\EKA\KERNEL\win32\ckernel.cpp:84 0x0915ac33    
    2 NThread::StartThread()
V:\sf\os\KERNELHWSRV\KERNEL\EKA\nkern\win32\ncthrd.cpp:187 0x091595c7    
    1 0x7C80B50B( KERNEL32.dll )()  0x7c80b50b    

This is because of
static inline HashSet<StringImpl*>& stringTable()
{
    return threadGlobalData().atomicStringTable();
}
ends up constructing the threadGlobalData as there isn't one anymore as it was
already deleted in main.

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list