From c45cb488586b0f8c54120d9eacb6491df017609b Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 24 Jun 2021 07:32:46 -0700 Subject: Test for stack overflow protection. * tests/012/stack.tl: New file. * tets/common.tl (mvtest): New macro. --- tests/012/stack.tl | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tests/012/stack.tl (limited to 'tests/012/stack.tl') 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) -- cgit v1.2.3