Mes travailleurs web javascript sont en train de mourir en silence à des endroits aléatoires. Comment puis-je débugger?
-
22-10-2019 - |
Question
Le travailleur Web arrête juste, aucune erreur ou quoi que ce soit. Le code est entièrement déterministe, mais il va mourir à différents points dans le code.
Edit:. Le problème était que je ne maintenait pas une référence à mes travailleurs, et ils semblaient mourir au hasard quand ils ont été recueillis ordures
La solution
Le problème était que je ne maintenait pas une référence à mes travailleurs, et ils semblaient mourir au hasard quand ils ont été recueillis les déchets.
Autres conseils
J'ai trouvé une situation similaire dans Firefox où mon travailleur semblait échouer en silence après un nombre aléatoire d'appels à postMessage. Après plus de creuser, j'ai trouvé le vrai problème. Apparemment, les invocations du travailleur dans Firebug était la question. Firebug touchait un service JS de chrome de Firefox (espace de code privilégié) qui a été à l'origine du travailleur à échouer par intermittence, vous pouvez voir le patch ici: https://bugzilla.mozilla.org/show_bug.cgi?id=651980
Tant que vous faites tout en conformité avec le travailleur spec vous ne devriez pas voir ce problème. En ce qui concerne le correctif à Firebug / Fx, il devrait arriver dans Firefox 5 à la fin de Juin. Espérons que cela vous aide!
Même ici avec un travailleur web ne silencieusement dans Firefox, mais pas en chrome. Utilisait arborjs.org Appelé comme ceci:
buildVisualization = function() {
var sys = arbor.ParticleSystem(200, 200, 0.9); // create the system with sensible repulsion/stiffness/friction
sys.parameters({gravity:true}); // use center-gravity to make the graph settle nicely (ymmv)
sys.renderer = Renderer("#viewport"); // our newly created renderer will have its .init() method called shortly by sys...
}
Où arbre est l'objet en utilisant un Webworker.
J'ajouté la ligne window.sys = sys;
et il fonctionne maintenant comme un charme à la fois dans Firefox et Chrome.
buildVisualization = function() {
var sys = arbor.ParticleSystem(200, 200, 0.9); // create the system with sensible repulsion/stiffness/friction
window.sys = sys;
sys.parameters({gravity:true}); // use center-gravity to make the graph settle nicely (ymmv)
sys.renderer = Renderer("#viewport"); // our newly created renderer will have its .init() method called shortly by sys...
}