Only in testing environments are the task queues shut down while sources still have media flowing. It's still not clear why heap-use-after-free happens, since it should be enough to close the PC, but it is clear that the crash is happening due to frames flowing while the test is shutting down, which is not something happening outside of testing. In an attempt to deflake, this CL makes sure to manually stop the test-only sources before closing the peer connection. Bug: webrtc:15018 Change-Id: I48ee131a8994c9c4caee1bb4875580d255b97da1 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/299944 Commit-Queue: Henrik Boström <hbos@webrtc.org> Auto-Submit: Henrik Boström <hbos@webrtc.org> Reviewed-by: Jeremy Leconte <jleconte@google.com> Cr-Commit-Position: refs/heads/main@{#39752}
47 lines
1.5 KiB
C++
47 lines
1.5 KiB
C++
/*
|
|
* Copyright 2018 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef PC_TEST_FAKE_PERIODIC_VIDEO_TRACK_SOURCE_H_
|
|
#define PC_TEST_FAKE_PERIODIC_VIDEO_TRACK_SOURCE_H_
|
|
|
|
#include "pc/test/fake_periodic_video_source.h"
|
|
#include "pc/video_track_source.h"
|
|
|
|
namespace webrtc {
|
|
|
|
// A VideoTrackSource generating frames with configured size and frame interval.
|
|
class FakePeriodicVideoTrackSource : public VideoTrackSource {
|
|
public:
|
|
explicit FakePeriodicVideoTrackSource(bool remote)
|
|
: FakePeriodicVideoTrackSource(FakePeriodicVideoSource::Config(),
|
|
remote) {}
|
|
|
|
FakePeriodicVideoTrackSource(FakePeriodicVideoSource::Config config,
|
|
bool remote)
|
|
: VideoTrackSource(remote), source_(config) {}
|
|
|
|
~FakePeriodicVideoTrackSource() = default;
|
|
|
|
FakePeriodicVideoSource& fake_periodic_source() { return source_; }
|
|
const FakePeriodicVideoSource& fake_periodic_source() const {
|
|
return source_;
|
|
}
|
|
|
|
protected:
|
|
rtc::VideoSourceInterface<VideoFrame>* source() override { return &source_; }
|
|
|
|
private:
|
|
FakePeriodicVideoSource source_;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // PC_TEST_FAKE_PERIODIC_VIDEO_TRACK_SOURCE_H_
|