I don't get a crash here (linux 64 bits), after 35 seconds I get a+b. Probably a stack overflow indeed, I should probably add a stack protection like MicroPython does, with a max stack size that is initialized at the begin of main() and a stack check at every evaluation.
I tried to add a stack check, with a limit less than 100K of stack one gets a stack overflow on your example. But then some regression tests fail (chk_limit). Therefore I will not enable this, at least not for Linux.
Thanks for clearing this up. My example is quite pathological, but maybe assume should report a warning when conflicting assumptions from the user are detected.