3.28.4에서 6.1.534.47로 임베디드 V8 라이브러리를 업그레이드 한 후 이상한 문제를 발견했습니다 (현재 node.js 8.9.1에서와 동일). JavaScript 코드로 이벤트를 전달하는 코드가 있습니다 (기본적으로 v8::Function::Call()
). 이것은 수천 번 제대로 실행되지만, 결국 v8::Function::Call()
은 반환되지 않으며, v8::internal::Runtime_TryInstallOptimizedCode()
에 매달려 있습니다. GCC 7.2 연타/애플 LLVM 9.0 우분투 17.10로 모두 맥 OS 10.12에서이를 관찰v8 Runtime_TryInstallOptimizedCode에서 JavaScript 함수 실행이 중단됨
frame #0: 0x0000000104f43cfc libv8.dylib`v8::internal::Runtime_TryInstallOptimizedCode(int, v8::internal::Object**, v8::internal::Isolate*) [inlined] v8::internal::__RT_impl_Runtime_TryInstallOptimizedCode(v8::internal::Arguments, v8::internal::Isolate*) at runtime-compiler.cc:374 [opt]
frame #1: 0x0000000104f43cd5 libv8.dylib`v8::internal::Runtime_TryInstallOptimizedCode(args_length=1, args_object=0x0000700001d1a0f0, isolate=0x000000010182d200) at runtime-compiler.cc:371 [opt]
frame #2: 0x000028715ea040bd
frame #3: 0x000028715ea15b12
frame #4: 0x000028715ea12cf0
frame #5: 0x000028715eadea2d
frame #6: 0x0000000104cb5ba3 libv8.dylib`v8::internal::(anonymous namespace)::Invoke(isolate=0x000000010182d2c8, is_construct=<unavailable>, target=<unavailable>, receiver=<unavailable>, argc=1, args=0x0000700001d1ad10, new_target=<unavailable>, message_handling=<unavailable>) at execution.cc:145 [opt]
frame #7: 0x0000000104cb58cc libv8.dylib`v8::internal::Execution::Call(v8::internal::Isolate*, v8::internal::Handle<v8::internal::Object>, v8::internal::Handle<v8::internal::Object>, int, v8::internal::Handle<v8::internal::Object>*) [inlined] v8::internal::(anonymous namespace)::CallInternal(message_handling=kReport) at execution.cc:181 [opt]
frame #8: 0x0000000104cb585d libv8.dylib`v8::internal::Execution::Call(isolate=0x000000010182d200, callable=Handle<v8::internal::Object> @ r12, receiver=<unavailable>, argc=1, argv=0x0000700001d1ad10) at execution.cc:191 [opt]
frame #9: 0x0000000104984d80 libv8.dylib`v8::Function::Call(this=0x000000010281fa50, context=<unavailable>, recv=<unavailable>, argc=1, argv=0x0000700001d1ad10) at api.cc:5343 [opt]
frame #10: 0x0000000104849c01 libPocoJSCored.1.dylib`Poco::JS::Core::JSExecutor::callInContext(this=0x0000000102029a00, jsObject=0x0000000100e64458, method="valueChanged", argc=1, argv=0x0000700
:
여기 스택 추적입니다.
아이디어가 있으십니까?
감사합니다. 그 동안에는 다른 문제로 혼란스러워했으나 오늘 더 많은 정보를 담은 버그 보고서를 제출할 것입니다. –
참고 : https://bugs.chromium.org/p/v8/issues/detail?id=7207 –
여기에서 확인할 수 있습니다.이 버그는 이후 V8 버전 (6.4 이상)에서 이미 수정되었으므로 https : //를 참조하십시오. bugs.chromium.org/p/v8/issues/detail?id=6933 6.2/6.3의 경우, 직접 수정 프로그램을 체리로 선택할 수 있습니다. 노드가 여기 있습니다 : https://github.com/nodejs/node/pull/17695 – jmrk