我们已经使用Ractjs 3、JavaScriptEngineSwitcher和Microsoft.ChakraCore开发了代码。
偶尔,我的应用程序需要几秒钟的时间来加载页面,但是我的应用程序日志中没有任何错误,所以我决定使用windows服务器上的DebugDiag工具来诊断它。然后我发现了几个与脉轮相关的ThreadAbortException。
System.Threading.ThreadAbortException 线程被中止。 ( System.Threading.WaitHandle.WaitOneNative(System.Runtime.InteropServices.SafeHandle,UInt32,布尔,布尔) System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle,Int64,布尔,布尔) System.Threading.WaitHandle.WaitOne(Int32,Boolean) JavaScriptEngineSwitcher.ChakraCore.ScriptDispatcher.StartThread() System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object(布尔) System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object) System.Threading.ThreadHelper.ThreadStart()
20%的线程有:
ChakraCore!JsDisposeRuntime+12a44入口点
调用堆栈
ntdll!NtWaitForMultipleObjects+14
KERNELBASE!WaitForMultipleObjectsEx+ef
ChakraCore+bd824
ChakraCore!JsDisposeRuntime+26ee
ChakraCore!JsDisposeRuntime+12aa1
kernel32!BaseThreadInitThunk+14
ntdll!RtlUserThreadStart+21
另有20%的人:
ChakraCore!JsDisposeRuntime+12a44入口点
调用堆栈
ntdll!NtWaitForMultipleObjects+14
KERNELBASE!WaitForMultipleObjectsEx+ef
ChakraCore!JsGetPropertyIdFromName+1673
ChakraCore!JsGetPropertyIdFromName+1410
ChakraCore!JsGetPropertyIdFromName+993
ChakraCore!JsDisposeRuntime+12aa1
kernel32!BaseThreadInitThunk+14
ntdll!RtlUserThreadStart+21
发布于 2017-09-06 21:51:20
是否正确地添加了对本地处理的JavaScriptValues的引用?如果不是,您将有内存损坏,其中一个症状将是在处理ChakraCore上下文/运行时崩溃。
有关如何防范此类问题的示例,请参阅响应本机Windows如何安全嵌入ChakraCore的实际示例 (同时仍在执行)。
https://stackoverflow.com/questions/44648224
复制相似问题