aboutsummaryrefslogtreecommitdiff
path: root/testes
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2021-11-03 15:04:18 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2021-11-03 15:04:18 -0300
commit74d99057a5146755e737c479850f87fd0e3b6868 (patch)
treedb3f0b0bc146572c0e6d9508543cd79be15dd875 /testes
parent1fce5bea817de50e055a84c153a975f25bfcf493 (diff)
downloadlua-74d99057a5146755e737c479850f87fd0e3b6868.tar.gz
lua-74d99057a5146755e737c479850f87fd0e3b6868.tar.bz2
lua-74d99057a5146755e737c479850f87fd0e3b6868.zip
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')
-rw-r--r--testes/cstack.lua14
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
103end 103end
104 104
105 105
106do -- bug in 5.4.2
107 print("nesting coroutines running after recoverable errors")
108 local count = 0
109 local function foo()
110 count = count + 1
111 pcall(1) -- create an error
112 -- running now inside 'precover' ("protected recover")
113 coroutine.wrap(foo)() -- call another coroutine
114 end
115 checkerror("C stack overflow", foo)
116 print("final count: ", count)
117end
118
119
106if T then 120if T then
107 print("testing stack recovery") 121 print("testing stack recovery")
108 local N = 0 -- trace number of calls 122 local N = 0 -- trace number of calls