Hang seen in application after receiving WIRPermissionDenied message: XPC Connection Queue ... 1000 _xpc_connection_call_event_handler + 58 (libxpc.dylib + 40329) [0x7fff88676d89] 1-1000 1000 Inspector::RemoteInspectorXPCConnection::handleEvent(void*) + 156 (JavaScriptCore + 4603324) [0x10e334dbc] 1-1000 1000 Inspector::RemoteInspector::xpcConnectionReceivedMessage(Inspector::RemoteInspectorXPCConnection*, NSString*, NSDictionary*) + 72 (JavaScriptCore + 4587976) [0x10e3311c8] 1-1000 1000 Inspector::RemoteInspector::stop() + 29 (JavaScriptCore + 4587437) [0x10e330fad] 1-1000 1000 std::__1::mutex::lock() + 9 (libc++.1.dylib + 248623) [0x7fff8f33fb2f] 1-1000 1000 __psynch_mutexwait + 10 (libsystem_kernel.dylib + 90754) [0x7fff95b3f282] 1-1000 *1000 psynch_mtxcontinue + 0 (pthread + 18499) [0xffffff7f80ed2843] 1-1000 Note RemoteInspector::xpcConnectionReceivedMessage took the mutex that Inspector::RemoteInspector::stop is waiting for. It already has the mutex. This is the only place stop() is called (other then the RemoteInspector API). Since stop() takes the lock, we can just move xpcConnectionReceivedMessage's lock after the disjoint branch that calls stop().
<rdar://problem/16545910>
Created attachment 228767 [details] [PATCH] Proposed Fix
Comment on attachment 228767 [details] [PATCH] Proposed Fix Clearing flags on attachment: 228767 Committed r166891: <http://trac.webkit.org/changeset/166891>
All reviewed patches have been landed. Closing bug.