mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 07:45:30 +00:00
e6a79fe88f
This issue is triggered by off-main-thread ODA listener that return error cause from OnDataAvailable callback. A CancelEvent will be prepend to event queue and trigger race condition between CompleteResume and EndForceEnqueueing. The `mFlushing` is checked and set in separate critical sections, therefore two threads that executing MayFlushQueue might both pass the `mFlushing` check and trying to call FlushQueue simultaneously. The solution is to check and set `mFlushing` in single critical section, so we can guarantee that only one FlushQueue can be executed at anytime. In addition, resumption is postponed until no AutoEventEnqueuer is activated. Therefore, CompleteResume will only be triggered while all the suspension requests and auto enqueue requests are finished. MozReview-Commit-ID: HpxzgUqYm8C --HG-- extra : rebase_source : 9be0d37bb4475a0817dafb6270585263160a9da1 |
||
---|---|---|
.. | ||
ChannelEventQueue.cpp | ||
ChannelEventQueue.h | ||
moz.build | ||
NeckoChannelParams.ipdlh | ||
NeckoChild.cpp | ||
NeckoChild.h | ||
NeckoCommon.cpp | ||
NeckoCommon.h | ||
NeckoMessageUtils.h | ||
NeckoParent.cpp | ||
NeckoParent.h | ||
NeckoTargetHolder.cpp | ||
NeckoTargetHolder.h | ||
PChannelDiverter.ipdl | ||
PDataChannel.ipdl | ||
PFileChannel.ipdl | ||
PNecko.ipdl | ||
PSimpleChannel.ipdl |