I don't think that use of condition variables in BlockingResponseMap is correct. There are multiple threads waiting, but only one signal(), so it resource identifier doesn't match, we're stuck forever. We should at least have a broadcast(), but ideally, we should have a design that doesn't wake up all threads. <rdar://problem/12874785>
Created attachment 179377 [details] quick and dirty fix
Comment on attachment 179377 [details] quick and dirty fix View in context: https://bugs.webkit.org/attachment.cgi?id=179377&action=review > Source/WebKit2/ChangeLog:12 > + horibly inefficient, and has a race, but should improve behavior quite a bit. horibly -> horribly. > Source/WebKit2/Shared/BlockingResponseMap.h:57 > + m_condition.broadcast(); Please add a FIXME here so we won't forget about it.
Landed in <http://trac.webkit.org/changeset/137689>. Will improve later.
Follow-up in http://trac.webkit.org/changeset/137766 - just applied the same change to the other map.