diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2021-11-03 15:04:18 -0300 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2021-11-03 15:04:18 -0300 |
| commit | 74d99057a5146755e737c479850f87fd0e3b6868 (patch) | |
| tree | db3f0b0bc146572c0e6d9508543cd79be15dd875 /testes/cstack.lua | |
| parent | 1fce5bea817de50e055a84c153a975f25bfcf493 (diff) | |
| download | lua-github-74d99057a5146755e737c479850f87fd0e3b6868.tar.gz | |
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').
Diffstat (limited to 'testes/cstack.lua')
| -rw-r--r-- | testes/cstack.lua | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/testes/cstack.lua b/testes/cstack.lua index 213d15d4..ca76c872 100644 --- a/testes/cstack.lua +++ b/testes/cstack.lua @@ -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 |
