Closed
Bug 640935
Opened 15 years ago
Closed 15 years ago
Data race on global var vp8_build_intra_predictors_mby_ptr
Categories
(Core :: Audio/Video, defect)
Tracking
()
RESOLVED
FIXED
mozilla5
People
(Reporter: jseward, Assigned: derf)
Details
Attachments
(1 file)
22.76 KB,
patch
|
cpearce
:
review+
|
Details | Diff | Splinter Review |
TEST_PATH=content/media (test_bug495145.html, perhaps)
When running on latest hacked Helgrind.
Start reading right at the bottom of the report and work up, so as to
avoid getting swamped in detail. The level of detail produced by
Helgrind is increasing. It now shows the locks held by the two
conflicting threads, which makes it easier to make sense of the races.
Note that although both threads hold one lock during the conflicting
access, it is not the same lock. That may or may not be related to
bug 640405 comment 1, which documents another "we don't agree on which
lock to use" phenomenon in the media framework.
172 INFO TEST-PASS | /tests/content/media/test/test_bug495145.html | Playing after pause while ended works for small-shot.ogg#1
----------------------------------------------------------------
Thread #179 was created
at 0xB2426CE: clone (/build/buildd/eglibc-2.11.1/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:77)
by 0x4E37172: pthread_create@@GLIBC_2.2.5 (/build/buildd/eglibc-2.11.1/nptl/../nptl/sysdeps/pthread/createthread.c:75)
by 0x4C2CA4A: pthread_create_WRK (/home/sewardj/VgTRUNK/hgde3/helgrind/hg_intercepts.c:257)
by 0x4C2CB5E: pthread_create@* (/home/sewardj/VgTRUNK/hgde3/helgrind/hg_intercepts.c:288)
by 0x79ABE33: _PR_CreateThread (nsprpub/pr/src/pthreads/ptthread.c:432)
by 0x79AC084: PR_CreateThread (nsprpub/pr/src/pthreads/ptthread.c:515)
by 0x63375AA: nsThread::Init() (xpcom/threads/nsThread.cpp:355)
by 0x63385CD: nsThreadManager::NewThread(unsigned int, nsIThread**) (xpcom/threads/nsThreadManager.cpp:249)
by 0x62F6CD0: NS_NewThread_P(nsIThread**, nsIRunnable*) (ff-opt/xpcom/build/nsThreadUtils.cpp:74)
by 0x5CA629D: nsBuiltinDecoder::StartStateMachineThread() (content/media/nsBuiltinDecoder.cpp:250)
by 0x5CA65B5: nsBuiltinDecoder::Load(nsMediaStream*, nsIStreamListener**, nsMediaDecoder*) (content/media/nsBuiltinDecoder.cpp:228)
by 0x5AC5070: nsHTMLMediaElement::InitializeDecoderForChannel(nsIChannel*, nsIStreamListener**) (content/html/content/src/nsHTMLMediaElement.cpp:1863)
by 0x5AC5183: nsHTMLMediaElement::MediaLoadListener::OnStartRequest(nsIRequest*, nsISupports*) (content/html/content/src/nsHTMLMediaElement.cpp:304)
by 0x56DB6A2: nsHttpChannel::CallOnStartRequest() (netwerk/protocol/http/nsHttpChannel.cpp:770)
by 0x56DB98A: nsHttpChannel::ContinueOnStartRequest3(unsigned int) (netwerk/protocol/http/nsHttpChannel.cpp:3937)
by 0x56DB9AD: nsHttpChannel::ContinueOnStartRequest2(unsigned int) (netwerk/protocol/http/nsHttpChannel.cpp:3928)
by 0x56DEEEE: nsHttpChannel::OnStartRequest(nsIRequest*, nsISupports*) (netwerk/protocol/http/nsHttpChannel.cpp:3901)
by 0x5652753: nsInputStreamPump::OnStateStart() (netwerk/base/src/nsInputStreamPump.cpp:441)
by 0x5652BF4: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (netwerk/base/src/nsInputStreamPump.cpp:397)
by 0x631F119: nsInputStreamReadyEvent::Run() (xpcom/io/nsStreamUtils.cpp:112)
Thread #178 was created
at 0xB2426CE: clone (/build/buildd/eglibc-2.11.1/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:77)
by 0x4E37172: pthread_create@@GLIBC_2.2.5 (/build/buildd/eglibc-2.11.1/nptl/../nptl/sysdeps/pthread/createthread.c:75)
by 0x4C2CA4A: pthread_create_WRK (/home/sewardj/VgTRUNK/hgde3/helgrind/hg_intercepts.c:257)
by 0x4C2CB5E: pthread_create@* (/home/sewardj/VgTRUNK/hgde3/helgrind/hg_intercepts.c:288)
by 0x79ABE33: _PR_CreateThread (nsprpub/pr/src/pthreads/ptthread.c:432)
by 0x79AC084: PR_CreateThread (nsprpub/pr/src/pthreads/ptthread.c:515)
by 0x63375AA: nsThread::Init() (xpcom/threads/nsThread.cpp:355)
by 0x63385CD: nsThreadManager::NewThread(unsigned int, nsIThread**) (xpcom/threads/nsThreadManager.cpp:249)
by 0x62F6CD0: NS_NewThread_P(nsIThread**, nsIRunnable*) (ff-opt/xpcom/build/nsThreadUtils.cpp:74)
by 0x5CA629D: nsBuiltinDecoder::StartStateMachineThread() (content/media/nsBuiltinDecoder.cpp:250)
by 0x5CA65B5: nsBuiltinDecoder::Load(nsMediaStream*, nsIStreamListener**, nsMediaDecoder*) (content/media/nsBuiltinDecoder.cpp:228)
by 0x5AC5070: nsHTMLMediaElement::InitializeDecoderForChannel(nsIChannel*, nsIStreamListener**) (content/html/content/src/nsHTMLMediaElement.cpp:1863)
by 0x5AC5183: nsHTMLMediaElement::MediaLoadListener::OnStartRequest(nsIRequest*, nsISupports*) (content/html/content/src/nsHTMLMediaElement.cpp:304)
by 0x56DB6A2: nsHttpChannel::CallOnStartRequest() (netwerk/protocol/http/nsHttpChannel.cpp:770)
by 0x56DB98A: nsHttpChannel::ContinueOnStartRequest3(unsigned int) (netwerk/protocol/http/nsHttpChannel.cpp:3937)
by 0x56DB9AD: nsHttpChannel::ContinueOnStartRequest2(unsigned int) (netwerk/protocol/http/nsHttpChannel.cpp:3928)
by 0x56DEEEE: nsHttpChannel::OnStartRequest(nsIRequest*, nsISupports*) (netwerk/protocol/http/nsHttpChannel.cpp:3901)
by 0x5652753: nsInputStreamPump::OnStateStart() (netwerk/base/src/nsInputStreamPump.cpp:441)
by 0x5652BF4: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (netwerk/base/src/nsInputStreamPump.cpp:397)
by 0x631F119: nsInputStreamReadyEvent::Run() (xpcom/io/nsStreamUtils.cpp:112)
Lock at 0x1F30A5B8 was first observed
at 0x4C2C8C4: pthread_mutex_init (/home/sewardj/VgTRUNK/hgde3/helgrind/hg_intercepts.c:430)
by 0x79A5ED8: PR_NewMonitor (nsprpub/pr/src/pthreads/ptsynch.c:517)
by 0x5CAAF78: nsBuiltinDecoderReader::nsBuiltinDecoderReader(nsBuiltinDecoder*) (ff-opt/content/media/../../dist/include/mozilla/Monitor.h:81)
by 0x5CC131E: nsWebMReader::nsWebMReader(nsBuiltinDecoder*) (content/media/webm/nsWebMReader.cpp:142)
by 0x5CC0386: nsWebMDecoder::CreateStateMachine() (content/media/webm/nsWebMDecoder.cpp:46)
by 0x5CA64E8: nsBuiltinDecoder::Load(nsMediaStream*, nsIStreamListener**, nsMediaDecoder*) (content/media/nsBuiltinDecoder.cpp:209)
by 0x5AC5070: nsHTMLMediaElement::InitializeDecoderForChannel(nsIChannel*, nsIStreamListener**) (content/html/content/src/nsHTMLMediaElement.cpp:1863)
by 0x5AC5183: nsHTMLMediaElement::MediaLoadListener::OnStartRequest(nsIRequest*, nsISupports*) (content/html/content/src/nsHTMLMediaElement.cpp:304)
by 0x56DB6A2: nsHttpChannel::CallOnStartRequest() (netwerk/protocol/http/nsHttpChannel.cpp:770)
by 0x56DB98A: nsHttpChannel::ContinueOnStartRequest3(unsigned int) (netwerk/protocol/http/nsHttpChannel.cpp:3937)
by 0x56DB9AD: nsHttpChannel::ContinueOnStartRequest2(unsigned int) (netwerk/protocol/http/nsHttpChannel.cpp:3928)
by 0x56DEEEE: nsHttpChannel::OnStartRequest(nsIRequest*, nsISupports*) (netwerk/protocol/http/nsHttpChannel.cpp:3901)
by 0x5652753: nsInputStreamPump::OnStateStart() (netwerk/base/src/nsInputStreamPump.cpp:441)
by 0x5652BF4: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (netwerk/base/src/nsInputStreamPump.cpp:397)
by 0x631F119: nsInputStreamReadyEvent::Run() (xpcom/io/nsStreamUtils.cpp:112)
by 0x6336FEC: nsThread::ProcessNextEvent(int, int*) (xpcom/threads/nsThread.cpp:642)
by 0x62F6B19: NS_ProcessNextEvent_P(nsIThread*, int) (ff-opt/xpcom/build/nsThreadUtils.cpp:250)
by 0x6337ACE: nsThread::Shutdown() (xpcom/threads/nsThread.cpp:498)
by 0x5CAA6CD: ShutdownThreadEvent::Run() (ff-opt/content/media/wave/../../../dist/include/nsMediaDecoder.h:73)
by 0x6336FEC: nsThread::ProcessNextEvent(int, int*) (xpcom/threads/nsThread.cpp:642)
Lock at 0x1E3C2178 was first observed
at 0x4C2C8C4: pthread_mutex_init (/home/sewardj/VgTRUNK/hgde3/helgrind/hg_intercepts.c:430)
by 0x79A5ED8: PR_NewMonitor (nsprpub/pr/src/pthreads/ptsynch.c:517)
by 0x5CAAF78: nsBuiltinDecoderReader::nsBuiltinDecoderReader(nsBuiltinDecoder*) (ff-opt/content/media/../../dist/include/mozilla/Monitor.h:81)
by 0x5CC131E: nsWebMReader::nsWebMReader(nsBuiltinDecoder*) (content/media/webm/nsWebMReader.cpp:142)
by 0x5CC0386: nsWebMDecoder::CreateStateMachine() (content/media/webm/nsWebMDecoder.cpp:46)
by 0x5CA64E8: nsBuiltinDecoder::Load(nsMediaStream*, nsIStreamListener**, nsMediaDecoder*) (content/media/nsBuiltinDecoder.cpp:209)
by 0x5AC5070: nsHTMLMediaElement::InitializeDecoderForChannel(nsIChannel*, nsIStreamListener**) (content/html/content/src/nsHTMLMediaElement.cpp:1863)
by 0x5AC5183: nsHTMLMediaElement::MediaLoadListener::OnStartRequest(nsIRequest*, nsISupports*) (content/html/content/src/nsHTMLMediaElement.cpp:304)
by 0x56DB6A2: nsHttpChannel::CallOnStartRequest() (netwerk/protocol/http/nsHttpChannel.cpp:770)
by 0x56DB98A: nsHttpChannel::ContinueOnStartRequest3(unsigned int) (netwerk/protocol/http/nsHttpChannel.cpp:3937)
by 0x56DB9AD: nsHttpChannel::ContinueOnStartRequest2(unsigned int) (netwerk/protocol/http/nsHttpChannel.cpp:3928)
by 0x56DEEEE: nsHttpChannel::OnStartRequest(nsIRequest*, nsISupports*) (netwerk/protocol/http/nsHttpChannel.cpp:3901)
by 0x5652753: nsInputStreamPump::OnStateStart() (netwerk/base/src/nsInputStreamPump.cpp:441)
by 0x5652BF4: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*) (netwerk/base/src/nsInputStreamPump.cpp:397)
by 0x631F119: nsInputStreamReadyEvent::Run() (xpcom/io/nsStreamUtils.cpp:112)
by 0x6336FEC: nsThread::ProcessNextEvent(int, int*) (xpcom/threads/nsThread.cpp:642)
by 0x62F6B19: NS_ProcessNextEvent_P(nsIThread*, int) (ff-opt/xpcom/build/nsThreadUtils.cpp:250)
by 0x6337ACE: nsThread::Shutdown() (xpcom/threads/nsThread.cpp:498)
by 0x5CAA6CD: ShutdownThreadEvent::Run() (ff-opt/content/media/wave/../../../dist/include/nsMediaDecoder.h:73)
by 0x6336FEC: nsThread::ProcessNextEvent(int, int*) (xpcom/threads/nsThread.cpp:642)
Possible data race during write of size 8 at 0x7170418 by thread #179
Locks held: 1: 0x1F30A5B8
at 0x5CC4B83: vp8_machine_specific_config (media/libvpx/vp8/common/generic/systemdependent.c:77)
by 0x5CC4CCC: vp8_create_common (media/libvpx/vp8/common/alloccommon.c:166)
by 0x5CD3DBA: vp8dx_create_decompressor (media/libvpx/vp8/decoder/onyxd_if.c:110)
by 0x5CD6B3B: vp8_decode (media/libvpx/vp8/vp8_dx_iface.c:386)
by 0x5CD716A: vpx_codec_decode (media/libvpx/vpx/src/vpx_decoder.c:127)
by 0x5CC1A63: nsWebMReader::DecodeVideoFrame(int&, long) (content/media/webm/nsWebMReader.cpp:690)
by 0x5CAC937: nsBuiltinDecoderReader::DecodeVideoFrame() (content/media/nsBuiltinDecoderReader.h:541)
by 0x5CACA04: VideoData* nsBuiltinDecoderReader::DecodeToFirstData<VideoData>(int (nsBuiltinDecoderReader::*)(), MediaQueue<VideoData>&) (content/media/nsBuiltinDecoderReader.cpp:366)
by 0x5CAB32C: nsBuiltinDecoderReader::FindStartTime(long, long&) (content/media/nsBuiltinDecoderReader.cpp:328)
by 0x5CA711F: nsBuiltinDecoderStateMachine::FindStartTime() (content/media/nsBuiltinDecoderStateMachine.cpp:1452)
by 0x5CA9ECE: nsBuiltinDecoderStateMachine::Run() (content/media/nsBuiltinDecoderStateMachine.cpp:989)
by 0x6336FEC: nsThread::ProcessNextEvent(int, int*) (xpcom/threads/nsThread.cpp:642)
by 0x62F6B19: NS_ProcessNextEvent_P(nsIThread*, int) (ff-opt/xpcom/build/nsThreadUtils.cpp:250)
by 0x63376FC: nsThread::ThreadFunc(void*) (xpcom/threads/nsThread.cpp:281)
by 0x79ABACC: _pt_root (nsprpub/pr/src/pthreads/ptthread.c:189)
by 0x4C2CBE7: mythread_wrapper (/home/sewardj/VgTRUNK/hgde3/helgrind/hg_intercepts.c:221)
by 0x4E369C9: start_thread (/build/buildd/eglibc-2.11.1/nptl/pthread_create.c:300)
by 0xB24270C: clone (/build/buildd/eglibc-2.11.1/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:112)
This conflicts with a previous write of size 8 by thread #178
Locks held: 1: 0x1E3C2178
at 0x5CC4B83: vp8_machine_specific_config (media/libvpx/vp8/common/generic/systemdependent.c:77)
by 0x5CC4CCC: vp8_create_common (media/libvpx/vp8/common/alloccommon.c:166)
by 0x5CD3DBA: vp8dx_create_decompressor (media/libvpx/vp8/decoder/onyxd_if.c:110)
by 0x5CD6B3B: vp8_decode (media/libvpx/vp8/vp8_dx_iface.c:386)
by 0x5CD716A: vpx_codec_decode (media/libvpx/vpx/src/vpx_decoder.c:127)
by 0x5CC1A63: nsWebMReader::DecodeVideoFrame(int&, long) (content/media/webm/nsWebMReader.cpp:690)
by 0x5CAC937: nsBuiltinDecoderReader::DecodeVideoFrame() (content/media/nsBuiltinDecoderReader.h:541)
by 0x5CACA04: VideoData* nsBuiltinDecoderReader::DecodeToFirstData<VideoData>(int (nsBuiltinDecoderReader::*)(), MediaQueue<VideoData>&) (content/media/nsBuiltinDecoderReader.cpp:366)
Location 0x7170418 is 0 bytes inside global var "vp8_build_intra_predictors_mby_ptr"
declared at systemdependent.c:23
----------------------------------------------------------------
Assignee | ||
Comment 1•15 years ago
|
||
This should now be fixed upstream:
https://review.webmproject.org/#change,1961
I'll prepare a patch against our local copy.
Assignee | ||
Comment 2•15 years ago
|
||
Reporter | ||
Comment 3•15 years ago
|
||
(In reply to comment #2)
> Port of upstream change 1961
With this in place, I can no longer repro the race. +1 from me therefore.
note (just in case)
is much easier to reproduce the race with this
TEST_PATH=content/media/test/test_seek.html
than with test_bug495145.html as stated in comment #0.
Updated•15 years ago
|
Attachment #522927 -
Flags: review?(chris) → review+
Comment 4•15 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla2.2
You need to log in
before you can comment on or make changes to this bug.
Description
•