Turn off phone mid-fling crashes CRD iOS app. |
||
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 ()
,
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.
,
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
,
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
,
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
,
Oct 19 2017
|
||
►
Sign in to add a comment |
||
Comment 1 by yuweih@chromium.org
, Sep 21 2017Status: Assigned (was: Untriaged)