Сбой Chrome при использовании нескольких узлов ScriptProcessor и Analyzer

Я создаю веб-приложение, которое позволяет пользователям развивать синтезаторы webaudio ( https://gensynth.ou.edu/). Тем не менее, в Chrome, когда вы нажимаете, обновите несколько раз с mutation amount перевернулся и поиграл во время эволюции, приложение непредсказуемо зависало (на вкладке просто отображается экран сбоя 'aw snap').

Когда синтезатор загружается, он проигрывает через узлы scriptProcessor и анализатора, подключенные к узлу бесшумного усиления, чтобы он мог воспроизвести начальную спектрограмму (первоначально пытался использовать для этого автономный контекст, но это просто ужасно тормозит). Затем, когда пользователь нажимает на инструмент, он играет через другой набор узлов скрипта / анализатора. При каждом последующем воспроизведении генераторы и фильтры восстанавливаются и подключаются к одному и тому же набору узлов сценария / анализатора.

Кажется, что происходит сбой всякий раз, когда более старые узлы скрипта пытаются собрать мусор, так как это происходит реже, когда я пытаюсь сохранить ссылки на узел, а не установить его onaudioprocess функция к нулю (который действительно сильно бьет по памяти). Есть ли лучший или более стандартный способ сделать это?

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

Прекрасно работает в Firefox, и дайте мне знать, есть ли какая-либо другая информация, которую я хотел бы предоставить.

Изменить: Изоляция только кода визуализатора на этой странице, вы можете получить сбой (хотя и реже), нажав на new x30 Кнопка несколько раз.

1 ответ

Решение

После обновления до chrome 40 я не видел, чтобы проблема возникла. Я предполагаю, что это было вызвано одной из проблем с повреждением памяти или ошибками webaudio, которые были исправлены ( http://googlechromereleases.blogspot.com/2015/01/stable-update.html)

Другие вопросы по тегам