Bug: C stack overflow with coroutines

'coroutine.resume' did not increment counter of C calls when
continuing execution after a protected error (that is,
while running 'precover').
This commit is contained in:
Roberto Ierusalimschy
2021-11-03 15:04:18 -03:00
parent 1fce5bea81
commit 74d99057a5
2 changed files with 18 additions and 2 deletions

View File

@@ -103,6 +103,20 @@ do
end
do -- bug in 5.4.2
print("nesting coroutines running after recoverable errors")
local count = 0
local function foo()
count = count + 1
pcall(1) -- create an error
-- running now inside 'precover' ("protected recover")
coroutine.wrap(foo)() -- call another coroutine
end
checkerror("C stack overflow", foo)
print("final count: ", count)
end
if T then
print("testing stack recovery")
local N = 0 -- trace number of calls