New issue
Advanced search Search tips

Issue 766698 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: iOS
Pri: 1
Type: Bug



Sign in to add a comment

Turn off phone mid-fling crashes CRD iOS app.

Project Member Reported by nicho...@chromium.org, Sep 19 2017

Issue description

Crash Line:

bool FlingTracker::IsFlingInProgress() const {
  return initial_speed_rate_ > 0;               <--- Here
}

Stack:

#0	0x000000010025a1a4 in remoting::FlingTracker::IsFlingInProgress() const at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../remoting/client/ui/fling_tracker.cc:83
#1	0x0000000100259b64 in remoting::FlingAnimation::IsAnimationInProgress() const at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../remoting/client/ui/fling_animation.cc:25
#2	0x0000000100259b90 in remoting::FlingAnimation::Tick() at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../remoting/client/ui/fling_animation.cc:29
#3	0x000000010165edb4 in remoting::GestureInterpreter::ProcessAnimations() at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../remoting/client/gesture_interpreter.cc:145
#4	0x000000010028a420 in ::-[RemotingClient rendererTicked]() at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../remoting/ios/session/remoting_client.mm:352
#5	0x0000000100294e18 in ::___ZN8remoting16GlDisplayHandler4Core15OnFrameRenderedEv_block_invoke() at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../remoting/ios/display/gl_display_handler.mm:175
#6	0x000000010028c108 in void base::internal::RunBlock<void>(base::mac::ScopedBlock<void () block_pointer __strong>) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/mac/bind_objc_block.h:47
#7	0x000000010028c468 in void base::internal::FunctorTraits<void (*)(base::mac::ScopedBlock<void () block_pointer __strong>), void>::Invoke<base::mac::ScopedBlock<void () block_pointer __strong> const&>(void (*)(base::mac::ScopedBlock<void () block_pointer __strong>), base::mac::ScopedBlock<void () block_pointer __strong> const&&&) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/bind_internal.h:149
#8	0x000000010028c3ec in void base::internal::InvokeHelper<false, void>::MakeItSo<void (* const&)(base::mac::ScopedBlock<void () block_pointer __strong>), base::mac::ScopedBlock<void () block_pointer __strong> const&>(void (* const&&&)(base::mac::ScopedBlock<void () block_pointer __strong>), base::mac::ScopedBlock<void () block_pointer __strong> const&&&) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/bind_internal.h:277
#9	0x000000010028c3ac in void base::internal::Invoker<base::internal::BindState<void (*)(base::mac::ScopedBlock<void () block_pointer __strong>), base::mac::ScopedBlock<void () block_pointer __strong> >, void ()>::RunImpl<void (* const&)(base::mac::ScopedBlock<void () block_pointer __strong>), std::__1::tuple<base::mac::ScopedBlock<void () block_pointer __strong> > const&, 0ul>(void (* const&&&)(base::mac::ScopedBlock<void () block_pointer __strong>), std::__1::tuple<base::mac::ScopedBlock<void () block_pointer __strong> > const&&&, std::__1::integer_sequence<unsigned long, 0ul>) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/bind_internal.h:349
#10	0x000000010028c2e8 in base::internal::Invoker<base::internal::BindState<void (*)(base::mac::ScopedBlock<void () block_pointer __strong>), base::mac::ScopedBlock<void () block_pointer __strong> >, void ()>::Run(base::internal::BindStateBase*) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/bind_internal.h:331
#11	0x00000001005edb40 in base::OnceCallback<void ()>::Run() && at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/callback.h:64
#12	0x00000001003254dc in base::debug::TaskAnnotator::RunTask(char const*, base::PendingTask*) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/debug/task_annotator.cc:61
#13	0x000000010039c168 in base::internal::IncomingTaskQueue::RunTask(base::PendingTask*) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/message_loop/incoming_task_queue.cc:143
#14	0x00000001003a20b0 in base::MessageLoop::RunTask(base::PendingTask*) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/message_loop/message_loop.cc:406
#15	0x00000001003a2560 in base::MessageLoop::DeferOrRunPendingTask(base::PendingTask) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/message_loop/message_loop.cc:417
#16	0x00000001003a2f38 in base::MessageLoop::DoWork() at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/message_loop/message_loop.cc:524
#17	0x00000001005e8b7c in base::MessagePumpCFRunLoopBase::RunWork() at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/message_loop/message_pump_mac.mm:421
#18	0x00000001005e8b14 in ::___ZN4base24MessagePumpCFRunLoopBase13RunWorkSourceEPv_block_invoke() at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/message_loop/message_pump_mac.mm:398
#19	0x00000001005db7ac in base::mac::CallWithEHFrame(void () block_pointer) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/mac/call_with_eh_frame.cc:18
#20	0x00000001005e83cc in base::MessagePumpCFRunLoopBase::RunWorkSource(void*) at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../base/message_loop/message_pump_mac.mm:397
#21	0x000000019063142c in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#22	0x0000000190630d04 in __CFRunLoopDoSources0 ()
#23	0x000000019062e9a8 in __CFRunLoopRun ()
#24	0x000000019055eda4 in CFRunLoopRunSpecific ()
#25	0x0000000191fc9074 in GSEventRunModal ()
#26	0x0000000196819c9c in UIApplicationMain ()
#27	0x000000010002db24 in main at /Users/nicholss/chromoting/crd-ios/src/out/Default/../../remoting/ios/app/main.mm:44
#28	0x000000018f56d59c in start ()

 

Comment 1 by yuweih@chromium.org, Sep 21 2017

Owner: yuweih@chromium.org
Status: Assigned (was: Untriaged)
I can repro that on the simulator.

Comment 2 by yuweih@chromium.org, Sep 21 2017

When I test it again today on my iPhone, it throws a thread DCHECK on AudioStreamConsumerProxy instead...

There is actually a thread bug in AudioStreamConsumerProxy, but it doesn't seem to be related to the fling animation... After fixing that bug, it looks like the app will just gracefully disconnects when I lock the phone, and I couldn't repro the fling animation crash any more...

Anyway, let's check in the fix for the proxy first.
Project Member

Comment 3 by bugdroid1@chromium.org, Sep 22 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/749354bd75f409e95627d7290a948d01bf5bc90d

commit 749354bd75f409e95627d7290a948d01bf5bc90d
Author: Yuwei Huang <yuweih@chromium.org>
Date: Fri Sep 22 19:12:29 2017

[CRD iOS] Fix a thread issue in AudioStreamConsumerProxy

AudioStreamConsumerProxy holds both its core and its weak factory.
While its core (or more precisely the core's weak_factory) is bound to
the audio thread, its weak factory is bound to the UI thread, which
means the proxy must destroy one of them on one thread then post a task
to destroy the other one on another thread.

This CL fixes this issue and also makes AudioPlayerIos follow the new
rule. The fix is a bit dirty but is the easiest fix for now.

Bug:  766698 
Change-Id: I5f64e42a95b9678e4f1dda5fd92a4baaedaa4487
Reviewed-on: https://chromium-review.googlesource.com/677756
Reviewed-by: Scott Nichols <nicholss@chromium.org>
Commit-Queue: Yuwei Huang <yuweih@chromium.org>
Cr-Commit-Position: refs/heads/master@{#503816}
[modify] https://crrev.com/749354bd75f409e95627d7290a948d01bf5bc90d/remoting/ios/audio/audio_player_ios.h
[modify] https://crrev.com/749354bd75f409e95627d7290a948d01bf5bc90d/remoting/ios/audio/audio_player_ios.mm
[modify] https://crrev.com/749354bd75f409e95627d7290a948d01bf5bc90d/remoting/ios/audio/audio_stream_consumer_proxy.cc
[modify] https://crrev.com/749354bd75f409e95627d7290a948d01bf5bc90d/remoting/ios/session/remoting_client.mm

Project Member

Comment 4 by bugdroid1@chromium.org, Sep 26 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/00475fa5e575fc201ae2917641d62946bc9cabcb

commit 00475fa5e575fc201ae2917641d62946bc9cabcb
Author: Yuwei Huang <yuweih@chromium.org>
Date: Tue Sep 26 18:59:45 2017

[CRD iOS] Fix a race condition bug of input_stub

When a connection is closed by the host, ChromotingClient will first
get the notification on network thread, then free the connection object
and notify UI components on the UI thread. In some rare situations,
a mouse event may be posted to the network thread after the connection
is reset and before ChromotingSession starts cleaning up resources, and
causes segfault because the input_stub is already freed by the
connection.

This CL fixes this problem by immediately resetting the input_stub when
the connection is being reset.

Bug:  766698 
Change-Id: I95d230565154dfe3762b9de516f5fa02dabb2bba
Reviewed-on: https://chromium-review.googlesource.com/683801
Reviewed-by: Scott Nichols <nicholss@chromium.org>
Commit-Queue: Yuwei Huang <yuweih@chromium.org>
Cr-Commit-Position: refs/heads/master@{#504443}
[modify] https://crrev.com/00475fa5e575fc201ae2917641d62946bc9cabcb/remoting/client/chromoting_client.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Oct 4 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/39f3a93a56626d65dc1ab95bbd9704bc701df577

commit 39f3a93a56626d65dc1ab95bbd9704bc701df577
Author: Yuwei Huang <yuweih@chromium.org>
Date: Wed Oct 04 22:43:36 2017

[CRD iOS] Fix crash when locking phone during mid-fling

-[RemotingClient rendererTicked] could be called right after the session
is disconnected, which will call _gestureInterpreter->ProcessAnimations()
when _gestureInterpreter is null and will crash the app.

This CL fixes this issue by null-checking the interpreter before using
it.

Bug:  766698 
Change-Id: Iac116f1d05e654b3b96579baa982f3652adb7642
Reviewed-on: https://chromium-review.googlesource.com/700320
Commit-Queue: Yuwei Huang <yuweih@chromium.org>
Reviewed-by: Scott Nichols <nicholss@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506548}
[modify] https://crrev.com/39f3a93a56626d65dc1ab95bbd9704bc701df577/remoting/ios/session/remoting_client.mm

Comment 6 by yuweih@chromium.org, Oct 19 2017

Status: Fixed (was: Assigned)

Sign in to add a comment