Re: Recursive SIGSEGV question

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

 



On Mon, 25 Mar 2019 at 16:10, Jonny Grant <jg@xxxxxxxx> wrote:
>
>
>
> 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".

To do that it would also need to keep track of the per-thread stack limit.




[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