summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2016-10-19 10:34:27 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2016-10-19 10:34:27 -0200
commit697593d8d5b2e2287919423006c53dcac31d2b70 (patch)
tree0bf2588acdced47a573fc586f73f967174f36dcf
parente2dc807c6e93dc8819d065ae8e3808c720928bbd (diff)
downloadlua-github-697593d8d5b2e2287919423006c53dcac31d2b70.tar.gz
bug: When a coroutine tries to resume a non-suspended coroutine,
it can do some mess (and break C assertions) before detecting the error.
-rw-r--r--bugs30
1 files changed, 28 insertions, 2 deletions
diff --git a/bugs b/bugs
index 0bb1ed35..caafae5a 100644
--- a/bugs
+++ b/bugs
@@ -3602,6 +3602,10 @@ patch = [[
}
+-----------------------------------------------------------------
+-- Lua 5.3.3
+
+
Bug{
what = [[expression list with four or more expressions in
a 'for' loop can crash the interpreter]],
@@ -3652,9 +3656,9 @@ It needs an "interceptor" 'memcmp' function that continues
reading memory after a difference is found.]],
patch = [[
2c2
-< ** $Id: bugs,v 1.149 2016/07/15 17:24:09 roberto Exp roberto $
+< ** $Id: bugs,v 1.150 2016/07/19 17:10:45 roberto Exp roberto $
---
-> ** $Id: bugs,v 1.149 2016/07/15 17:24:09 roberto Exp roberto $
+> ** $Id: bugs,v 1.150 2016/07/19 17:10:45 roberto Exp roberto $
263c263,264
< for (option = LUA_STRFTIMEOPTIONS; *option != '\0'; option += oplen) {
---
@@ -3688,6 +3692,28 @@ patch = [[
}
+Bug{
+what = [[When a coroutine tries to resume a non-suspended coroutine,
+it can do some mess (and break C assertions) before detecting the error]],
+report = [[Marco Schöpl, 2016/07/20]],
+since = [[ ]],
+fix = nil,
+example = [[
+-- with C assertions on
+A = coroutine.running()
+B = coroutine.create(function() coroutine.resume(A) end)
+coroutine.resume(B)
+
+-- or
+A = coroutine.wrap(function() pcall(A, _) end)
+A()
+]],
+patch = [[
+]]
+}
+]=]
+
+
--[=[
Bug{
what = [[ ]],