Issue metadata
Sign in to add a comment
|
race in Call/AudioSendStream on sending rtp packet and destruction |
||||||||||||||||||||
Issue descriptionThis is a clone of https://bugs.chromium.org/p/webrtc/issues/detail?id=8794, for the purpose of an M65 merge request. Merge type: Fix for concurrency regression in WebRTC metric reporting. Effect: Concurrent read + write on metric about to be reported. Prevalence: Caught by tsan on 1/1000 test runs. Daily metric reports on Chrome according to UMA (i.e. number of times where the error might occur at least once): 13,000,000. WebRTC fix + unittest CL: https://bugs.chromium.org/p/webrtc/issues/detail?id=5118 Fix verified: b/72296504#comment11 --- original bug description --- test where sending rtp packet is delayed and passed through pacer fails under tsan: WARNING: ThreadSanitizer: data race Read of size 8 at 0x7b580000e6c8 by thread T74: #0 webrtc::TimeInterval::Extend(webrtc::TimeInterval const&) webrtc/audio/time_interval.cc:40:38 #1 webrtc::internal::Call::DestroyAudioSendStream(webrtc::AudioSendStream*) webrtc/call/call.cc:654:28 ... #11 rtc::PlatformThread::StartThread(void*) webrtc/rtc_base/platform_thread.cc:146:40 Previous write of size 8 at 0x7b580000e6c8 by thread T44 #0 Extend webrtc/audio/time_interval.cc:32:23 #1 webrtc::TimeInterval::Extend() webrtc/audio/time_interval.cc:21 #2 webrtc::internal::AudioSendStream::TimedTransport::SendRtp(unsigned char const*, unsigned long, webrtc::PacketOptions const&) webrtc/audio/audio_send_stream.cc:74:18 #3 webrtc::voe::Channel::SendRtp(unsigned char const*, unsigned long, webrtc::PacketOptions const&) webrtc/audio/channel.cc:368:23 #4 non-virtual thunk to webrtc::voe::Channel::SendRtp(unsigned char const*, unsigned long, webrtc::PacketOptions const&) webrtc/audio/channel.cc #5 webrtc::RTPSender::SendPacketToNetwork(webrtc::RtpPacketToSend const&, webrtc::PacketOptions const&, webrtc::PacedPacketInfo const&) webrtc/modules/rtp_rtcp/source/rtp_sender.cc:647:30 #6 webrtc::RTPSender::PrepareAndSendPacket(std::unique_ptr<webrtc::RtpPacketToSend, std::default_delete<webrtc::RtpPacketToSend> >, bool, bool, webrtc::PacedPacketInfo const&) webrtc/modules/rtp_rtcp/source/rtp_sender.cc:785:8 #7 webrtc::RTPSender::TimeToSendPacket(unsigned int, unsigned short, long, bool, webrtc::PacedPacketInfo const&) webrtc/modules/rtp_rtcp/source/rtp_sender.cc:724:10 #8 webrtc::ModuleRtpRtcpImpl::TimeToSendPacket(unsigned int, unsigned short, long, bool, webrtc::PacedPacketInfo const&) webrtc/modules/rtp_rtcp/source/rtp_rtcp_impl.cc:454:23 #9 webrtc::PacketRouter::TimeToSendPacket(unsigned int, unsigned short, long, bool, webrtc::PacedPacketInfo const&) webrtc/modules/pacing/packet_router.cc:107:26 #10 webrtc::PacedSender::SendPacket(webrtc::PacketQueue::Packet const&, webrtc::PacedPacketInfo const&) webrtc/modules/pacing/paced_sender.cc:335:40 #11 webrtc::PacedSender::Process() webrtc/modules/pacing/paced_sender.cc:287:9 #12 webrtc::ProcessThreadImpl::Process() webrtc/modules/utility/source/process_thread_impl.cc:195:21 #13 webrtc::ProcessThreadImpl::Run(void*) webrtc/modules/utility/source/process_thread_impl.cc:169:48 #14 rtc::PlatformThread::Run() webrtc/rtc_base/platform_thread.cc:250:10 #15 rtc::PlatformThread::StartThread(void*) webrtc/rtc_base/platform_thread.cc:146:40
,
Feb 2 2018
,
Feb 5 2018
|
|||||||||||||||||||||
►
Sign in to add a comment |
|||||||||||||||||||||
Comment 1 by saza@chromium.org
, Feb 2 2018