Network process hangs fetching disk cache entries
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 26 Jun 2015 19:21:02 +0000 (19:21 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 26 Jun 2015 19:21:02 +0000 (19:21 +0000)
commitaf9d134d7d776f3d2e4c94baef83853f514c0295
treeeab8da0b4069d7b72932168961a87ecc981561fb
parent3bb7f31f1487ced6c88b193627a2f120905c442f
Network process hangs fetching disk cache entries
https://bugs.webkit.org/show_bug.cgi?id=146348
<rdar://problem/21528072>

Reviewed by Anders Carlsson.

RunLoop::dispatch may deadlock if invoked with std::function that captures an object that calls RunLoop::dispatch in destructor.

* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):

    Don't reuse std::function variable in loop. We may end up destroying previously held std::function in assignment
    while holding the runloop mutex. With this change std::function is always destroyed with mutex unlocked.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@186006 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WTF/ChangeLog
Source/WTF/wtf/RunLoop.cpp
Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
Tools/TestWebKitAPI/Tests/WTF/RunLoop.cpp [new file with mode: 0644]