2017-06-20 12 views
1

Nous avons développé notre code en utilisant Ractjs 3, JavaScriptEngineSwitcher et Microsoft.ChakraCore.reactjs.net Le thread était en cours d'abandon

De temps en temps, mon application mettait quelques secondes à charger une page, mais je n'avais aucune erreur sur mon journal d'application, j'ai donc décidé de la diagnostiquer avec les outils DebugDiag sur le serveur Windows. Ensuite, j'ai trouvé plusieurs ThreadAbortException liées à Chakra.

System.Threading.ThreadAbortException

Fil était interrompu

System.Threading.WaitHandle.WaitOneNative (System.Runtime.InteropServices.SafeHandle, UInt32, Boolean, Boolean) System.Threading. WaitHandle.InternalWaitOne (System.Runtime.InteropServices.SafeHandle, Int64, Boolean, Boolean) System.Threading.WaitHandle.WaitOne (Int32, Boolean) JavaScriptEngineSwitcher.ChakraCore.ScriptDispatcher.StartThread() System.Threading.ExecutionContext.RunInt ernal (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) System.Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) Système. Threading.ExecutionContext.Run (System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) System.Threading.ThreadHelper.ThreadStart()

20% de tous les sujets ont :.

Point d'entrée ChakraCore! JsDisposeRuntime + 12a44

Appel Stack

ntdll! NTWaitForMultipleObjects + 14

kernelbase! WaitForMultipleObjectsEx + ef

ChakraCore + bd824

C ! HakraCore JsDisposeRuntime + 26ee

ChakraCore JsDisposeRuntime + 12aa1

de kernel32 BaseThreadInitThunk + 14

de ntdll RtlUserThreadStart + 21

également un autre 20% ont:!

Point d'entrée ChakraCore ! JsDisposeRuntime + 12a44

Appel Stack

ntdll! NTWaitForMultipleObjects + 14

kernelbase! WaitForMultipleObjectsEx + ef

ChakraCore! JsGetPropertyIdFromName + 1673

ChakraCore!JsGetPropertyIdFromName + 1410

ChakraCore! JsGetPropertyIdFromName + 993

ChakraCore! JsDisposeRuntime + 12aa1

kernel32! BaseThreadInitThunk + 14

ntdll! RtlUserThreadStart + 21

+0

Cette erreur est-elle toujours d'actualité? –

Répondre

0

-vous ajouter correctement les références à JavaScriptValues que vous traitez du côté autochtone? Si ce n'est pas le cas, vous aurez une corruption de la mémoire dont l'un des symptômes serait un blocage de la mise à disposition du contexte/de l'exécution de ChakraCore.

Pour un exemple de protection contre cette classe de problèmes, voir React Native Windows' real-world example of how to safely embed ChakraCore (tout en étant performant).