Мои работники из javascript тихо умирают в случайных местах.Как я могу отладить это? - PullRequest
2 голосов
/ 22 января 2011

Веб-работник просто останавливается, без ошибок или чего-то еще.Код полностью детерминирован, но он умрет в разных точках кода.

Редактировать: Проблема заключалась в том, что я не поддерживал ссылку на моих работников, и поэтому они казались случайными, когда они были мусоромсобраны.

Ответы [ 3 ]

1 голос
/ 27 мая 2011

Я обнаружил аналогичную ситуацию в Firefox, когда мой работник, казалось, молча терпел неудачу после случайного числа вызовов postMessage.После еще копания я нашел реальную проблему.Видимо призывы рабочего в Firebug были проблемой.Firebug касался службы в Chrome JS Firefox (привилегированного пространства кода), которая периодически вызывала сбой работника, вы можете увидеть патч для него здесь: https://bugzilla.mozilla.org/show_bug.cgi?id=651980

Пока вы делаете все в соответствии срабочая спецификация, вы не должны видеть эту проблему.Что касается исправления Firebug / Fx, то оно должно появиться в Firefox 5 в конце июня.Надеюсь, это поможет вам!

1 голос
/ 24 января 2011

Проблема заключалась в том, что я не поддерживал ссылку на своих работников, и поэтому они, казалось, умирали случайно, когда собирали мусор.

0 голосов
/ 06 октября 2012

То же самое здесь с веб-работником, который молча терпит неудачу в Firefox, но не в Chrome. Использовал arborjs.org Вызывается так:

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

Где arbor - объект, использующий веб-работника.

Я добавил строку window.sys = sys;, и теперь она работает как шарм как в Firefox, так и в 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...
}
...