You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
V8's default thread-isolated allocator has a bug on x64 Linux.
It uses memory protection keys (see `man 7 pkeys`) to
write-protect JIT code memory but in a way that is currently
incompatible with how we use threads.
Specifically, pkey permissions are inherited by child threads.
Threads that are not descendants of the thread that allocates
the pkey default to "no permissions" for that pkey.
Concretely, if thread A creates the v8::Platform (and the pkey)
and write-protects memory, then later thread B tries to access
that memory, it segfaults due to the lack of permissions.
The fix on V8's side is conceptually easy - call
pkey_set(PKEY_DISABLE_WRITE) before accessing the memory,
to flip the permissions from "none" to "can read" - but
until it's actually fixed, disable thread-isolation.
Fixes: rubyjs/mini_racer#300
Refs: https://issues.chromium.org/issues/360909072
0 commit comments