fix(install): use rename-before-unlink on all platforms

Problem: On macOS Apple Silicon, a plain unlink can leave stale code
signature metadata in the kernel cache, causing SIGKILL on next page
fault after `TSUpdate`.

Solution: Apply the rename-then-unlink strategy unconditionally instead
of only on Windows.
This commit is contained in:
Adrian Wang
2026-03-23 17:32:51 +08:00
committed by GitHub
parent 8755152551
commit 6620ae1c44

View File

@@ -322,13 +322,9 @@ end
local function do_install(logger, compile_location, target_location)
logger:info(string.format('Installing parser'))
if uv.os_uname().sysname == 'Windows_NT' then -- why can't you just be normal?!
local tempfile = target_location .. tostring(uv.hrtime())
uv_rename(target_location, tempfile) -- parser may be in use: rename...
uv_unlink(tempfile) -- ...and mark for garbage collection
else
uv_unlink(target_location) -- don't disturb existing memory-mapped content
end
local tempfile = target_location .. tostring(uv.hrtime())
uv_rename(target_location, tempfile) -- parser may be in use: rename...
uv_unlink(tempfile) -- ...and mark for garbage collection
local err = uv_copyfile(compile_location, target_location)
a.schedule()