RESOLVED FIXED 149580
REGRESSION(r190262): User media unit test failures after r190262
https://bugs.webkit.org/show_bug.cgi?id=149580
Summary REGRESSION(r190262): User media unit test failures after r190262
Carlos Garcia Campos
Reported 2015-09-26 01:44:51 PDT
The GTK+ unit test /webkit2/WebKitWebView/usermedia-permission-requests started to fail after r190262: /webkit2/WebKitWebView/usermedia-permission-requests: ** ERROR:../../Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp:202:static gboolean UIClientTest::permissionRequested(WebKitWebView*, WebKitPermissionRequest*, UIClientTest*): assertion failed: (webkit_user_media_permission_is_for_audio_device(userMediaRequest) == test->m_expectedAudioMedia) FAIL But also the cross platform C API test WebKit2.UserMediaBasic is crashing: **CRASH** WebKit2.UserMediaBasic
Attachments
Patch for the bots. (11.43 KB, patch)
2015-09-28 19:21 PDT, Eric Carlson
no flags
Patch for landing. (18.75 KB, patch)
2015-09-30 09:43 PDT, Eric Carlson
commit-queue: commit-queue-
Updated patch for landing. (18.74 KB, patch)
2015-09-30 11:30 PDT, Eric Carlson
no flags
Patch (2.47 KB, patch)
2015-10-19 03:57 PDT, ChangSeok Oh
no flags
Carlos Garcia Campos
Comment 1 2015-09-26 02:06:13 PDT
It seems some layout tests are also affected: 01:50:49.322 5644 worker/1 fast/mediastream/MediaStreamTrackEvent-constructor.html crashed, (stderr lines): 01:50:49.322 5644 1 0x7fda8ab83687 /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18(WTFCrash+0x17) [0x7fda8ab83687] 01:50:49.322 5644 2 0x7fda365792f5 /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/Release/lib/libTestRunnerInjectedBundle.so(+0xd62f5) [0x7fda365792f5] 01:50:49.322 5644 3 0x7fda8cd68eb7 /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37(_ZN7WebCore10TimerEvent10timerFiredEv+0x17) [0x7fda8cd68eb7] 01:50:49.322 5644 4 0x7fda8cca6d4f /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37(_ZN7WebCore12ThreadTimers24sharedTimerFiredInternalEv+0xaf) [0x7fda8cca6d4f] 01:50:49.323 5644 5 0x7fda8abc4a55 /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18(_ZN3WTF15GMainLoopSource12voidCallbackEv+0x295) [0x7fda8abc4a55] 01:50:49.323 5644 6 0x7fda8abc300a /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18(_ZN3WTF15GMainLoopSource18voidSourceCallbackEPS0_+0xa) [0x7fda8abc300a] 01:50:49.323 5644 7 0x7fda8abc304e /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18(+0x85f04e) [0x7fda8abc304e] 01:50:49.323 5644 8 0x7fda87feca26 /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/DependenciesGTK/Root/lib64/libglib-2.0.so.0(+0x53a26) [0x7fda87feca26] 01:50:49.323 5644 9 0x7fda87fed854 /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/DependenciesGTK/Root/lib64/libglib-2.0.so.0(g_main_context_dispatch+0x33) [0x7fda87fed854] 01:50:49.323 5644 10 0x7fda87feda39 /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/DependenciesGTK/Root/lib64/libglib-2.0.so.0(+0x54a39) [0x7fda87feda39] 01:50:49.323 5644 11 0x7fda87fede60 /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/DependenciesGTK/Root/lib64/libglib-2.0.so.0(g_main_loop_run+0x1d7) [0x7fda87fede60] 01:50:49.323 5644 12 0x7fda8d8e98a0 /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37(_ZN3WTF7RunLoop3runEv+0x120) [0x7fda8d8e98a0] 01:50:49.323 5644 13 0x7fda8c4551f2 /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37(WebProcessMainUnix+0x1e2) [0x7fda8c4551f2] 01:50:49.323 5644 14 0x7fda83f2ab45 /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7fda83f2ab45] 01:50:49.323 5644 15 0x400c25 /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/Release/bin/WebKitWebProcess() [0x400c25] 01:50:49.326 5566 [16963/37088] fast/mediastream/MediaStreamTrackEvent-constructor.html failed unexpectedly (WebProcess crashed)
Carlos Garcia Campos
Comment 2 2015-09-26 02:37:01 PDT
I skipped the tests for now in r190266. I don't have time to look at it and I don't even build with media stream enabled.
Michael Catanzaro
Comment 3 2015-09-26 06:37:59 PDT
Calvaris, Eric, should we roll this out, since it broke at least one cross-platform test as well, or can you fix it?
Eric Carlson
Comment 4 2015-09-26 17:56:41 PDT
(In reply to comment #1) > It seems some layout tests are also affected: > > 01:50:49.322 5644 worker/1 > fast/mediastream/MediaStreamTrackEvent-constructor.html crashed, (stderr > lines): > 01:50:49.322 5644 1 0x7fda8ab83687 > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/ > libjavascriptcoregtk-4.0.so.18(WTFCrash+0x17) [0x7fda8ab83687] > 01:50:49.322 5644 2 0x7fda365792f5 > /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/Release/ > lib/libTestRunnerInjectedBundle.so(+0xd62f5) [0x7fda365792f5] > 01:50:49.322 5644 3 0x7fda8cd68eb7 > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/ > libwebkit2gtk-4.0.so.37(_ZN7WebCore10TimerEvent10timerFiredEv+0x17) > [0x7fda8cd68eb7] > 01:50:49.322 5644 4 0x7fda8cca6d4f > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/ > libwebkit2gtk-4.0.so. > 37(_ZN7WebCore12ThreadTimers24sharedTimerFiredInternalEv+0xaf) > [0x7fda8cca6d4f] > 01:50:49.323 5644 5 0x7fda8abc4a55 > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/ > libjavascriptcoregtk-4.0.so. > 18(_ZN3WTF15GMainLoopSource12voidCallbackEv+0x295) [0x7fda8abc4a55] > 01:50:49.323 5644 6 0x7fda8abc300a > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/ > libjavascriptcoregtk-4.0.so. > 18(_ZN3WTF15GMainLoopSource18voidSourceCallbackEPS0_+0xa) [0x7fda8abc300a] > 01:50:49.323 5644 7 0x7fda8abc304e > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/ > libjavascriptcoregtk-4.0.so.18(+0x85f04e) [0x7fda8abc304e] > 01:50:49.323 5644 8 0x7fda87feca26 > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/DependenciesGTK/ > Root/lib64/libglib-2.0.so.0(+0x53a26) [0x7fda87feca26] > 01:50:49.323 5644 9 0x7fda87fed854 > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/DependenciesGTK/ > Root/lib64/libglib-2.0.so.0(g_main_context_dispatch+0x33) [0x7fda87fed854] > 01:50:49.323 5644 10 0x7fda87feda39 > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/DependenciesGTK/ > Root/lib64/libglib-2.0.so.0(+0x54a39) [0x7fda87feda39] > 01:50:49.323 5644 11 0x7fda87fede60 > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/DependenciesGTK/ > Root/lib64/libglib-2.0.so.0(g_main_loop_run+0x1d7) [0x7fda87fede60] > 01:50:49.323 5644 12 0x7fda8d8e98a0 > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/ > libwebkit2gtk-4.0.so.37(_ZN3WTF7RunLoop3runEv+0x120) [0x7fda8d8e98a0] > 01:50:49.323 5644 13 0x7fda8c4551f2 > /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/ > libwebkit2gtk-4.0.so.37(WebProcessMainUnix+0x1e2) [0x7fda8c4551f2] > 01:50:49.323 5644 14 0x7fda83f2ab45 > /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7fda83f2ab45] > 01:50:49.323 5644 15 0x400c25 > /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/Release/ > bin/WebKitWebProcess() [0x400c25] > 01:50:49.326 5566 [16963/37088] > fast/mediastream/MediaStreamTrackEvent-constructor.html failed unexpectedly > (WebProcess crashed) I see this crash: WTFCrash + 39 (Assertions.cpp:321) WebCore::Supplementable<WebCore::Page>::provideSupplement(char const*, std::__1::unique_ptr<WebCore::Supplement<WebCore::Page>, std::__1::default_delete<WebCore::Supplement<WebCore::Page> > >) + 146 (Supplementable.h:102) WebCore::Supplement<WebCore::Page>::provideTo(WebCore::Supplementable<WebCore::Page>*, char const*, std::__1::unique_ptr<WebCore::Supplement<WebCore::Page>, std::__1::default_delete<WebCore::Supplement<WebCore::Page> > >) + 424 (Supplementable.h:87) WebCore::provideUserMediaTo(WebCore::Page*, WebCore::UserMediaClient*) + 700 (UserMediaController.cpp:49) WebCore::Internals::Internals(WebCore::Document*) + 630 (Internals.cpp:365) WebCore::Internals::Internals(WebCore::Document*) + 29 (Internals.cpp:365) Is this crash new with r190262, or could it have been caused by r190061?
Tim Horton
Comment 5 2015-09-26 18:53:49 PDT
(In reply to comment #4) > (In reply to comment #1) > Is this crash new with r190262, or could it have been caused by r190061? That seems most likely to have come from r190061. I'm not sure why, since the only client who should be installing more than one UserMediaController supplement is Internals, and the Internals code should be deleting the old one before installing a new one...
Eric Carlson
Comment 6 2015-09-28 19:21:59 PDT
Created attachment 262038 [details] Patch for the bots.
Darin Adler
Comment 7 2015-09-29 10:28:15 PDT
Comment on attachment 262038 [details] Patch for the bots. View in context: https://bugs.webkit.org/attachment.cgi?id=262038&action=review > Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:148 > + MockSourceMap::iterator it = map.find(mockAudioSourceID()); > + ASSERT(it != map.end()); > + > + RefPtr<RealtimeMediaSource> audioSource = it->value; Normally we’d use get here instead of find. ASSERT(!map.contains(mockAudioSourceID()); RefPtr<RealtimeMediaSource> audioSource = map.get(mockAudioSourceID()); > Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:163 > + MockSourceMap::iterator it = map.find(mockVideoSourceID()); > + ASSERT(it != map.end()); > + > + RefPtr<RealtimeMediaSource> videoSource = it->value; Ditto. > Source/WebCore/platform/mock/TimerEventBasedMock.h:71 > + m_mock = nullptr; I don’t understand the value of this. We are about to delete m_mock, so how is setting it to nullptr valuable? Is it about debugging?
Eric Carlson
Comment 8 2015-09-29 13:14:09 PDT
Comment on attachment 262038 [details] Patch for the bots. View in context: https://bugs.webkit.org/attachment.cgi?id=262038&action=review Thanks for the review. I will hold off on committing this until I hear back from Adam about whether or not this causes problems for the GTK port. >> Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:148 >> + RefPtr<RealtimeMediaSource> audioSource = it->value; > > Normally we’d use get here instead of find. > > ASSERT(!map.contains(mockAudioSourceID()); > RefPtr<RealtimeMediaSource> audioSource = map.get(mockAudioSourceID()); OK. >> Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:163 >> + RefPtr<RealtimeMediaSource> videoSource = it->value; > > Ditto. Ditto. >> Source/WebCore/platform/mock/TimerEventBasedMock.h:71 >> + m_mock = nullptr; > > I don’t understand the value of this. We are about to delete m_mock, so how is setting it to nullptr valuable? Is it about debugging? Oops, I did add that while debugging. I will remove it.
Adam Bergkvist
Comment 9 2015-09-30 03:18:16 PDT
Comment on attachment 262038 [details] Patch for the bots. View in context: https://bugs.webkit.org/attachment.cgi?id=262038&action=review > Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:87 > + client->constraintsValidated(audioSources, videoSources); This change flips the order of video and audio. We usually have audio first (like in this patch), but UserMediaRequest::constraintsValidated() has the oposite order. > Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:200 > + m_client->constraintsValidated(audioSources, videoSources); Argument order flipped (see previous comment) > Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:168 > + client->constraintsValidated(audioSources, videoSources); Argument order flipped (see previous comment)
Adam Bergkvist
Comment 10 2015-09-30 03:47:11 PDT
Fixing the argument order mentioned above and unprefixing the MediaStream constructor (s/webkitMediaStream/MediaStream/) in the tests make all but 4 tests skipped in [1] and [2] pass. [1] http://trac.webkit.org/changeset/190266/trunk/LayoutTests/platform/gtk/TestExpectations [2] http://trac.webkit.org/changeset/189089/trunk/LayoutTests/platform/gtk/TestExpectations
Eric Carlson
Comment 11 2015-09-30 09:43:09 PDT
Created attachment 262168 [details] Patch for landing. > > Source/WebCore/platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:87 > > + client->constraintsValidated(audioSources, videoSources); > > This change flips the order of video and audio. > > We usually have audio first (like in this patch), but UserMediaRequest::constraintsValidated() has the oposite order. > > > Source/WebCore/platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:200 > > + m_client->constraintsValidated(audioSources, videoSources); > > Argument order flipped (see previous comment) > > > Source/WebCore/platform/mock/MockRealtimeMediaSourceCenter.cpp:168 > > + client->constraintsValidated(audioSources, videoSources); > > Argument order flipped (see previous comment) > Fixed the MediaStreamCreationClient::constraintsValidated argument order so hopefully it is audio,video everywhere. > Fixing the argument order mentioned above and unprefixing the MediaStream constructor (s/webkitMediaStream/MediaStream/) in the tests make all but 4 tests skipped in [1] and [2] pass. > > [1] http://trac.webkit.org/changeset/190266/trunk/LayoutTests/platform/gtk/TestExpectations > > [2] http://trac.webkit.org/changeset/189089/trunk/LayoutTests/platform/gtk/TestExpectations > I didn't unprefix the MediaStream constructor in this patch, I will do it in a followup. I don't know which tests didn't work for Adam, but I unskipped them all with the assumption that it will be easier to skip the ones that still fail once the bots point out which still have problems.
WebKit Commit Bot
Comment 12 2015-09-30 10:49:33 PDT
Comment on attachment 262168 [details] Patch for landing. Rejecting attachment 262168 [details] from commit-queue. Failed to run "['/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch', '--status-host=webkit-queues.webkit.org', '--bot-id=webkit-cq-03', 'validate-changelog', '--check-oops', '--non-interactive', 262168, '--port=mac']" exit_code: 1 cwd: /Volumes/Data/EWS/WebKit ChangeLog entry in Tools/ChangeLog contains OOPS!. Full output: http://webkit-queues.webkit.org/results/227708
Eric Carlson
Comment 13 2015-09-30 11:30:34 PDT
Created attachment 262185 [details] Updated patch for landing.
WebKit Commit Bot
Comment 14 2015-09-30 12:17:17 PDT
Comment on attachment 262185 [details] Updated patch for landing. Clearing flags on attachment: 262185 Committed r190362: <http://trac.webkit.org/changeset/190362>
Carlos Garcia Campos
Comment 15 2015-10-01 06:42:49 PDT
Layout tests no longer crash, but the GTK+ unit tests are still failing. Could you look at it, phil?
ChangSeok Oh
Comment 16 2015-10-19 03:57:01 PDT
ChangSeok Oh
Comment 17 2015-10-19 03:58:07 PDT
(In reply to comment #15) > Layout tests no longer crash, but the GTK+ unit tests are still failing. > Could you look at it, phil? The failures are no longer reproduced.
Carlos Garcia Campos
Comment 18 2015-10-19 04:26:00 PDT
Comment on attachment 263468 [details] Patch Ok. Thanks!
WebKit Commit Bot
Comment 19 2015-10-19 11:01:47 PDT
Comment on attachment 263468 [details] Patch Clearing flags on attachment: 263468 Committed r191298: <http://trac.webkit.org/changeset/191298>
WebKit Commit Bot
Comment 20 2015-10-19 11:01:52 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.