解決するのにここ2日間かかってしまったバグ。 WebWorkerでworkerプロセスを作る。workerの中でタイマーを回して5分毎にサーバーからデータを取得、そのデータをメインスレッドに返す、というのを実装したが、workerが5分~10分経つと死んでいるというもの。onerrorへの通知も無い。 いろいろ悩んだ末、もしかしてGCされてるんじゃあ……と思ったらその通りのようで、グローバルオブジェクトから参照できる所に突っこんでおいたら死ななくなった。 Operaだと動いているworkerが勝手に殺されたりしないのでChromeのバグかも*1。GCしてくれなくてもworkerを殺す手段としてterminateメソッドが用意されている。自分で作成したworkerは自分で殺した方がわかりやすい。 検証ページ(workerを2つ作って、片方のみglobalオブジェクトから参照可能にしておく)