Re: Recursive SIGSEGV question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 25/03/2019 15:47, Andrew Haley wrote:
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.

Sounds good!

I had expected that GCC (eg on x86) generated code just kept track of the base and max SP register, and so would easily be able to call abort() and printf "Stack %zu limit reached - Abort\n".

I can see it would be an overhead, and difficult to recover well enough to abort() after a message.
Jonny





[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux