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
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

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()