Closed Bug 903225 Opened 11 years ago Closed 10 years ago

test_dataChannel_basicAudioVideo.html, test_peerConnection_basicAudioVideoCombined.html OOM crash in mozalloc_abort layers::BufferRecycleBin::GetBuffer

Categories

(Core :: WebRTC: Audio/Video, defect)

x86_64
Linux
defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: karlt, Unassigned)

References

Details

(Keywords: intermittent-failure)

https://tbpl.mozilla.org/php/getParsedLog.php?id=26329448&tree=Try&full=1#error0
is for m-c revision fd4cf30428b0.

https://tbpl.mozilla.org/php/getParsedLog.php?id=26321197&tree=Try&full=1#error0
https://tbpl.mozilla.org/php/getParsedLog.php?id=26306785&full=1&branch=try#error0
are with some try changes.

Bug 903205 means the stacks don't have libxul symbols.  addr2line on the stack scanned addresses gives something like this stack of function names for the crashing thread:

mozilla::layers::BufferRecycleBin::GetBuffer(unsigned int)
mozilla::layers::PlanarYCbCrImage::CopyData(mozilla::layers::PlanarYCbCrImage::Data const&)
mozilla::MediaEngineDefaultVideoSource::Notify(nsITimer*)
nsTimerImpl::Fire()
nsTimerEvent::Run()
nsThread::ProcessNextEvent(bool, bool*)
NS_ProcessNextEvent(nsIThread*, bool)
nsThread::ThreadFunc(void*)

Looks like some pulse-shm maps taking up a good part of available address space.

16:57:46     INFO -  0x544e3000 - 0x584e3fff  pulse-shm-1104837501  ???
16:57:46     INFO -  0x5a4e8000 - 0x5e4e8fff  pulse-shm-1355179424  ???
16:57:46     INFO -  0x66cec000 - 0x6acecfff  pulse-shm-2052963318  ???
16:57:46     INFO -  0x6c4f0000 - 0x704f0fff  pulse-shm-1752751976  ???
16:57:46     INFO -  0x704f1000 - 0x744f1fff  pulse-shm-3794367918  ???
16:57:46     INFO -  0x744f2000 - 0x784f2fff  pulse-shm-2746549676  ???
16:57:46     INFO -  0x7bcfa000 - 0x7fcfafff  pulse-shm-540820186  ???
16:57:46     INFO -  0x7fcfb000 - 0x83cfbfff  pulse-shm-2695932417  ???

I tried to find interesting symbols in the other threads to hint at what they did.  These are from stack scanning and so not totally reliable.
From the 26321197 log.

Thread 1
libglib-2.0.so
libdconfsettings.so

Thread 2
libglib-2.0.so
libgio-2.0.so

Thread 3
base::Thread::ThreadMain()

Thread 4
nsSocketTransportService::Run()

Thread 5
js::GCHelperThread::threadMain(void*)

Thread 6
js::SourceCompressorThread::compressorThread(void*)

Thread 7
pulse-shm-3453953183 + 0x18581c8
WatchdogMain(void*)

Thread 8
mozilla::HangMonitor::ThreadMain(void*)

Thread 9
nsThreadStartupEvent::~nsThreadStartupEvent()

Thread 10
TimerThread::Run()
nsThreadStartupEvent::~nsThreadStartupEvent()

Thread 11
nsPSMBackgroundThread::nsThreadRunner(void*)

Thread 12, 13, 14, 15
mozilla::dom::workers::WorkerPrivate::DoRunLoop(JSContext*)

Thread 16
nsThreadStartupEvent::~nsThreadStartupEvent()

Thread 17
pulse-shm-999921958 + 0x381bff4
nsThreadStartupEvent::~nsThreadStartupEvent()

Thread 18
mozilla::dom::workers::WorkerPrivate::DoRunLoop(JSContext*)

Thread 19, 20
nsThreadStartupEvent::~nsThreadStartupEvent()

Thread 21
mozilla::dom::DOMStorageDBThread::ThreadFunc()

Thread 22, 24, 25, 27
nsThreadStartupEvent::~nsThreadStartupEvent()

Thread 23
nsRunnable::Release()

Thread 26
google_breakpad::CrashGenerationServer::ThreadMain(void*)

Thread 29
cprGetMessage
CCApp_task

Thread 30
sip_platform_task_loop

Thread 31
sip_platform_task_msgqwait

Thread 32
GSMTask

Thread 33
mozilla::layers::BufferRecycleBin::RecycleBuffer(unsigned char*, unsigned int)
mozilla::StreamBuffer::ForgetUpTo(long long)
mozilla::MediaStreamGraphImpl::UpdateCurrentTime()

Thread 34
?

Thread 35
sctp_iterator_thread

Thread 36,37,38
?

Thread 39, 40
libpulse.so

Thread 41
webrtc::TraceImpl::Process()
webrtc::ThreadPosix::Run()

Thread 42
webrtc::ProcessThreadImpl::Process()
webrtc::ThreadPosix::Run()

Thread 43, 44
libpulse.so

Thread 45
webrtc::ProcessThreadImpl::Process()
webrtc::ThreadPosix::Run()

Thread 46
webrtc::EventPosix::Set()
webrtc::ThreadPosix::Run()

Thread 47
webrtc::VideoCodingModuleImpl::Decode(unsigned short)

Thread 48
webrtc::EventPosix::Set()
webrtc::ThreadPosix::Run()

Thread 49
webrtc::ThreadPosix::Run()

Thread 50
webrtc::ProcessThreadImpl::Process()
webrtc::ThreadPosix::Run()

Thread 51
webrtc::EventPosix::Set()
webrtc::ThreadPosix::Run()

Thread 52
libpulse.so

Thread 53
webrtc::ProcessThreadImpl::Process()
webrtc::ThreadPosix::Run()

Thread 54, 55
libpulse.so

Thread 56
webrtc::ProcessThreadImpl::Process()
webrtc::ThreadPosix::Run()

Thread 57
webrtc::EventPosix::Set()
webrtc::ThreadPosix::Run()

Thread 58
webrtc::VideoCodingModuleImpl::Decode(unsigned short)

Thread 59
webrtc::EventPosix::Set()
webrtc::ThreadPosix::Run()

Thread 60
webrtc::ThreadPosix::Run()

Thread 61
webrtc::ProcessThreadImpl::Process()
webrtc::ThreadPosix::Run()

Thread 62
webrtc::EventPosix::Set()
webrtc::ThreadPosix::Run()

Thread 63
libpulse.so

I don't see any info in the logs on the thread stack sizes.
We haven't seen this since Karl's initial report.
Status: NEW → RESOLVED
Closed: 10 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.