diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-06-24 07:32:46 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-06-24 07:32:46 -0700 |
commit | c45cb488586b0f8c54120d9eacb6491df017609b (patch) | |
tree | bba2d774270a1cc0e3b2c636f0826363b53fcff4 /tests/012/stack.tl | |
parent | 2034729c70161b16d99eee0503c4354df39cd49d (diff) | |
download | txr-c45cb488586b0f8c54120d9eacb6491df017609b.tar.gz txr-c45cb488586b0f8c54120d9eacb6491df017609b.tar.bz2 txr-c45cb488586b0f8c54120d9eacb6491df017609b.zip |
Test for stack overflow protection.
* tests/012/stack.tl: New file.
* tets/common.tl (mvtest): New macro.
Diffstat (limited to 'tests/012/stack.tl')
-rw-r--r-- | tests/012/stack.tl | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/012/stack.tl b/tests/012/stack.tl new file mode 100644 index 00000000..a8d06487 --- /dev/null +++ b/tests/012/stack.tl @@ -0,0 +1,31 @@ +(load "../common") + +(defun recur () (recur)) + +(defmacro so (expr) + ^(catch ,expr + (stack-overflow (exc) :so))) + +(test (so (recur)) :so) + +(test (let ((pid (fork))) + (cond + ((zerop pid) (set-stack-limit 0) (recur)) + (t (let ((status (wait pid))) + (w-ifsignaled status))))) + t) + +(defmacro infexp () + ^(foo (infexp))) + +(test (so (expand '(infexp))) :so) + +(defvarl orig (get-stack-limit)) + +(mvtest + (set-stack-limit nil) orig + (set-stack-limit orig) nil + (set-stack-limit 0) orig + (set-stack-limit orig) nil + (set-stack-limit 65536) orig + (set-stack-limit orig) 65536) |