New issue
Advanced search Search tips

Issue 808612 link

Starred by 1 user

Issue metadata

Status: Duplicate
Merged: issue 808364
Owner: ----
Closed: Feb 2018
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: ----
Type: Defect


Previous locations:
monorail:3471


Sign in to add a comment

race in Call/AudioSendStream on sending rtp packet and destruction

Project Member Reported by saza@chromium.org, Feb 2 2018

Issue description

This 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
 


 

Comment 1 by saza@chromium.org, Feb 2 2018

Hm, this was intended for the Chromium issue tracker. I'm sorry!
I would appreciate if someone could triage it to oblivion.
Project: chromium
Moved issue monorail:3471 to now be  issue chromium:808612 .

Comment 3 by saza@chromium.org, Feb 5 2018

Mergedinto: 808364
Status: Duplicate (was: New)

Sign in to add a comment