Start V8 with `--abort_on_stack_or_string_length_overflow` (see
`v8::V8::SetFlagsFromString()`) and, if possible, run your application
in a debugger. The abort backtrace should hopefully yield some clues.
Reasons beyond simple recursion for a stack overflow are complex
regular expressions or (very) deeply nested source code.
If V8 somehow guesses the stack size wrong, you can correct it with
`--stack_size=<size in kb>`. Note that it tells V8 to _assume_ the
stack is this large, not _create_ a stack this large.