On 02/12/18 16:53 +0100, Landry Breuil wrote:
> On Sun, Dec 02, 2018 at 10:23:14AM -0500, Bryan Steele wrote:
> > In -current (and 6.4), chrome repeatedly attempts to mmap a large linear
> > area of memory for WASM/WebAssembly and it always fails. WASM JIT avoids
> > using the system malloc/free, opting instead for their own "Heartbleed
> > accelerating custom allocator".
> > 
> > Despite the horribleness, this feature is being increasingly used by
> > default if the browser advertises this misfeature as supported, many
> > sites will fallback if it is unavailable. Unfortunately, they *DO NOT*
> > fallback if WASM fails to allocate memory. You simply get broken, half-
> > working websites. :-(
> > 
> > For example, the popular video streaming platform (twitch.tv) will show
> > a black box where the stream should be. The error is not obvious unless
> > you check the browsers Javascript console:
> > 
> > Uncaught RangeError: WebAssembly.Memory(): could not allocate memory
> >     at wasmworker.min.js:51
> >     at blob:https://www.twitch.tv/2af8520d-25ad-4f42-bc94-497265c25c62:6
> > (index):1 Script error
> > 
> > After hours of searching, I found the magic knob to disable WASM in
> > chrome: '--js-flags=--noexpose_wasm'
> > 
> > There's no UI way that I can find to disable it, so you'll need to
> > add a shell alias or put it in your window managers config.
> > 
> > Note: Firefox is also not saved from this insanity, WASM will often
> > fail there as well.. unless datasize is cranked to infinity and beyond.
> 
> For firefox, there's two things to frob if you want to debug this:
> - www/mozilla-firefox/patches/patch-js_src_jit_ProcessExecutableMemory_h
>   clamps it to work with the default ulimits. Adapt the surrounding code
> to depend on the limits at runtime ? I wouldnt do this before consulting
> upstream first.
> - (i guess) twiddle javascript.options.wasm in about:config to stop
>   advertising wasm as 'supported' ? If that improves things, i'll gladly
> change the default.
> 
> Landry
> 

Well WASM cannot allocate memory even with 8G of data limit and the max size
in v8 is 2G, so something else is wrong as well.

Reply via email to