Bug: GC is not reentrant

As the GC is not reentrant, finalizers should not be able to invoke it.
This commit is contained in:
Roberto Ierusalimschy
2021-12-13 10:41:17 -03:00
parent 1de95e97ef
commit 0bfc572e51
9 changed files with 57 additions and 27 deletions

View File

@@ -676,11 +676,13 @@ end
-- just to make sure
assert(collectgarbage'isrunning')
do -- check that the collector is reentrant in incremental mode
do -- check that the collector is not reentrant in incremental mode
local res = true
setmetatable({}, {__gc = function ()
collectgarbage()
res = collectgarbage()
end})
collectgarbage()
assert(not res)
end