Closed
Bug 1241880
Opened 10 years ago
Closed 9 years ago
Twice reported memory blocks in DMD regarding Web Audio
Categories
(Core :: Web Audio, defect, P3)
Core
Web Audio
Tracking
()
RESOLVED
FIXED
People
(Reporter: jujjyl, Unassigned)
Details
STR:
1. Build Firefox with DMD enabled
2. Visit http://beta.unity3d.com/jonas/DT2/
3. Open either level in the game
4. Esc out from fullscreen, and keep the tab open, but open a new about:memory tab
5. Tap the Free memory: GC/CC/Minimize memory usage buttons
6. Take a DMD capture.
Observed: The DMD log shows the following memory blocks as being reported twice:
Twice-reported {
10 blocks in heap block record 1 of 3
1,490,944 bytes (1,464,504 requested / 26,440 slop)
Individual block sizes: 258,048; 221,184; 167,936; 151,552; 135,168; 131,072; 126,976; 114,688; 110,592; 73,728
0.21% of the heap (0.21% cumulative)
55.49% of twice-reported (55.49% cumulative)
Allocated at {
#01: malloc_impl (d:\gecko-dev\memory\build\replace_malloc.c:153)
#02: js_malloc (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\js\utility.h:222)
#03: js_pod_malloc<float> (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\js\utility.h:408)
#04: mozilla::ThreadSharedFloatArrayBufferList::Create (d:\gecko-dev\dom\media\webaudio\audionodeengine.cpp:24)
#05: mozilla::MediaDecodeTask::FinishDecode (d:\gecko-dev\dom\media\webaudio\mediabufferdecoder.cpp:370)
#06: mozilla::MediaDecodeTask::SampleNotDecoded (d:\gecko-dev\dom\media\webaudio\mediabufferdecoder.cpp:332)
#07: mozilla::MozPromise<enum mozilla::TrackInfo::TrackType,enum mozilla::MediaDataDecoder::DecoderFailureReason,1>::InvokeCallbackMethod<mozilla::H264Converter,void (__cdecl mozilla::H264Converter::*)(enum mozilla::TrackInfo::TrackType) __ptr64,enum mozilla:: (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\mozilla\mozpromise.h:436)
#08: mozilla::MozPromise<RefPtr<mozilla::MediaData>,enum mozilla::MediaDecoderReader::NotDecodedReason,1>::MethodThenValue<mozilla::MediaDecodeTask,void (__cdecl mozilla::MediaDecodeTask::*)(mozilla::MediaData * __ptr64) __ptr64,void (__cdecl mozilla::MediaDec (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\mozilla\mozpromise.h:487)
#09: mozilla::MozPromise<RefPtr<mozilla::MediaData>,enum mozilla::MediaDecoderReader::NotDecodedReason,1>::ThenValueBase::DoResolveOrReject (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\mozilla\mozpromise.h:385)
#10: mozilla::MozPromise<RefPtr<mozilla::MediaData>,enum mozilla::MediaDecoderReader::NotDecodedReason,1>::ThenValueBase::ResolveOrRejectRunnable::Run (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\mozilla\mozpromise.h:319)
#11: mozilla::AutoTaskDispatcher::TaskGroupRunnable::Run (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\mozilla\taskdispatcher.h:183)
#12: mozilla::TaskQueue::Runner::Run (d:\gecko-dev\xpcom\threads\taskqueue.cpp:171)
#13: nsThreadPool::Run (d:\gecko-dev\xpcom\threads\nsthreadpool.cpp:223)
#14: nsThread::ProcessNextEvent (d:\gecko-dev\xpcom\threads\nsthread.cpp:989)
#15: NS_ProcessNextEvent (d:\gecko-dev\xpcom\glue\nsthreadutils.cpp:297)
#16: mozilla::ipc::MessagePumpForNonMainThreads::Run (d:\gecko-dev\ipc\glue\messagepump.cpp:326)
#17: MessageLoop::RunInternal (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:235)
#18: MessageLoop::RunHandler (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:228)
#19: MessageLoop::Run (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:202)
#20: nsThread::ThreadFunc (d:\gecko-dev\xpcom\threads\nsthread.cpp:403)
#21: _PR_NativeRunThread (d:\gecko-dev\nsprpub\pr\src\threads\combined\pruthr.c:419)
#22: pr_root (d:\gecko-dev\nsprpub\pr\src\md\windows\w95thred.c:91)
#23: crt_at_quick_exit[ucrtbase +0x6be1d]
#24: BaseThreadInitThunk[KERNEL32 +0x18102]
}
Reported at {
#01: mozilla::dmd::DMDFuncs::Report (d:\gecko-dev\memory\replace\dmd\dmd.cpp:1642)
#02: mozilla::dmd::Report (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\dmd.h:110)
#03: mozilla::AudioQueueMemoryFunctor::MallocSizeOf (d:\gecko-dev\dom\media\mediadecoderreader.cpp:54)
#04: mozilla::ThreadSharedFloatArrayBufferList::Storage::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:67)
#05: mozilla::ThreadSharedFloatArrayBufferList::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:119)
#06: mozilla::ThreadSharedFloatArrayBufferList::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:127)
#07: mozilla::dom::AudioBuffer::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffer.cpp:298)
#08: mozilla::dom::AudioBufferSourceNode::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffersourcenode.cpp:619)
#09: mozilla::dom::AudioBufferSourceNode::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffersourcenode.cpp:630)
#10: mozilla::AudioNodeEngine::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:398)
#11: mozilla::AudioNodeStream::SizeOfAudioNodesIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodestream.cpp:126)
#12: mozilla::MediaStreamGraphImpl::MaybeProduceMemoryReport (d:\gecko-dev\dom\media\mediastreamgraph.cpp:1214)
#13: mozilla::MediaStreamGraphImpl::OneIteration (d:\gecko-dev\dom\media\mediastreamgraph.cpp:1255)
#14: mozilla::ThreadedDriver::RunThread (d:\gecko-dev\dom\media\graphdriver.cpp:335)
#15: mozilla::MediaStreamGraphInitThreadRunnable::Run (d:\gecko-dev\dom\media\graphdriver.cpp:230)
#16: nsThread::ProcessNextEvent (d:\gecko-dev\xpcom\threads\nsthread.cpp:989)
#17: NS_ProcessNextEvent (d:\gecko-dev\xpcom\glue\nsthreadutils.cpp:297)
#18: mozilla::ipc::MessagePumpForNonMainThreads::Run (d:\gecko-dev\ipc\glue\messagepump.cpp:326)
#19: MessageLoop::RunInternal (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:235)
#20: MessageLoop::RunHandler (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:228)
#21: MessageLoop::Run (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:202)
#22: nsThread::ThreadFunc (d:\gecko-dev\xpcom\threads\nsthread.cpp:403)
#23: _PR_NativeRunThread (d:\gecko-dev\nsprpub\pr\src\threads\combined\pruthr.c:419)
#24: pr_root (d:\gecko-dev\nsprpub\pr\src\md\windows\w95thred.c:91)
}
Reported again at {
#01: mozilla::dmd::DMDFuncs::Report (d:\gecko-dev\memory\replace\dmd\dmd.cpp:1642)
#02: mozilla::dmd::Report (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\dmd.h:110)
#03: mozilla::AudioQueueMemoryFunctor::MallocSizeOf (d:\gecko-dev\dom\media\mediadecoderreader.cpp:54)
#04: mozilla::ThreadSharedFloatArrayBufferList::Storage::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:67)
#05: mozilla::ThreadSharedFloatArrayBufferList::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:119)
#06: mozilla::ThreadSharedFloatArrayBufferList::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:127)
#07: mozilla::dom::AudioBuffer::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffer.cpp:298)
#08: mozilla::dom::AudioBufferSourceNode::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffersourcenode.cpp:619)
#09: mozilla::dom::AudioBufferSourceNode::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffersourcenode.cpp:630)
#10: mozilla::AudioNodeEngine::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:398)
#11: mozilla::AudioNodeStream::SizeOfAudioNodesIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodestream.cpp:126)
#12: mozilla::MediaStreamGraphImpl::MaybeProduceMemoryReport (d:\gecko-dev\dom\media\mediastreamgraph.cpp:1214)
#13: mozilla::MediaStreamGraphImpl::OneIteration (d:\gecko-dev\dom\media\mediastreamgraph.cpp:1255)
#14: mozilla::ThreadedDriver::RunThread (d:\gecko-dev\dom\media\graphdriver.cpp:335)
#15: mozilla::MediaStreamGraphInitThreadRunnable::Run (d:\gecko-dev\dom\media\graphdriver.cpp:230)
#16: nsThread::ProcessNextEvent (d:\gecko-dev\xpcom\threads\nsthread.cpp:989)
#17: NS_ProcessNextEvent (d:\gecko-dev\xpcom\glue\nsthreadutils.cpp:297)
#18: mozilla::ipc::MessagePumpForNonMainThreads::Run (d:\gecko-dev\ipc\glue\messagepump.cpp:326)
#19: MessageLoop::RunInternal (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:235)
#20: MessageLoop::RunHandler (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:228)
#21: MessageLoop::Run (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:202)
#22: nsThread::ThreadFunc (d:\gecko-dev\xpcom\threads\nsthread.cpp:403)
#23: _PR_NativeRunThread (d:\gecko-dev\nsprpub\pr\src\threads\combined\pruthr.c:419)
#24: pr_root (d:\gecko-dev\nsprpub\pr\src\md\windows\w95thred.c:91)
}
}
Twice-reported {
2 blocks in heap block record 2 of 3
651,264 bytes (649,472 requested / 1,792 slop)
Individual block sizes: 487,424; 163,840
0.09% of the heap (0.30% cumulative)
24.24% of twice-reported (79.73% cumulative)
Allocated at {
#01: malloc_impl (d:\gecko-dev\memory\build\replace_malloc.c:153)
#02: js_malloc (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\js\utility.h:222)
#03: js_pod_malloc<float> (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\js\utility.h:408)
#04: mozilla::ThreadSharedFloatArrayBufferList::Create (d:\gecko-dev\dom\media\webaudio\audionodeengine.cpp:24)
#05: mozilla::MediaDecodeTask::FinishDecode (d:\gecko-dev\dom\media\webaudio\mediabufferdecoder.cpp:370)
#06: mozilla::MediaDecodeTask::SampleNotDecoded (d:\gecko-dev\dom\media\webaudio\mediabufferdecoder.cpp:332)
#07: mozilla::MozPromise<enum mozilla::TrackInfo::TrackType,enum mozilla::MediaDataDecoder::DecoderFailureReason,1>::InvokeCallbackMethod<mozilla::H264Converter,void (__cdecl mozilla::H264Converter::*)(enum mozilla::TrackInfo::TrackType) __ptr64,enum mozilla:: (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\mozilla\mozpromise.h:436)
#08: mozilla::MozPromise<RefPtr<mozilla::MediaData>,enum mozilla::MediaDecoderReader::NotDecodedReason,1>::MethodThenValue<mozilla::MediaDecodeTask,void (__cdecl mozilla::MediaDecodeTask::*)(mozilla::MediaData * __ptr64) __ptr64,void (__cdecl mozilla::MediaDec (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\mozilla\mozpromise.h:487)
#09: mozilla::MozPromise<RefPtr<mozilla::MediaData>,enum mozilla::MediaDecoderReader::NotDecodedReason,1>::ThenValueBase::DoResolveOrReject (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\mozilla\mozpromise.h:385)
#10: mozilla::MozPromise<RefPtr<mozilla::MediaData>,enum mozilla::MediaDecoderReader::NotDecodedReason,1>::ThenValueBase::ResolveOrRejectRunnable::Run (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\mozilla\mozpromise.h:319)
#11: mozilla::AutoTaskDispatcher::TaskGroupRunnable::Run (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\mozilla\taskdispatcher.h:183)
#12: mozilla::TaskQueue::Runner::Run (d:\gecko-dev\xpcom\threads\taskqueue.cpp:171)
#13: nsThreadPool::Run (d:\gecko-dev\xpcom\threads\nsthreadpool.cpp:223)
#14: nsThread::ProcessNextEvent (d:\gecko-dev\xpcom\threads\nsthread.cpp:989)
#15: NS_ProcessNextEvent (d:\gecko-dev\xpcom\glue\nsthreadutils.cpp:297)
#16: mozilla::ipc::MessagePumpForNonMainThreads::Run (d:\gecko-dev\ipc\glue\messagepump.cpp:356)
#17: MessageLoop::RunInternal (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:235)
#18: MessageLoop::RunHandler (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:228)
#19: MessageLoop::Run (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:202)
#20: nsThread::ThreadFunc (d:\gecko-dev\xpcom\threads\nsthread.cpp:403)
#21: _PR_NativeRunThread (d:\gecko-dev\nsprpub\pr\src\threads\combined\pruthr.c:419)
#22: pr_root (d:\gecko-dev\nsprpub\pr\src\md\windows\w95thred.c:91)
#23: crt_at_quick_exit[ucrtbase +0x6be1d]
#24: BaseThreadInitThunk[KERNEL32 +0x18102]
}
Reported at {
#01: mozilla::dmd::DMDFuncs::Report (d:\gecko-dev\memory\replace\dmd\dmd.cpp:1642)
#02: mozilla::dmd::Report (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\dmd.h:110)
#03: mozilla::AudioQueueMemoryFunctor::MallocSizeOf (d:\gecko-dev\dom\media\mediadecoderreader.cpp:54)
#04: mozilla::ThreadSharedFloatArrayBufferList::Storage::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:67)
#05: mozilla::ThreadSharedFloatArrayBufferList::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:119)
#06: mozilla::ThreadSharedFloatArrayBufferList::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:127)
#07: mozilla::dom::AudioBuffer::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffer.cpp:298)
#08: mozilla::dom::AudioBufferSourceNode::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffersourcenode.cpp:619)
#09: mozilla::dom::AudioBufferSourceNode::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffersourcenode.cpp:630)
#10: mozilla::AudioNodeEngine::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:398)
#11: mozilla::AudioNodeStream::SizeOfAudioNodesIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodestream.cpp:126)
#12: mozilla::MediaStreamGraphImpl::MaybeProduceMemoryReport (d:\gecko-dev\dom\media\mediastreamgraph.cpp:1214)
#13: mozilla::MediaStreamGraphImpl::OneIteration (d:\gecko-dev\dom\media\mediastreamgraph.cpp:1255)
#14: mozilla::ThreadedDriver::RunThread (d:\gecko-dev\dom\media\graphdriver.cpp:335)
#15: mozilla::MediaStreamGraphInitThreadRunnable::Run (d:\gecko-dev\dom\media\graphdriver.cpp:230)
#16: nsThread::ProcessNextEvent (d:\gecko-dev\xpcom\threads\nsthread.cpp:989)
#17: NS_ProcessNextEvent (d:\gecko-dev\xpcom\glue\nsthreadutils.cpp:297)
#18: mozilla::ipc::MessagePumpForNonMainThreads::Run (d:\gecko-dev\ipc\glue\messagepump.cpp:326)
#19: MessageLoop::RunInternal (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:235)
#20: MessageLoop::RunHandler (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:228)
#21: MessageLoop::Run (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:202)
#22: nsThread::ThreadFunc (d:\gecko-dev\xpcom\threads\nsthread.cpp:403)
#23: _PR_NativeRunThread (d:\gecko-dev\nsprpub\pr\src\threads\combined\pruthr.c:419)
#24: pr_root (d:\gecko-dev\nsprpub\pr\src\md\windows\w95thred.c:91)
}
Reported again at {
#01: mozilla::dmd::DMDFuncs::Report (d:\gecko-dev\memory\replace\dmd\dmd.cpp:1642)
#02: mozilla::dmd::Report (d:\gecko-dev\obj-x86_64-pc-mingw32\dist\include\dmd.h:110)
#03: mozilla::AudioQueueMemoryFunctor::MallocSizeOf (d:\gecko-dev\dom\media\mediadecoderreader.cpp:54)
#04: mozilla::ThreadSharedFloatArrayBufferList::Storage::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:67)
#05: mozilla::ThreadSharedFloatArrayBufferList::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:119)
#06: mozilla::ThreadSharedFloatArrayBufferList::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:127)
#07: mozilla::dom::AudioBuffer::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffer.cpp:298)
#08: mozilla::dom::AudioBufferSourceNode::SizeOfExcludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffersourcenode.cpp:619)
#09: mozilla::dom::AudioBufferSourceNode::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audiobuffersourcenode.cpp:630)
#10: mozilla::AudioNodeEngine::SizeOfIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodeengine.h:398)
#11: mozilla::AudioNodeStream::SizeOfAudioNodesIncludingThis (d:\gecko-dev\dom\media\webaudio\audionodestream.cpp:126)
#12: mozilla::MediaStreamGraphImpl::MaybeProduceMemoryReport (d:\gecko-dev\dom\media\mediastreamgraph.cpp:1214)
#13: mozilla::MediaStreamGraphImpl::OneIteration (d:\gecko-dev\dom\media\mediastreamgraph.cpp:1255)
#14: mozilla::ThreadedDriver::RunThread (d:\gecko-dev\dom\media\graphdriver.cpp:335)
#15: mozilla::MediaStreamGraphInitThreadRunnable::Run (d:\gecko-dev\dom\media\graphdriver.cpp:230)
#16: nsThread::ProcessNextEvent (d:\gecko-dev\xpcom\threads\nsthread.cpp:989)
#17: NS_ProcessNextEvent (d:\gecko-dev\xpcom\glue\nsthreadutils.cpp:297)
#18: mozilla::ipc::MessagePumpForNonMainThreads::Run (d:\gecko-dev\ipc\glue\messagepump.cpp:326)
#19: MessageLoop::RunInternal (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:235)
#20: MessageLoop::RunHandler (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:228)
#21: MessageLoop::Run (d:\gecko-dev\ipc\chromium\src\base\message_loop.cc:202)
#22: nsThread::ThreadFunc (d:\gecko-dev\xpcom\threads\nsthread.cpp:403)
#23: _PR_NativeRunThread (d:\gecko-dev\nsprpub\pr\src\threads\combined\pruthr.c:419)
#24: pr_root (d:\gecko-dev\nsprpub\pr\src\md\windows\w95thred.c:91)
}
}
Updated•10 years ago
|
Priority: -- → P3
Comment 1•10 years ago
|
||
I guess two different AudioBufferSourceNodes are sharing the same AudioBuffer.
I don't know what mechanism is typically used to report ref-counted objects. Perhaps diving the size by the refcount could produce sane usage info, but I don't know how to report that.
Comment 2•9 years ago
|
||
I fixed that in bug 1241096 by explicitly keeping track of AudioBuffer objects independently.
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•