RESOLVED FIXED 104110
[EFL][WK2] EWK2UnitTestBase.ewk_favicon_database_async_icon_get is crashing with new Ewk_Context
https://bugs.webkit.org/show_bug.cgi?id=104110
Summary [EFL][WK2] EWK2UnitTestBase.ewk_favicon_database_async_icon_get is crashing w...
Chris Dumez
Reported 2012-12-05 03:32:12 PST
Bug 103692 is creating a new Ewk_Context for each API test, this causes the following API test to crash: EWK2UnitTestBase.ewk_favicon_database_async_icon_get With the following backtrace: ASSERTION FAILED: !result /home/jinwoo/webkit_opensource/webkit-efl/WebKit/Source/WTF/wtf/ThreadingPthreads.cpp(345) : void WTF::Mutex::lock() 1 0x7ffa60c82839 WTF::Mutex::lock() 2 0x7ffa6089f4a4 WTF::Locker<WTF::Mutex>::Locker(WTF::Mutex&) 3 0x7ffa5ff23d47 void WTF::addIterator<void (*)(char const*, void*), WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData> >, WTF::PtrHash<void (*)(char const*, void*)>, WTF::HashMapValueTraits<WTF::HashTraits<void (*)(char const*, void*)>, WTF::HashTraits<IconChangeCallbackData> >, WTF::HashTraits<void (*)(char const*, void*)> >(WTF::HashTable<void (*)(char const*, void*), WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData> >, WTF::PtrHash<void (*)(char const*, void*)>, WTF::HashMapValueTraits<WTF::HashTraits<void (*)(char const*, void*)>, WTF::HashTraits<IconChangeCallbackData> >, WTF::HashTraits<void (*)(char const*, void*)> > const*, WTF::HashTableConstIterator<void (*)(char const*, void*), WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData> >, WTF::PtrHash<void (*)(char const*, void*)>, WTF::HashMapValueTraits<WTF::HashTraits<void (*)(char const*, void*)>, WTF::HashTraits<IconChangeCallbackData> >, WTF::HashTraits<void (*)(char const*, void*)> >*) 4 0x7ffa5ff25f5a WTF::HashTableConstIterator<void (*)(char const*, void*), WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData> >, WTF::PtrHash<void (*)(char const*, void*)>, WTF::HashMapValueTraits<WTF::HashTraits<void (*)(char const*, void*)>, WTF::HashTraits<IconChangeCallbackData> >, WTF::HashTraits<void (*)(char const*, void*)> >::HashTableConstIterator(WTF::HashTable<void (*)(char const*, void*), WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData> >, WTF::PtrHash<void (*)(char const*, void*)>, WTF::HashMapValueTraits<WTF::HashTraits<void (*)(char const*, void*)>, WTF::HashTraits<IconChangeCallbackData> >, WTF::HashTraits<void (*)(char const*, void*)> > const*, WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData> const*, WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData> const*) 5 0x7ffa5ff2525b WTF::HashTable<void (*)(char const*, void*), WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData> >, WTF::PtrHash<void (*)(char const*, void*)>, WTF::HashMapValueTraits<WTF::HashTraits<void (*)(char const*, void*)>, WTF::HashTraits<IconChangeCallbackData> >, WTF::HashTraits<void (*)(char const*, void*)> >::makeConstIterator(WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData>*) const 6 0x7ffa5ff23cb9 WTF::HashTable<void (*)(char const*, void*), WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData>, WTF::KeyValuePairKeyExtractor<WTF::KeyValuePair<void (*)(char const*, void*), IconChangeCallbackData> >, WTF::PtrHash<void (*)(char const*, void*)>, WTF::HashMapValueTraits<WTF::HashTraits<void (*)(char const*, void*)>, WTF::HashTraits<IconChangeCallbackData> >, WTF::HashTraits<void (*)(char const*, void*)> >::begin() const 7 0x7ffa5ff22be1 WTF::HashMap<void (*)(char const*, void*), IconChangeCallbackData, WTF::PtrHash<void (*)(char const*, void*)>, WTF::HashTraits<void (*)(char const*, void*)>, WTF::HashTraits<IconChangeCallbackData> >::begin() const 8 0x7ffa5ff21a0b EwkFaviconDatabase::didChangeIconForPageURL(OpaqueWKIconDatabase const*, OpaqueWKURL const*, void const*) 9 0x7ffa5fd52711 WebKit::WebIconDatabaseClient::didChangeIconForPageURL(WebKit::WebIconDatabase*, WebKit::WebURL*) 10 0x7ffa5fd4fae5 WebKit::WebIconDatabase::didChangeIconForPageURL(WTF::String const&) 11 0x7ffa5aa60111 WebCore::IconDatabase::setIconDataForIconURL(WTF::PassRefPtr<WebCore::SharedBuffer>, WTF::String const&) 12 0x7ffa5fd4f43d WebKit::WebIconDatabase::setIconDataForIconURL(CoreIPC::DataReference const&, WTF::String const&) 13 0x7ffa5ff6ce6f void CoreIPC::callMemberFunction<WebKit::WebIconDatabase, void (WebKit::WebIconDatabase::*)(CoreIPC::DataReference const&, WTF::String const&), CoreIPC::DataReference, WTF::String>(CoreIPC::Arguments2<CoreIPC::DataReference, WTF::String> const&, WebKit::WebIconDatabase*, void (WebKit::WebIconDatabase::*)(CoreIPC::DataReference const&, WTF::String const&)) 14 0x7ffa5ff6c9a7 void CoreIPC::handleMessage<Messages::WebIconDatabase::SetIconDataForIconURL, WebKit::WebIconDatabase, void (WebKit::WebIconDatabase::*)(CoreIPC::DataReference const&, WTF::String const&)>(CoreIPC::MessageDecoder&, WebKit::WebIconDatabase*, void (WebKit::WebIconDatabase::*)(CoreIPC::DataReference const&, WTF::String const&)) 15 0x7ffa5ff6c1f1 WebKit::WebIconDatabase::didReceiveWebIconDatabaseMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) 16 0x7ffa5fd4fde8 WebKit::WebIconDatabase::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) 17 0x7ffa5fc9e6c2 CoreIPC::MessageReceiverMap::dispatchMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) 18 0x7ffa5fd2e25d WebKit::WebContext::dispatchMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) 19 0x7ffa5fdab9ba WebKit::WebProcessProxy::didReceiveMessage(CoreIPC::Connection*, CoreIPC::MessageID, CoreIPC::MessageDecoder&) 20 0x7ffa5fc936f4 CoreIPC::Connection::dispatchMessage(CoreIPC::MessageID, CoreIPC::MessageDecoder&) 21 0x7ffa5fc93860 CoreIPC::Connection::dispatchMessage(CoreIPC::Connection::Message<CoreIPC::MessageDecoder>&) 22 0x7ffa5fc93aab CoreIPC::Connection::dispatchOneMessage() 23 0x7ffa5fc9dc4c WTF::FunctionWrapper<void (CoreIPC::Connection::*)()>::operator()(CoreIPC::Connection*) 24 0x7ffa5fc9da52 WTF::BoundFunctionImpl<WTF::FunctionWrapper<void (CoreIPC::Connection::*)()>, void (CoreIPC::Connection*)>::operator()() 25 0x7ffa60c86496 WTF::Function<void ()>::operator()() const 26 0x7ffa5ab79622 WebCore::RunLoop::performWork() 27 0x7ffa5b5a5a17 WebCore::RunLoop::wakeUpEvent(void*, void*, unsigned int) 28 0x7ffa61307751 29 0x7ffa613066a1 30 0x7ffa61306b45 ecore_main_loop_iterate 31 0x40e49f EWK2UnitTest::EWK2UnitTestBase::waitUntilLoadFinished(double)
Attachments
Patch (1.55 KB, patch)
2012-12-05 03:45 PST, Chris Dumez
no flags
Chris Dumez
Comment 1 2012-12-05 03:45:44 PST
Mikhail Pozdnyakov
Comment 2 2012-12-05 03:52:20 PST
Comment on attachment 177717 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=177717&action=review > Source/WebKit2/UIProcess/API/efl/ewk_favicon_database.cpp:56 > + WKIconDatabaseSetIconDatabaseClient(toAPI(m_iconDatabase.get()), 0); is it possible to use c++ analogue instead?
Chris Dumez
Comment 3 2012-12-05 03:58:10 PST
Comment on attachment 177717 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=177717&action=review >> Source/WebKit2/UIProcess/API/efl/ewk_favicon_database.cpp:56 >> + WKIconDatabaseSetIconDatabaseClient(toAPI(m_iconDatabase.get()), 0); > > is it possible to use c++ analogue instead? In theory yes, and I don't mind if we switch to C++ in a separate patch. At the moment, my patch is consistent with the use of WKIconDatabaseSetIconDatabaseClient() in the class constructor. If I use C API in constructor and C++ API in the destructor, it is going to look weird.
Mikhail Pozdnyakov
Comment 4 2012-12-05 04:05:23 PST
(In reply to comment #3) > (From update of attachment 177717 [details]) > View in context: https://bugs.webkit.org/attachment.cgi?id=177717&action=review > > >> Source/WebKit2/UIProcess/API/efl/ewk_favicon_database.cpp:56 > >> + WKIconDatabaseSetIconDatabaseClient(toAPI(m_iconDatabase.get()), 0); > > > > is it possible to use c++ analogue instead? > > In theory yes, and I don't mind if we switch to C++ in a separate patch. At the moment, my patch is consistent with the use of WKIconDatabaseSetIconDatabaseClient() in the class constructor. > If I use C API in constructor and C++ API in the destructor, it is going to look weird. Agreed, looks good than.
Laszlo Gombos
Comment 5 2012-12-05 07:21:20 PST
Comment on attachment 177717 [details] Patch r=me.
WebKit Review Bot
Comment 6 2012-12-05 08:11:33 PST
Comment on attachment 177717 [details] Patch Clearing flags on attachment: 177717 Committed r136691: <http://trac.webkit.org/changeset/136691>
WebKit Review Bot
Comment 7 2012-12-05 08:11:37 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.