• Clemens Backes's avatar
    Reland "[wasm] Reset PKRU before spawning new threads" · 2c740c12
    Clemens Backes authored
    This is a reland of commit 8218c061.
    Compile errors on mac arm64 are fixed.
    
    Original change's description:
    > [wasm] Reset PKRU before spawning new threads
    >
    > We sometimes hit the DCHECK in the wasm code manager:
    >   DCHECK_IMPLIES(writable, !MemoryProtectionKeyWritable());
    >
    > This is because we spawn new threads while having a
    > {CodeSpaceWriteScope} open. In the case of PKU, this changes the PKRU
    > register to allow writes to the code space, and the value of that
    > register is inherited by any new thread. If this thread then tries to
    > switch to writable code spaces, it hits the DCHECK. It would hit a
    > similar DCHECK when trying to execute code.
    >
    > We fix this issue by temporarily resetting the PKRU register to
    > non-writable while we call the {NotifyConcurrencyIncrease} method. This
    > is not a very robust solution, as any new call that potentially happens
    > inside a {CodeSpaceWriteScope} needs to do the same, but refactoring the
    > code to avoid spawning new threads while being in writable state would
    > be a lot of work with other downsides.
    >
    > R=jkummerow@chromium.org
    >
    > Bug: v8:13075
    > Change-Id: Ibc7270aa597902dc6d9649cb6bcdfce8b1a9bafc
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3762579
    > Commit-Queue: Clemens Backes <clemensb@chromium.org>
    > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#81729}
    
    Bug: v8:13075
    Cq-Include-Trybots: luci.v8.try:v8_mac_arm64_compile_rel
    Cq-Include-Trybots: luci.v8.try:v8_mac_arm64_compile_dbg
    Change-Id: I2e634959c969fc022393ae51c391397c7195ee54
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3769829
    Commit-Queue: Clemens Backes <clemensb@chromium.org>
    Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#81781}
    2c740c12
code-space-access.cc 3.69 KB