fix: unlink files before copy to prevent crashes

uv_fs_copyfile will truncate the target first, which can result in
hard-to-debug crashes if the shared object is currently in use.

instead, unlink the target first, so that the operation doesn't modify
any in-use files. the disk space from the old parsers won't be reclaimed
until any processes using them relinquish their open file handles.
This commit is contained in:
Robert Muir 2026-02-19 09:03:23 -05:00
parent ecdae44bae
commit 3121942f10
No known key found for this signature in database

View file

@ -302,6 +302,8 @@ local function do_install(logger, compile_location, target_location)
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 err = uv_copyfile(compile_location, target_location)