* Andrew Haley: > On 3/25/19 2:01 PM, Florian Weimer wrote: >> * Xi Ruoyao: >> >>> On 2019-03-25 13:06 +0000, Jonny Grant wrote: >>>> >>>> I built & ran with the Sanitizer, it seems it's also stack overflow >>>> within the operator new() >>>> >>>> I had thoughts GCC would generate code that monitored the stack size and >>>> aborted with a clear message when the stack size was exceeded. Looked >>>> online, and it doesn't seem to be the case. >>> >>> Impossible. We can't distinguish "stack overflow" with other segmentation >>> faults. >> >> I think “impossible” is too strong. > > It is. We do it with stack banging and a few guard pages in the HotSpot JVM. > The problem is that recovering well enough to throw an exception requires > some quite hairy non-portable code. Of course it's going to be non-portable. Ideally, this would be handled out-of-process: the shell registers itself with the system coredump handler, and the handler analyzes the crash and provides information back to the shell for display. It's quite difficult to get there, but it's certainly not impossible. We really should have lightweight tracebacks for aborts and the like in C/C++ code. Right now, every moderately large piece of software tries to write their robust in-process crash handler, with varying results.