Bug 174814
| Summary: | [curl] ASSERTION FAILED: The string being removed is atomic in the string table of an other thread! | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Fujii Hironori <fujii.hironori> |
| Component: | Platform | Assignee: | Nobody <webkit-unassigned> |
| Status: | RESOLVED DUPLICATE | ||
| Severity: | Normal | CC: | basuke |
| Priority: | P2 | ||
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Fujii Hironori
While using MiniBrowser of WinCairo port (trunk@219863, Debug build),
I see the following assertion failure.
> ASSERTION FAILED: The string being removed is atomic in the string table of an other thread!
> iterator != atomicStringTable.end()
> C:\webkit\ga\Source\WTF\wtf\text\AtomicStringImpl.cpp(483) : WTF::AtomicStringImpl::remove
> WTF.dll!WTFCrash() Line 278 C++
> WTF.dll!WTF::AtomicStringImpl::remove(WTF::AtomicStringImpl * string) Line 483 C++
> WTF.dll!WTF::StringImpl::~StringImpl() Line 118 C++
> [External Code]
> WTF.dll!WTF::StringImpl::destroy(WTF::StringImpl * stringImpl) Line 144 C++
> WebKit.dll!WTF::StringImpl::deref() Line 566 C++
> WebKit.dll!WTF::derefIfNotNull<WTF::StringImpl>(WTF::StringImpl * ptr) Line 46 C++
> WebKit.dll!WTF::RefPtr<WTF::StringImpl>::~RefPtr<WTF::StringImpl>() Line 69 C++
> WebKit.dll!WTF::String::~String() Line 142 C++
> [External Code]
> WebKit.dll!WebCore::ResourceHandleInternal::~ResourceHandleInternal() Line 52 C++
> [External Code]
> WebKit.dll!WebCore::ResourceHandle::~ResourceHandle() Line 56 C++
> [External Code]
> WebKit.dll!WTF::RefCounted<WebCore::ResourceHandle>::deref() Line 145 C++
> WebKit.dll!WTF::Ref<WebCore::ResourceHandle>::~Ref<WebCore::ResourceHandle>() Line 59 C++
> [External Code]
> WTF.dll!WTF::Function<void __cdecl(void)>::operator=(void * __formal) Line 79 C++
> WTF.dll!WTF::dispatchFunctionsFromMainThread() Line 138 C++
> WTF.dll!WTF::ThreadingWindowWndProc(HWND__ * hWnd, unsigned int message, unsigned __int64 wParam, __int64 lParam) Line 47 C++
> [External Code]
> WebKit.dll!WebKitMessageLoop::run(HACCEL__ * hAccelTable) Line 97 C++
> MiniBrowserLib.dll!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 189 C++
> MiniBrowserLib.dll!dllLauncherEntryPoint(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 908 C++
> MiniBrowser.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpstrCmdLine, int nCmdShow) Line 249 C++
> [External Code]
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Fujii Hironori
That string is "OK".
> WebKit.dll!WTF::String::~String() Line 142 C++
> [External Code]
> WebKit.dll!WebCore::ResourceHandleInternal::~ResourceHandleInternal() Line 52 C++
~ResourceHandleInternal was calling WebCore::ResourceResponse::~ResourceResponse.
I don't know who was calling ~String().
Basuke Suzuki
Okay. Thanks for reporting. Still ResourceHandle curl has bunch of mysterious behaviors which need to cleanup. One by one.
Fujii Hironori
The type of ResourceResponseBase::m_httpStatusText is AtomicString.
ResourceHandleInternal::didReceiveHeaderLine calls setHTTPStatusText in the curl thread.
And, the AtomicString is destructed in main thread.
Fujii Hironori
*** This bug has been marked as a duplicate of bug 174845 ***