Почему в конечном итоге Chrome выбрасывает сообщение "Out of memory: wasm memory" после многократного обновления страницы, использующей WebAssembly?

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

Я построил ящик WebAssembly с Rust. Размер скомпилированного ящика составляет примерно 360 Кб (до сжатия контента), и он отлично работает в Firefox и даже в Safari на iOS. Тем не менее, у меня возникают многочисленные проблемы в Chrome, одна из которых заключается в обновлении страницы, которая использует .wasm в конечном итоге приводит к ошибке нехватки памяти в консоли.

Страница прекрасно работает около 35 обновлений, а затем выдает следующее:

Uncaught (in promise) RangeError: WebAssembly Instantiation: Out of memory: wasm memory

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

Это ошибка в браузере или я что-то не так делаю в своем коде? Если это ошибка, есть ли способ обойти это? (Не то, чтобы я ожидал, что это проявится в производстве, но в любом случае...)

(Предположительно, обещание, указанное в сообщении об ошибке, возвращается import('...'), Я использую веб-пакет, и на меня влияет https://github.com/webpack/webpack/issues/6615)

1 ответ

Решение

Это явно подтвержденная ошибка в Chrome: https://bugs.chromium.org/p/chromium/issues/detail?id=935169

Это происходит только тогда, когда инструменты разработчика Chrome открыты.

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