Open Bug 643579 Opened 13 years ago Updated 2 years ago

Ensure all condition variable wait() usage occurs within a loop to avoid spurious wakeups

Categories

(Core :: General, defect)

x86
Linux
defect

Tracking

()

People

(Reporter: jdm, Unassigned)

References

Details

The pthread spec says it can happen, and a synchronization site being notified at an incorrect time could potentially be bad.
I think this is the whole list of problematic CondVar.Wait, Monitor.Wait, PR_WaitCondVar, PR_Wait, and renamed-via-#define constructs present in the source tree. 

http://mxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/nsHttpConnectionMgr.cpp#184
http://mxr.mozilla.org/mozilla-central/source/netwerk/cache/nsCacheService.cpp#830
http://mxr.mozilla.org/mozilla-central/source/storage/src/mozStoragePrivateHelpers.cpp#267
http://mxr.mozilla.org/mozilla-central/source/storage/test/test_true_async.cpp#154
http://mxr.mozilla.org/mozilla-central/source/ipc/ipdl/test/cxx/TestCrashCleanup.cpp#50
http://mxr.mozilla.org/mozilla-central/source/ipc/ipdl/test/cxx/TestRPCErrorCleanup.cpp#50
http://mxr.mozilla.org/mozilla-central/source/xpcom/tests/TestSynchronization.cpp#230
http://mxr.mozilla.org/mozilla-central/source/xpcom/tests/TestSynchronization.cpp#274
http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsPipe3.cpp#653
http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsPipe3.cpp#1011
http://mxr.mozilla.org/mozilla-central/source/xpcom/proxy/tests/proxy-create-threadsafety.cpp#186
http://mxr.mozilla.org/mozilla-central/source/xpcom/threads/nsEventQueue.cpp#85
http://mxr.mozilla.org/mozilla-central/source/xpcom/base/nsCycleCollector.cpp#3314
http://mxr.mozilla.org/mozilla-central/source/xpcom/base/nsCycleCollector.cpp#3359
http://mxr.mozilla.org/mozilla-central/source/xpcom/base/nsCycleCollector.cpp#3387
http://mxr.mozilla.org/mozilla-central/source/content/media/nsMediaCache.cpp#2153
http://mxr.mozilla.org/mozilla-central/source/content/media/wave/nsWaveDecoder.cpp#786
http://mxr.mozilla.org/mozilla-central/source/content/media/wave/nsWaveDecoder.cpp#823
http://mxr.mozilla.org/mozilla-central/source/content/media/nsBuiltinDecoderStateMachine.cpp#350
http://mxr.mozilla.org/mozilla-central/source/content/media/nsBuiltinDecoderStateMachine.cpp#408
http://mxr.mozilla.org/mozilla-central/source/content/media/nsBuiltinDecoderStateMachine.cpp#1413
http://mxr.mozilla.org/mozilla-central/source/parser/htmlparser/src/nsParser.cpp#535
http://mxr.mozilla.org/mozilla-central/source/testing/mochitest/ssltunnel/ssltunnel.cpp#1348
http://mxr.mozilla.org/mozilla-central/source/js/src/jslock.cpp#595
http://mxr.mozilla.org/mozilla-central/source/js/src/xpconnect/src/xpcjsruntime.cpp#1078
http://mxr.mozilla.org/mozilla-central/source/xpcom/glue/BlockingResourceBase.cpp#372
http://mxr.mozilla.org/mozilla-central/source/xpcom/threads/TimerThread.cpp#375
http://mxr.mozilla.org/mozilla-central/source/tools/trace-malloc/spacetrace.c#5154
http://mxr.mozilla.org/mozilla-central/source/security/nss/lib/util/nssrwlk.c#196
http://mxr.mozilla.org/mozilla-central/source/security/nss/lib/util/nssrwlk.c#265
http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/nsDNSService2.cpp#532
http://mxr.mozilla.org/mozilla-central/source/js/src/xpconnect/src/xpcprivate.h#361
http://mxr.mozilla.org/mozilla-central/source/xpcom/glue/BlockingResourceBase.cpp#345
http://mxr.mozilla.org/mozilla-central/source/security/nss/lib/util/nssilock.c#489
See Also: → 1536316
Depends on: 1538630
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.