Bug 172794 - Crash when calling getUserMedia on a machine with no audio output devices
Summary: Crash when calling getUserMedia on a machine with no audio output devices
Status: NEW
Alias: None
Product: WebKit
Classification: Unclassified
Component: Media (show other bugs)
Version: WebKit Nightly Build
Hardware: Mac macOS 10.12
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2017-05-31 20:42 PDT by Adam
Modified: 2018-11-15 15:57 PST (History)
5 users (show)

See Also:


Attachments
crash dump from webkit (92.06 KB, text/plain)
2017-05-31 20:42 PDT, Adam
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Adam 2017-05-31 20:42:12 PDT
Created attachment 311677 [details]
crash dump from webkit

On a machine that has no audio output devices (eg. in this case on a Travis build) I'm getting a crash every time I call getUserMedia. To work around this I installed Soundflower to add virtual audio output devices and then I no longer get the crash.

I have attached the crash dump. https://output.jsbin.com/qofomup is the page that I used to reproduce the crash.
Comment 1 Radar WebKit Bug Importer 2017-05-31 21:11:59 PDT
<rdar://problem/32504501>
Comment 2 Jon Lee 2017-06-04 16:04:42 PDT
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.JavaScriptCore      	0x0000000106228ed9 WTF::MediaTime::operator+(WTF::MediaTime const&) const + 505
1   com.apple.WebCore             	0x000000010219b38a WebCore::AudioSampleDataSource::pushSamplesInternal(AudioBufferList const&, WTF::MediaTime const&, unsigned long) + 266
2   com.apple.WebCore             	0x00000001021a0c78 WebCore::AudioTrackPrivateMediaStreamCocoa::audioSamplesAvailable(WTF::MediaTime const&, WebCore::PlatformAudioData const&, WebCore::AudioStreamDescription const&, unsigned long) + 920
3   com.apple.WebCore             	0x0000000102de0176 WebCore::RealtimeMediaSource::audioSamplesAvailable(WTF::MediaTime const&, WebCore::PlatformAudioData const&, WebCore::AudioStreamDescription const&, unsigned long) + 70
4   com.apple.WebCore             	0x0000000102d2a715 WebCore::MockRealtimeAudioSourceMac::emitSampleBuffers(unsigned int) + 117
5   com.apple.WebCore             	0x0000000102d2abd1 WebCore::MockRealtimeAudioSourceMac::render(double) + 769
6   com.apple.JavaScriptCore      	0x0000000106232f93 WTF::RunLoop::TimerBase::timerFired(__CFRunLoopTimer*, void*) + 35
7   com.apple.CoreFoundation      	0x00007fffce598de4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
8   com.apple.CoreFoundation      	0x00007fffce598a73 __CFRunLoopDoTimer + 1075
9   com.apple.CoreFoundation      	0x00007fffce5985ca __CFRunLoopDoTimers + 298
10  com.apple.CoreFoundation      	0x00007fffce58ffa1 __CFRunLoopRun + 2081
11  com.apple.CoreFoundation      	0x00007fffce58f524 CFRunLoopRunSpecific + 420
12  com.apple.HIToolbox           	0x00007fffcdaefebc RunCurrentEventLoopInMode + 240
13  com.apple.HIToolbox           	0x00007fffcdaefcf1 ReceiveNextEventCommon + 432
14  com.apple.HIToolbox           	0x00007fffcdaefb26 _BlockUntilNextEventMatchingListInModeWithFilter + 71
15  com.apple.AppKit              	0x00007fffcc08ae24 _DPSNextEvent + 1120
16  com.apple.AppKit              	0x00007fffcc80685e -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2796
17  com.apple.AppKit              	0x00007fffcc07f7ab -[NSApplication run] + 926
18  com.apple.AppKit              	0x00007fffcc04a1de NSApplicationMain + 1237
19  libxpc.dylib                  	0x00007fffe438f8c7 _xpc_objc_main + 775
20  libxpc.dylib                  	0x00007fffe438e2e4 xpc_main + 494
21  com.apple.WebKit.WebContent   	0x0000000100fce69a main + 490
22  libdyld.dylib                 	0x00007fffe4136235 start + 1
Comment 3 youenn fablet 2018-11-15 15:57:28 PST
Divide by zero in operator+, probably m_timeScale is null.
Which might come from: MediaTime toMediaTime().