Thanks for taking the time to look into this!

What would be a suitable patch we could apply to fix this? Hopefully we can 
patch V8 on our end and test a couple other scenarios.

Thank you again!

On Tuesday, February 22, 2022 at 6:09:49 AM UTC-3 jgr...@chromium.org wrote:

> On Tue, Feb 22, 2022 at 7:17 AM Jakob Gruber <jgr...@chromium.org> wrote:
>
>> Looks to me like a deadlock between
>>
>>   if (blocking_behavior == BlockingBehavior::kBlock) {
>>     base::MutexGuard lock_guard(&ref_count_mutex_);
>>     while (ref_count_ > 0) ref_count_zero_.Wait(&ref_count_mutex_);
>>
>>
>> https://source.chromium.org/chromium/chromium/src/+/main:v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc;l=172;drc=a2d4701bea545269ad3f5fe6e111adb65c46b8da
>>
>> and
>>
>>       base::MutexGuard lock_guard(&dispatcher_->ref_count_mutex_);
>>       if (--dispatcher_->ref_count_ == 0) {
>>
>>
>> https://source.chromium.org/chromium/chromium/src/+/main:v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc;l=82;drc=a2d4701bea545269ad3f5fe6e111adb65c46b8da
>>
>> I'm puzzled how this should work, maybe I'm missing something. The 
>> ref_count_mutex_ is locked on both sides, so if we enter the while-loop 
>> waiting for it to hit zero, we can't actually decrement the ref count.
>>
>
> Indeed I missed the (obvious in hindsight) 
> `ref_count_zero_.Wait(&ref_count_mutex_);` call, thanks tebbi@ for pointing 
> that out.
>  
>
>>
>> On Tue, Feb 22, 2022 at 2:16 AM Igor Randjelovic <rigo...@gmail.com> 
>> wrote:
>>
>>> Hello, I'm also from the NativeScript team...
>>>
>>> Another case that we found to hang the same way is whenever we handle 
>>> the `*Debugger.setBreakpointByUrl*` protocol message, in which case we 
>>> see the following stack:
>>>
>>> v8_inspector::(anonymous 
>>> namespace)::ActualScript::setBreakpoint(v8_inspector::String16 const&, 
>>> v8::debug::Location*, int*) const v8-debugger-script.cc:255 
>>> v8_inspector::V8DebuggerAgentImpl::setBreakpointImpl(v8_inspector::String16 
>>> const&, v8_inspector::String16 const&, v8_inspector::String16 const&, int, 
>>> int) v8-debugger-agent-impl.cc:953 
>>> v8_inspector::V8DebuggerAgentImpl::setBreakpointByUrl(int, 
>>> v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, 
>>> v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, 
>>> v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, 
>>> v8_crdtp::detail::ValueMaybe<int>, 
>>> v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, 
>>> v8_inspector::String16*, 
>>> std::__Cr::unique_ptr<std::__Cr::vector<std::__Cr::unique_ptr<v8_inspector::protocol::Debugger::Location,
>>>  
>>> std::__Cr::default_delete<v8_inspector::protocol::Debugger::Location> >, 
>>> std::__Cr::allocator<std::__Cr::unique_ptr<v8_inspector::protocol::Debugger::Location,
>>>  
>>> std::__Cr::default_delete<v8_inspector::protocol::Debugger::Location> > > 
>>> >, 
>>> std::__Cr::default_delete<std::__Cr::vector<std::__Cr::unique_ptr<v8_inspector::protocol::Debugger::Location,
>>>  
>>> std::__Cr::default_delete<v8_inspector::protocol::Debugger::Location> >, 
>>> std::__Cr::allocator<std::__Cr::unique_ptr<v8_inspector::protocol::Debugger::Location,
>>>  
>>> std::__Cr::default_delete<v8_inspector::protocol::Debugger::Location> > > > 
>>> > >*) v8-debugger-agent-impl.cc:582 
>>> v8_inspector::protocol::Debugger::DomainDispatcherImpl::setBreakpointByUrl(v8_crdtp::Dispatchable
>>>  
>>> const&) Debugger.cpp:1333 
>>> v8_inspector::protocol::Debugger::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>  
>>> char>)::$_29::operator()(v8_crdtp::Dispatchable const&) const 
>>> Debugger.cpp:519 
>>> decltype(std::__Cr::forward<v8_inspector::protocol::Debugger::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>  
>>> char>)::$_29&>(fp)(std::__Cr::forward<v8_crdtp::Dispatchable const&>(fp0))) 
>>> std::__Cr::__invoke<v8_inspector::protocol::Debugger::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>  
>>> char>)::$_29&, v8_crdtp::Dispatchable 
>>> const&>(v8_inspector::protocol::Debugger::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>  
>>> char>)::$_29&, v8_crdtp::Dispatchable const&) type_traits:3694 void 
>>> std::__Cr::__invoke_void_return_wrapper<void, 
>>> true>::__call<v8_inspector::protocol::Debugger::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>  
>>> char>)::$_29&, v8_crdtp::Dispatchable 
>>> const&>(v8_inspector::protocol::Debugger::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>  
>>> char>)::$_29&, v8_crdtp::Dispatchable const&) __functional_base:348 
>>> std::__Cr::__function::__default_alloc_func<v8_inspector::protocol::Debugger::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>  
>>> char>)::$_29, void (v8_crdtp::Dispatchable 
>>> const&)>::operator()(v8_crdtp::Dispatchable const&) functional:1611 void 
>>> std::__Cr::__function::__policy_invoker<void (v8_crdtp::Dispatchable 
>>> const&)>::__call_impl<std::__Cr::__function::__default_alloc_func<v8_inspector::protocol::Debugger::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>  
>>> char>)::$_29, void (v8_crdtp::Dispatchable const&)> 
>>> >(std::__Cr::__function::__policy_storage const*, v8_crdtp::Dispatchable 
>>> const&) functional:2092 void std::__Cr::__function::__policy_invoker<void 
>>> ()>::__call_impl<std::__Cr::__function::__default_alloc_func<v8_crdtp::UberDispatcher::Dispatch(v8_crdtp::Dispatchable
>>>  
>>> const&) const::$_0, void ()> >(std::__Cr::__function::__policy_storage 
>>> const*) 0x00000000b91e6ee1 v8_crdtp::UberDispatcher::DispatchResult::Run() 
>>> 0x00000000b91e516a 
>>> v8_inspector::V8InspectorSessionImpl::dispatchProtocolMessage(v8_inspector::StringView)
>>>  
>>> v8-inspector-session-impl.cc:451 
>>> tns::JsV8InspectorClient::doDispatchMessage(v8::Isolate*, 
>>> std::__Cr::basic_string<char, std::__Cr::char_traits<char>, 
>>> std::__Cr::allocator<char> > const&) JsV8InspectorClient.cpp:131 
>>> tns::JsV8InspectorClient::dispatchMessage(std::__Cr::basic_string<char, 
>>> std::__Cr::char_traits<char>, std::__Cr::allocator<char> > const&) 
>>> JsV8InspectorClient.cpp:89 
>>> ::Java_com_tns_AndroidJsV8Inspector_dispatchMessage(JNIEnv *, jobject, 
>>> jstring) com_tns_AndroidJsV8Inspector.cpp:29 
>>> art_quick_generic_jni_trampoline 0x00000000e400b2b3 art_quick_invoke_stub 
>>> 0x00000000e4004aa3 art::ArtMethod::Invoke(art::Thread*, unsigned int*, 
>>> unsigned int, art::JValue*, char const*) 0x00000000e4099502 
>>> art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, 
>>> art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 
>>> 0x00000000e424f882 bool art::interpreter::DoCall<false, 
>>> false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction 
>>> const*, unsigned short, art::JValue*) 0x00000000e4243bbf void 
>>> art::interpreter::ExecuteSwitchImplCpp<false, 
>>> false>(art::interpreter::SwitchImplContext*) 0x00000000e4017fcf 
>>> ExecuteSwitchImplAsm 0x00000000e400bf63 
>>> art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, 
>>> art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989) 
>>> 0x00000000e4238e02 
>>> art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, 
>>> art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 
>>> 0x00000000e4242da0 bool art::interpreter::DoCall<false, 
>>> false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction 
>>> const*, unsigned short, art::JValue*) 0x00000000e4243ba1 void 
>>> art::interpreter::ExecuteSwitchImplCpp<false, 
>>> false>(art::interpreter::SwitchImplContext*) 0x00000000e4017d01 
>>> ExecuteSwitchImplAsm 0x00000000e400bf63 
>>> art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, 
>>> art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989) 
>>> 0x00000000e4238e02 
>>> art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, 
>>> art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 
>>> 0x00000000e4242da0 bool art::interpreter::DoCall<false, 
>>> false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction 
>>> const*, unsigned short, art::JValue*) 0x00000000e4243ba1 void 
>>> art::interpreter::ExecuteSwitchImplCpp<false, 
>>> false>(art::interpreter::SwitchImplContext*) 0x00000000e4016381 
>>> ExecuteSwitchImplAsm 0x00000000e400bf63 
>>> art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, 
>>> art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989) 
>>> 0x00000000e4238e02 
>>> art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, 
>>> art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 
>>> 0x00000000e4242da0 bool art::interpreter::DoCall<false, 
>>> false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction 
>>> const*, unsigned short, art::JValue*) 0x00000000e4243ba1 void 
>>> art::interpreter::ExecuteSwitchImplCpp<false, 
>>> false>(art::interpreter::SwitchImplContext*) 0x00000000e4017fcf 
>>> ExecuteSwitchImplAsm 0x00000000e400bf63 
>>> art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, 
>>> art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989) 
>>> 0x00000000e4238e02 
>>> art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, 
>>> art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 
>>> 0x00000000e4242da0 bool art::interpreter::DoCall<false, 
>>> true>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction 
>>> const*, unsigned short, art::JValue*) 0x00000000e4244636 void 
>>> art::interpreter::ExecuteSwitchImplCpp<true, 
>>> false>(art::interpreter::SwitchImplContext*) 0x00000000e4057794 
>>> ExecuteSwitchImplAsm 0x00000000e400bf63 
>>> art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, 
>>> art::ShadowFrame&, art::JValue, bool, bool) (.llvm.10914192770458939989) 
>>> 0x00000000e4238c0f 
>>> art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, 
>>> art::CodeItemDataAccessor const&, art::ShadowFrame*) 0x00000000e4242c81 
>>> artQuickToInterpreterBridge 0x00000000e4656186 
>>> art_quick_to_interpreter_bridge 0x00000000e400b38e <unknown> 
>>> 0x00000000e400b530
>>>
>>> As Eduardo mentioned, any hints or insights would be very appreciated!
>>>
>>> Thanks,
>>> Igor
>>>
>>> On Monday, 21 February 2022 at 22:33:22 UTC+1 Eduardo Speroni wrote:
>>>
>>>> Hello!
>>>>
>>>> We're trying to upgrade the v8 runtime to 9.7 in NativeScript but ran 
>>>> into this issue when implementing the code for enabling the inspector 
>>>> console.
>>>>
>>>> We receive the message and call v8::debug::EvaluateGlobal with 
>>>> kDisableBreaksAndThrowOnSideEffect:
>>>>
>>>>
>>>> https://github.com/NativeScript/android-runtime/blob/3a8316d47f965730ca9edeec8bed733a2636c6d9/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/v8-runtime-agent-impl.cc#L279-L289
>>>>
>>>> After that the thread hangs. Pausing the app shows the following stack 
>>>> trace:
>>>>
>>>> syscall 0x00000073f171d35c __futex_wait_ex(void volatile*, bool, int, 
>>>> bool, timespec const*) 0x00000073f1721984 pthread_cond_wait 
>>>> 0x00000073f1781b90 
>>>> v8::internal::OptimizingCompileDispatcher::FlushQueues(v8::internal::BlockingBehavior,
>>>>  
>>>> bool) 0x00000070cd85c348 
>>>> v8::internal::OptimizingCompileDispatcher::Flush(v8::internal::BlockingBehavior)
>>>>  
>>>> 0x00000070cd85c3b4 
>>>> v8::internal::Debug::DeoptimizeFunction(v8::internal::Handle<v8::internal::SharedFunctionInfo>)
>>>>  
>>>> 0x00000070cd576324 v8::internal::Runtime_DebugOnFunctionCall(int, unsigned 
>>>> long*, v8::internal::Isolate*) 0x00000070cd8f8b98 
>>>> Builtins_CEntry_Return1_DontSaveFPRegs_ArgvOnStack_NoBuiltinExit 
>>>> 0x00000070cdb6856c Builtins_CallFunction_ReceiverIsAny 0x00000070cdae25ec 
>>>> Builtins_JSEntryTrampoline 0x00000070cdaebacc Builtins_JSEntry 
>>>> 0x00000070cdaeb768 v8::internal::(anonymous 
>>>> namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous 
>>>> namespace)::InvokeParams const&) 0x00000070cd60b6d4 
>>>> v8::internal::Execution::CallScript(v8::internal::Isolate*, 
>>>> v8::internal::Handle<v8::internal::JSFunction>, 
>>>> v8::internal::Handle<v8::internal::Object>, 
>>>> v8::internal::Handle<v8::internal::FixedArray>) 0x00000070cd60b9d4 
>>>> v8::internal::DebugEvaluate::Global(v8::internal::Isolate*, 
>>>> v8::internal::Handle<v8::internal::JSFunction>, 
>>>> v8::debug::EvaluateGlobalMode, v8::internal::REPLMode) 0x00000070cd56926c 
>>>> v8::internal::DebugEvaluate::Global(v8::internal::Isolate*, 
>>>> v8::internal::Handle<v8::internal::String>, v8::debug::EvaluateGlobalMode, 
>>>> v8::internal::REPLMode) 0x00000070cd569080 
>>>> v8::debug::EvaluateGlobal(v8::Isolate*, v8::Local<v8::String>, 
>>>> v8::debug::EvaluateGlobalMode, bool) 0x00000070cd566580 
>>>> v8_inspector::V8RuntimeAgentImpl::evaluate(v8_inspector::String16 const&, 
>>>> v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, 
>>>> v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, 
>>>> v8_crdtp::detail::ValueMaybe<int>, v8_crdtp::detail::ValueMaybe<bool>, 
>>>> v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, 
>>>> v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, 
>>>> v8_crdtp::detail::ValueMaybe<double>, v8_crdtp::detail::ValueMaybe<bool>, 
>>>> v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, 
>>>> v8_crdtp::detail::ValueMaybe<v8_inspector::String16>, 
>>>> std::__Cr::unique_ptr<v8_inspector::protocol::Runtime::Backend::EvaluateCallback,
>>>>  
>>>> std::__Cr::default_delete<v8_inspector::protocol::Runtime::Backend::EvaluateCallback>
>>>>  
>>>> >) v8-runtime-agent-impl.cc:309 
>>>> v8_inspector::protocol::Runtime::DomainDispatcherImpl::evaluate(v8_crdtp::Dispatchable
>>>>  
>>>> const&) Runtime.cpp:961 
>>>> v8_inspector::protocol::Runtime::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>>  
>>>> char>)::$_69::operator()(v8_crdtp::Dispatchable const&) const 
>>>> Runtime.cpp:635 
>>>> decltype(std::__Cr::forward<v8_inspector::protocol::Runtime::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>>  
>>>> char>)::$_69&>(fp)(std::__Cr::forward<v8_crdtp::Dispatchable 
>>>> const&>(fp0))) 
>>>> std::__Cr::__invoke<v8_inspector::protocol::Runtime::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>>  
>>>> char>)::$_69&, v8_crdtp::Dispatchable 
>>>> const&>(v8_inspector::protocol::Runtime::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>>  
>>>> char>)::$_69&, v8_crdtp::Dispatchable const&) type_traits:3694 void 
>>>> std::__Cr::__invoke_void_return_wrapper<void, 
>>>> true>::__call<v8_inspector::protocol::Runtime::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>>  
>>>> char>)::$_69&, v8_crdtp::Dispatchable 
>>>> const&>(v8_inspector::protocol::Runtime::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>>  
>>>> char>)::$_69&, v8_crdtp::Dispatchable const&) __functional_base:348 
>>>> std::__Cr::__function::__default_alloc_func<v8_inspector::protocol::Runtime::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>>  
>>>> char>)::$_69, void (v8_crdtp::Dispatchable 
>>>> const&)>::operator()(v8_crdtp::Dispatchable const&) functional:1611 void 
>>>> std::__Cr::__function::__policy_invoker<void (v8_crdtp::Dispatchable 
>>>> const&)>::__call_impl<std::__Cr::__function::__default_alloc_func<v8_inspector::protocol::Runtime::DomainDispatcherImpl::Dispatch(v8_crdtp::span<unsigned
>>>>  
>>>> char>)::$_69, void (v8_crdtp::Dispatchable const&)> 
>>>> >(std::__Cr::__function::__policy_storage const*, v8_crdtp::Dispatchable 
>>>> const&) functional:2092 v8_crdtp::UberDispatcher::DispatchResult::Run() 
>>>> 0x00000070cd1e2954 
>>>> v8_inspector::V8InspectorSessionImpl::dispatchProtocolMessage(v8_inspector::StringView)
>>>>  
>>>> v8-inspector-session-impl.cc:454 
>>>> tns::JsV8InspectorClient::doDispatchMessage(v8::Isolate*, 
>>>> std::__Cr::basic_string<char, std::__Cr::char_traits<char>, 
>>>> std::__Cr::allocator<char> > const&) JsV8InspectorClient.cpp:131 
>>>> tns::JsV8InspectorClient::dispatchMessage(std::__Cr::basic_string<char, 
>>>> std::__Cr::char_traits<char>, std::__Cr::allocator<char> > const&) 
>>>> JsV8InspectorClient.cpp:89 
>>>> ::Java_com_tns_AndroidJsV8Inspector_dispatchMessage(JNIEnv *, jobject, 
>>>> jstring) com_tns_AndroidJsV8Inspector.cpp:29 
>>>> art_quick_generic_jni_trampoline 0x00000071422d9a48 art_quick_invoke_stub 
>>>> 0x00000071422d0168 
>>>> art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, 
>>>> art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 
>>>> 0x00000071422f47c8 bool art::interpreter::DoCall<false, 
>>>> false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction 
>>>> const*, unsigned short, art::JValue*) 0x0000007142417a20 void 
>>>> art::interpreter::ExecuteSwitchImplCpp<false, 
>>>> false>(art::interpreter::SwitchImplContext*) 0x000000714221660c 
>>>> ExecuteSwitchImplAsm 0x00000071422dc3dc 
>>>> art::interpreter::ExecuteSwitch(art::Thread*, art::CodeItemDataAccessor 
>>>> const&, art::ShadowFrame&, art::JValue, bool) (.llvm.6649268296134209133) 
>>>> 0x0000007142545d58 art::interpreter::Execute(art::Thread*, 
>>>> art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, 
>>>> bool) (.llvm.6649268296134209133) 0x000000714227e2f0 
>>>> art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, 
>>>> art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 
>>>> 0x00000071423851d4 bool art::interpreter::DoCall<false, 
>>>> false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction 
>>>> const*, unsigned short, art::JValue*) 0x0000007142417c98 void 
>>>> art::interpreter::ExecuteSwitchImplCpp<false, 
>>>> false>(art::interpreter::SwitchImplContext*) 0x00000071422166a0 
>>>> ExecuteSwitchImplAsm 0x00000071422dc3dc 
>>>> art::interpreter::ExecuteSwitch(art::Thread*, art::CodeItemDataAccessor 
>>>> const&, art::ShadowFrame&, art::JValue, bool) (.llvm.6649268296134209133) 
>>>> 0x0000007142545d58 art::interpreter::Execute(art::Thread*, 
>>>> art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, 
>>>> bool) (.llvm.6649268296134209133) 0x000000714227e2f0 
>>>> art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, 
>>>> art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 
>>>> 0x00000071423851d4 bool art::interpreter::DoCall<false, 
>>>> false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction 
>>>> const*, unsigned short, art::JValue*) 0x0000007142417c98 void 
>>>> art::interpreter::ExecuteSwitchImplCpp<false, 
>>>> false>(art::interpreter::SwitchImplContext*) 0x0000007142210704 
>>>> ExecuteSwitchImplAsm 0x00000071422dc3dc 
>>>> art::interpreter::ExecuteSwitch(art::Thread*, art::CodeItemDataAccessor 
>>>> const&, art::ShadowFrame&, art::JValue, bool) (.llvm.6649268296134209133) 
>>>> 0x0000007142545d58 art::interpreter::Execute(art::Thread*, 
>>>> art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, 
>>>> bool) (.llvm.6649268296134209133) 0x000000714227e2f0 
>>>> art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, 
>>>> art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 
>>>> 0x00000071423851d4 bool art::interpreter::DoCall<false, 
>>>> false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction 
>>>> const*, unsigned short, art::JValue*) 0x0000007142417c98 void 
>>>> art::interpreter::ExecuteSwitchImplCpp<false, 
>>>> false>(art::interpreter::SwitchImplContext*) 0x000000714221660c 
>>>> ExecuteSwitchImplAsm 0x00000071422dc3dc 
>>>> art::interpreter::ExecuteSwitch(art::Thread*, art::CodeItemDataAccessor 
>>>> const&, art::ShadowFrame&, art::JValue, bool) (.llvm.6649268296134209133) 
>>>> 0x0000007142545d58 art::interpreter::Execute(art::Thread*, 
>>>> art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, 
>>>> bool) (.llvm.6649268296134209133) 0x000000714227e2f0 
>>>> art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, 
>>>> art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 
>>>> 0x00000071423851d4 bool art::interpreter::DoCall<false, 
>>>> false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction 
>>>> const*, unsigned short, art::JValue*) 0x0000007142417c98 void 
>>>> art::interpreter::ExecuteSwitchImplCpp<false, 
>>>> false>(art::interpreter::SwitchImplContext*) 0x0000007142210704 
>>>> ExecuteSwitchImplAsm 0x00000071422dc3dc MterpInvokeStatic 
>>>> 0x0000007142775dc0 mterp_op_invoke_static 0x00000071422caa18 
>>>> art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, 
>>>> art::ShadowFrame&, art::JValue, bool, bool) (.llvm.6649268296134209133) 
>>>> 0x000000714227dd78 artQuickToInterpreterBridge 0x000000714227cf20 
>>>> art_quick_to_interpreter_bridge 0x00000071422d9b7c <unknown> 
>>>> 0x00000071422d9d90
>>>>
>>>>
>>>>
>>>> I believe the code is hanging on this line exactly:
>>>>
>>>>
>>>> https://github.com/v8/v8/blob/2257f6b14584c191e601cd10ccf3925540f2e492/src/compiler-dispatcher/optimizing-compile-dispatcher.cc#L179
>>>>
>>>> but I can't find out why. Checking the other threads it doesn't seem 
>>>> there are any v8 calls hanging. If we switch to kDisableBreaks or 
>>>> kDefault then the app doesn't hang anymore, but the behavior still isn't 
>>>> correct.
>>>>
>>>> Any insight would be greatly appreciated! Thanks
>>>>
>>> -- 
>>> -- 
>>> v8-users mailing list
>>> v8-u...@googlegroups.com
>>> http://groups.google.com/group/v8-users
>>> --- 
>>> You received this message because you are subscribed to the Google 
>>> Groups "v8-users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send 
>>> an email to v8-users+u...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/v8-users/64391392-e134-4b57-9bd8-b1b7c41f8a5dn%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/v8-users/64391392-e134-4b57-9bd8-b1b7c41f8a5dn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
-- 
v8-users mailing list
v8-users@googlegroups.com
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-users/69965e79-f2b1-49cc-a7dc-684f18ed93aan%40googlegroups.com.

Reply via email to