Meine JavaScript -Webarbeiter sterben schweigend an zufälligen Stellen. Wie kann ich das debuggen?

StackOverflow https://stackoverflow.com/questions/4770415

Frage

Der Webarbeiter stoppt nur, keine Fehler oder irgendetwas. Der Code ist völlig deterministisch, wird aber an verschiedenen Stellen im Code sterben.

Bearbeiten: Das Problem war, dass ich keinen Bezug auf meine Arbeiter aufrechterhielt, und so schienen sie zufällig zu sterben, als sie Müll gesammelt wurden.

War es hilfreich?

Lösung

Das Problem war, dass ich keinen Hinweis auf meine Arbeiter aufrechterhielt, und so schienen sie zufällig zu sterben, als sie Müll gesammelt wurden.

Andere Tipps

Ich fand eine ähnliche Situation in Firefox, in der mein Arbeiter nach einer zufälligen Anzahl von Aufrufen der Postmessage schweigend versagte. Nach mehr Graben fand ich das eigentliche Problem. Anscheinend war die Bevölkerung des Arbeitnehmers in Firebug das Problem. Firebug berührte einen Dienst in Firefox 'Chrome JS (privilegierter Coderaum), der dazu führte, dass der Arbeiter zeitweise versagert. Sie können den Patch hier dafür sehen: https://bugzilla.mozilla.org/show_bug.cgi?id=651980

Solange Sie alles in Übereinstimmung mit der Arbeiterspezifikation tun, sollten Sie dieses Problem nicht sehen. Die Fix an Firebug/FX sollte Ende Juni in Firefox 5 ankommen. Hoffe das hilft dir!

Gleiches gilt hier mit einem Webarbeiter, der in Firefox, aber nicht in Chrome, stillschweigend versagt hat. Ich benutzte Arborjs.org so wie folgt:

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... 
}

Wo Arbor das Objekt mit einem Webworker ist.

Ich habe das hinzugefügt window.sys = sys; Linie und es funktioniert jetzt wie ein Zauber sowohl in Firefox als auch in 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...
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top