Bug 131630

Summary: monotonicallyIncreasingTime() should only initialize its static timebaseInfo once
Product: WebKit Reporter: Mark Lam <mark.lam>
Component: JavaScriptCoreAssignee: Mark Lam <mark.lam>
Status: RESOLVED FIXED    
Severity: Normal CC: benjamin, cmarcelo, commit-queue, fpizlo, ggaren, mhahnenberg, mmirman, msaboff, oliver, simon.fraser
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
the patch fpizlo: review+

Mark Lam
Reported 2014-04-14 12:51:58 PDT
The current initialization of the static field is not thread safe.
Attachments
the patch (1.58 KB, patch)
2014-04-14 13:02 PDT, Mark Lam
fpizlo: review+
Mark Lam
Comment 1 2014-04-14 12:52:54 PDT
Mark Lam
Comment 2 2014-04-14 13:02:53 PDT
Created attachment 229302 [details] the patch
Filip Pizlo
Comment 3 2014-04-14 13:20:28 PDT
Comment on attachment 229302 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=229302&action=review > Source/WTF/wtf/CurrentTime.cpp:278 > // Based on listing #2 from Apple QA 1398. > static mach_timebase_info_data_t timebaseInfo; > - if (!timebaseInfo.denom) { > + static std::once_flag initializeTimerOnceFlag; > + std::call_once(initializeTimerOnceFlag, [] { You should change the comment to say that it fixes the race condition in that listing. Say something like "Based on listing #2 from Apple QA 1398, but modified to be thread-safe".
Mark Lam
Comment 4 2014-04-14 13:33:06 PDT
Thanks. Patch has been updated as suggested. Landed in r167263: <http://trac.webkit.org/r167263>.
Note You need to log in before you can comment on or make changes to this bug.