Adressing clear races between the test thread and capturer thread shown
as heap-use-after-free in vpx_codec_destroy in
WebRtcVideoMediaChannelTest.SetSend (way later in the rest run).
When capturing a frame the test copied it to a separate frame that would
then be read by the test without synchronization, if the test didn't
manage to examine the frame in between captures the adapted frame would
be overwritten by the following frame during accesses to it.
The actual races are suppressed by race:webrtc/base/messagequeue.cc and
race:webrtc/base/thread.cc. These fixes reduce the suppression count
locally from around 3000 to 30 for VideoAdapterTest.*.
Also removing tsan suppressions for talk/base as it's been moved to
webrtc/base.
R=tommi@webrtc.org
BUG=3671
Review URL: https://webrtc-codereview.appspot.com/22169004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6979 4adac7df-926f-26a2-2b94-8c16560cd09d
The bot that had the problem was using an old version of STL, so relanding.
> Revert 6863 "Refactor StatsCollector and associated types."
>
> Breaks chrome compilation on Mac:
>
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/vector.tcc:252:8:
> error: no matching constructor for initialization of
> 'webrtc::StatsReport'
> _Tp __x_copy = __x;
> ^ ~~~
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_vector.h:608:4:
> note: in instantiation of member function
> 'std::vector<webrtc::StatsReport, std::allocator<webrtc::StatsReport>
> >::_M_insert_aux' requested here
> _M_insert_aux(end(), __x);
> ^
> ../../content/renderer/media/mock_peer_connection_impl.cc:282:11:
> note: in instantiation of member function
> 'std::vector<webrtc::StatsReport, std::allocator<webrtc::StatsReport>
> >::push_back' requested here
> reports.push_back(report1);
> ^
> ../../third_party/libjingle/source/talk/app/webrtc/statstypes.h:49:3:
> note: candidate constructor not viable: requires 0 arguments, but 1
> was provided
> StatsReport() : timestamp(0) {}
>
>
>
> > Refactor StatsCollector and associated types.
> > * Due to the type changes, I'm going to update the OnCompleted event in two phases to sync with Chrome. This is the first phase.
> > * Reports are now managed in a set, not a map, since it's enough to store the id in one place.
> > * Report ids are now const.
> > * Copying of data has been greatly reduced.
> > * This change includes preparation work for making GetStats fully async.
> >
> > This is a reland of r6778 which was reverted due to fyi bots failing.
> > I found and fixed the issue which was that in a couple of places I needed to replace a report instead of finding+updating an existing one.
> >
> > R=xians@webrtc.org
> >
> > Review URL: https://webrtc-codereview.appspot.com/15119004
>
> TBR=tommi@webrtc.org
>
> Review URL: https://webrtc-codereview.appspot.com/21169004TBR=niklas.enbom@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/22099004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6908 4adac7df-926f-26a2-2b94-8c16560cd09d
Breaks chrome compilation on Mac:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/vector.tcc:252:8:
error: no matching constructor for initialization of
'webrtc::StatsReport'
_Tp __x_copy = __x;
^ ~~~
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk/usr/include/c++/4.2.1/bits/stl_vector.h:608:4:
note: in instantiation of member function
'std::vector<webrtc::StatsReport, std::allocator<webrtc::StatsReport>
>::_M_insert_aux' requested here
_M_insert_aux(end(), __x);
^
../../content/renderer/media/mock_peer_connection_impl.cc:282:11:
note: in instantiation of member function
'std::vector<webrtc::StatsReport, std::allocator<webrtc::StatsReport>
>::push_back' requested here
reports.push_back(report1);
^
../../third_party/libjingle/source/talk/app/webrtc/statstypes.h:49:3:
note: candidate constructor not viable: requires 0 arguments, but 1
was provided
StatsReport() : timestamp(0) {}
> Refactor StatsCollector and associated types.
> * Due to the type changes, I'm going to update the OnCompleted event in two phases to sync with Chrome. This is the first phase.
> * Reports are now managed in a set, not a map, since it's enough to store the id in one place.
> * Report ids are now const.
> * Copying of data has been greatly reduced.
> * This change includes preparation work for making GetStats fully async.
>
> This is a reland of r6778 which was reverted due to fyi bots failing.
> I found and fixed the issue which was that in a couple of places I needed to replace a report instead of finding+updating an existing one.
>
> R=xians@webrtc.org
>
> Review URL: https://webrtc-codereview.appspot.com/15119004TBR=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/21169004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6897 4adac7df-926f-26a2-2b94-8c16560cd09d
Some constraints, like kEchoCancellation, kMediaStreamAudioDucking are supported in Chrome but not in Libjingle, if the users set it in mandatory, LocalAudioSource::Initialize() will fail the getUserMedia call.
This patch fixes the problem by fully initializing the LocalAudioSource even though some constraints are not supported in libjingle.
BUT=crbug/398080
TEST=manual test:
var constraints = {audio: { mandatory: { googEchoCancellation: true } }};
getUserMedia(constraints, gotStream, gotStreamFailed);
verify you get a gotStream callback
R=henrika@webrtc.org, tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/21049004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6885 4adac7df-926f-26a2-2b94-8c16560cd09d
* Due to the type changes, I'm going to update the OnCompleted event in two phases to sync with Chrome. This is the first phase.
* Reports are now managed in a set, not a map, since it's enough to store the id in one place.
* Report ids are now const.
* Copying of data has been greatly reduced.
* This change includes preparation work for making GetStats fully async.
This is a reland of r6778 which was reverted due to fyi bots failing.
I found and fixed the issue which was that in a couple of places I needed to replace a report instead of finding+updating an existing one.
R=xians@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/15119004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6863 4adac7df-926f-26a2-2b94-8c16560cd09d