New issue
Advanced search Search tips

Issue 764023 link

Starred by 1 user

Issue metadata

Status: Duplicate
Merged: issue 751093
Owner:
Closed: Sep 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 3
Type: Bug



Sign in to add a comment

Lifecycle of base::TaskScheduler in MediaStream unittests is problematic

Project Member Reported by mfo...@chromium.org, Sep 11 2017

Issue description

The following two unit tests crash if run after other unit tests that allocate a base::TaskScheduler and don't destroy it, causing a CHECK-failure in the base::test::ScopedTaskEnvironment ctor.

[mfoltz@mfoltz-macpro /Users/mfoltz/chrome/src]$ ./out/Default/content_unittests --gtest_filter="MediaStream*" --vmodule="task_scheduler*=2"

<snip>

2 tests crashed:
    MediaStreamRemoteVideoSourceTest.StartTrack (../../content/renderer/media/webrtc/media_stream_remote_video_source_unittest.cc:157)
    MediaStreamVideoSourceTest.AddTrackAndStartSource (../../content/renderer/media/media_stream_video_source_unittest.cc:266)
Tests took 15 seconds.

I added some logging to show which tests allocate a TaskScheduler.  I suppose the fix is with these tests, but base::TaskScheduler is a leaky singleton so I'm not sure what can be done?  Maybe tests that use a "real" scheduler can't mix with a ScopedTaskEnvironment in the same process?

[ RUN      ] MediaStreamVideoRendererSinkTest.StartStop
[16569:775:0911/112343.528041:688549119458832:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x0
[16569:775:0911/112343.528341:688549119757841:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7f829ce041f0
[16569:775:0911/112343.528576:688549119993475:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7f829ce041f0
[16569:775:0911/112343.536355:688549127773568:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7f829ce041f0
[16569:775:0911/112343.536401:688549127817656:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7f829ce041f0
[       OK ] MediaStreamVideoRendererSinkTest.StartStop (9 ms)
[ RUN      ] MediaStreamVideoRendererSinkTest.EncodeVideoFrames
[16569:775:0911/112343.536727:688549128144569:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7f829ce041f0
[       OK ] MediaStreamVideoRendererSinkTest.EncodeVideoFrames (7 ms)
[----------] 2 tests from MediaStreamVideoRendererSinkTest (16 ms total)

[----------] 1 test from MediaStreamVideoRendererSinkAsyncAddFrameReadyTest
[ RUN      ] MediaStreamVideoRendererSinkAsyncAddFrameReadyTest.CreateHardwareFrames
[16569:775:0911/112343.543511:688549134928724:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7f829ce041f0
[       OK ] MediaStreamVideoRendererSinkAsyncAddFrameReadyTest.CreateHardwareFrames (7 ms)
[----------] 1 test from MediaStreamVideoRendererSinkAsyncAddFrameReadyTest (7 ms total)

[----------] 1 test from MediaStreamVideoRendererSinkTransparencyTest
[ RUN      ] MediaStreamVideoRendererSinkTransparencyTest.SendTransparentFrame
[16569:775:0911/112343.550691:688549142108785:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7f829ce041f0
[       OK ] MediaStreamVideoRendererSinkTransparencyTest.SendTransparentFrame (7 ms)
[----------] 1 test from MediaStreamVideoRendererSinkTransparencyTest (7 ms total)

[----------] 5 tests from MediaStreamVideoSourceTest
[ RUN      ] MediaStreamVideoSourceTest.AddTrackAndStartSource
[16569:775:0911/112343.558007:688549149424785:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7f829ce041f0
[16569:775:0911/112343.558058:688549149474781:FATAL:scoped_task_environment.cc(95)] Check failed: !TaskScheduler::GetInstance(). 
0   libbase.dylib                       0x00000001177e454e base::debug::StackTrace::StackTrace(unsigned long) + 174
1   libbase.dylib                       0x00000001177e460d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x00000001177e28bc base::debug::StackTrace::StackTrace() + 28
3   libbase.dylib                       0x0000000117881a8f logging::LogMessage::~LogMessage() + 479
4   libbase.dylib                       0x000000011787f3f5 logging::LogMessage::~LogMessage() + 21
5   content_unittests                   0x0000000109354f30 base::test::ScopedTaskEnvironment::ScopedTaskEnvironment(base::test::ScopedTaskEnvironment::MainThreadType, base::test::ScopedTaskEnvironment::ExecutionMode) + 368
6   content_unittests                   0x0000000109355ab1 base::test::ScopedTaskEnvironment::ScopedTaskEnvironment(base::test::ScopedTaskEnvironment::MainThreadType, base::test::ScopedTaskEnvironment::ExecutionMode) + 33
7   content_unittests                   0x000000010837437d content::MediaStreamVideoSourceTest::MediaStreamVideoSourceTest() + 93
8   content_unittests                   0x00000001083742ff content::MediaStreamVideoSourceTest_AddTrackAndStartSource_Test::MediaStreamVideoSourceTest_AddTrackAndStartSource_Test() + 31
9   content_unittests                   0x00000001083742d5 content::MediaStreamVideoSourceTest_AddTrackAndStartSource_Test::MediaStreamVideoSourceTest_AddTrackAndStartSource_Test() + 21

 RUN      ] MediaStreamVideoTrackTest.StopLastTrack
[16571:775:0911/112344.432208:688550023687703:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x0
[16571:775:0911/112344.432778:688550024250573:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7fc59d81d080
[16571:775:0911/112344.433100:688550024573473:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7fc59d81d080
[16571:775:0911/112344.440311:688550031785227:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7fc59d81d080
[16571:775:0911/112344.440360:688550031832764:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7fc59d81d080
[       OK ] MediaStreamVideoTrackTest.StopLastTrack (8 ms)
[ RUN      ] MediaStreamVideoTrackTest.CheckTrackRequestsFrame
[16571:775:0911/112344.440892:688550032379811:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7fc59d81d080
[       OK ] MediaStreamVideoTrackTest.CheckTrackRequestsFrame (20 ms)
[ RUN      ] MediaStreamVideoTrackTest.GetSettings
[16571:775:0911/112344.460897:688550052370422:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7fc59d81d080
[       OK ] MediaStreamVideoTrackTest.GetSettings (5 ms)
[ RUN      ] MediaStreamVideoTrackTest.GetSettingsWithAdjustment
[16571:775:0911/112344.465776:688550057249946:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7fc59d81d080
[       OK ] MediaStreamVideoTrackTest.GetSettingsWithAdjustment (5 ms)
[ RUN      ] MediaStreamVideoTrackTest.GetSettingsStopped
[16571:775:0911/112344.470988:688550062461737:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7fc59d81d080
[       OK ] MediaStreamVideoTrackTest.GetSettingsStopped (5 ms)
[----------] 5 tests from MediaStreamVideoTrackTest (44 ms total)

[----------] 2 tests from MediaStreamRemoteVideoSourceTest
[ RUN      ] MediaStreamRemoteVideoSourceTest.StartTrack
[16571:775:0911/112344.476010:688550067484033:VERBOSE1:task_scheduler.cc(76)] GetInstance: 0x7fc59d81d080
[16571:775:0911/112344.476051:688550067523527:FATAL:scoped_task_environment.cc(95)] Check failed: !TaskScheduler::GetInstance(). 
0   libbase.dylib                       0x000000011fe6254e base::debug::StackTrace::StackTrace(unsigned long) + 174
1   libbase.dylib                       0x000000011fe6260d base::debug::StackTrace::StackTrace(unsigned long) + 29
2   libbase.dylib                       0x000000011fe608bc base::debug::StackTrace::StackTrace() + 28
3   libbase.dylib                       0x000000011feffa8f logging::LogMessage::~LogMessage() + 479
4   libbase.dylib                       0x000000011fefd3f5 logging::LogMessage::~LogMessage() + 21
5   content_unittests                   0x00000001119f6f30 base::test::ScopedTaskEnvironment::ScopedTaskEnvironment(base::test::ScopedTaskEnvironment::MainThreadType, base::test::ScopedTaskEnvironment::ExecutionMode) + 368
6   content_unittests                   0x00000001119f7ab1 base::test::ScopedTaskEnvironment::ScopedTaskEnvironment(base::test::ScopedTaskEnvironment::MainThreadType, base::test::ScopedTaskEnvironment::ExecutionMode) + 33
7   content_unittests                   0x0000000110b40e0d content::MediaStreamRemoteVideoSourceTest::MediaStreamRemoteVideoSourceTest() + 93
8   content_unittests                   0x0000000110b40d8f content::MediaStreamRemoteVideoSourceTest_StartTrack_Test::MediaStreamRemoteVideoSourceTest_StartTrack_Test() + 31
9   content_unittests                   0x0000000110b40d65 content::MediaStreamRemoteVideoSourceTest_StartTrack_Test::MediaStreamRemoteVideoSourceTest_StartTrack_Test() + 21






 
Components: -Internals>Media Internals>Media>Source
Owner: wolenetz@chromium.org
Status: Assigned (was: Untriaged)
matt, do you and/or webrtc team own these two unit tests? feel free to re-assign appropriately.
Cc: dalecur...@chromium.org wolenetz@chromium.org
Components: -Internals>Media>Source Blink>WebRTC
Owner: ----
Status: Untriaged (was: Assigned)
Those two tests aren't MSE.
MediaStream is WebRTC.
Also cc+=dalecurtis@

Comment 3 by guidou@chromium.org, Sep 12 2017

Owner: guidou@chromium.org
Status: Assigned (was: Untriaged)

Comment 4 by guidou@chromium.org, Sep 12 2017

Mergedinto: 751093
Status: Duplicate (was: Assigned)

Sign in to add a comment