Bug 115407

Summary: REGRESION(r149338): WebKitTestRunner crashing on Qt WK2, EFL WK2
Product: WebKit Reporter: Zoltan Arvai <zarvai>
Component: Tools / TestsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: allan.jensen, andersca, bw80.lee, hausmann, jturcotte, kadam, rakuco, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 115384    

Zoltan Arvai
Reported 2013-04-30 01:30:58 PDT
All tests crashing after the patch, because platform specific RunLoop files not updated well. 17:45:53.357 19964 worker/0 http/tests/cache/cached-main-resource.html crashed, (no stderr) 17:45:53.358 19964 [1/28401] http/tests/cache/cached-main-resource.html failed unexpectedly (WebKitTestRunner crashed [pid=20217]) 17:45:53.358 19964 worker/0 killing driver 17:45:53.358 19964 worker/0 http/tests/cache/cached-main-resource.html failed: 17:45:53.358 19964 worker/0 WebKitTestRunner crashed [pid=20217] 17:45:53.715 19964 worker/0 http/tests/cache/cancel-during-failure-crash.html crashed, (no stderr)
Attachments
Byungwoo Lee
Comment 1 2013-04-30 01:47:12 PDT
RunLoop::current() returns 0 and below seems to make this problem. RunLoop* RunLoop::current() { - DEFINE_STATIC_LOCAL(WTF::ThreadSpecific<RunLoop>, runLoopData, ()); - return &*runLoopData; + DEFINE_STATIC_LOCAL(WTF::ThreadSpecific<RefPtr<RunLoop> >, runLoopData, ()); + return runLoopData->get(); } RefPtr<RunLoop> will be empty because DEFINE_STATIC_LOCAL will not create RunLoop instance. I made a change as following, and it works ok. But I'm not sure this is the right solution. RunLoop* RunLoop::current() { - DEFINE_STATIC_LOCAL(WTF::ThreadSpecific<RefPtr<RunLoop> >, runLoopData, ()); - return runLoopData->get(); + DEFINE_STATIC_LOCAL(WTF::ThreadSpecific<RefPtr<RunLoop> >, runLoopRefPtrData, ()); + DEFINE_STATIC_LOCAL(WTF::ThreadSpecific<RunLoop>, runLoopData, ()); + if (!runLoopRefPtrData.isSet()) + *runLoopRefPtrData = adoptRef((RunLoop*)runLoopData); + return runLoopRefPtrData->get(); } is there any one who knows the clear point about this?
Byungwoo Lee
Comment 2 2013-04-30 01:56:51 PDT
checking isSet() seems incorrect. RunLoop* RunLoop::current() { - DEFINE_STATIC_LOCAL(WTF::ThreadSpecific<RefPtr<RunLoop> >, runLoopData, ()); - return runLoopData->get(); + DEFINE_STATIC_LOCAL(WTF::ThreadSpecific<RefPtr<RunLoop> >, runLoopRefPtrData, ()); + DEFINE_STATIC_LOCAL(WTF::ThreadSpecific<RunLoop>, runLoopData, ()); + if (!runLoopRefPtrData->get()) + *runLoopRefPtrData = adoptRef((RunLoop*)runLoopData); + return runLoopRefPtrData->get(); }
Zoltan Arvai
Comment 3 2013-04-30 04:18:01 PDT
Closing. R149338 rolled out in http://trac.webkit.org/changeset/149358.
Note You need to log in before you can comment on or make changes to this bug.