unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Paul Eggert <eggert@cs.ucla.edu>
Cc: dancol@dancol.org, emacs-devel@gnu.org
Subject: Re: Two issues with stack overflow protection
Date: Wed, 29 Jul 2015 19:24:57 +0300	[thread overview]
Message-ID: <834mknx76u.fsf@gnu.org> (raw)
In-Reply-To: <55B8D299.9010704@cs.ucla.edu>

> Date: Wed, 29 Jul 2015 06:18:17 -0700
> From: Paul Eggert <eggert@cs.ucla.edu>
> 
> Daniel Colascione wrote:
> >>> What's wrong with just mprotecting a guard page at the end of the stack,
> >>> >>and on overflow, giving that region normal protection, unwinding as
> >>> >>normal, then, at top level, restoring the guard page?
> >> >
> >> >Unwinding can grow the stack.
> > Sure. That's why you open up more stack to do the unwinding. Having done
> > that, if you still overflow, just abort.
> 
> Yes, that was my point.  Emacs already does the business about the guard page, 
> and opening up more stack, and so forth.  The tricky part is the "if you still 
> overflow, just abort", something that's easy enough to describe at the high 
> level but perhaps not so easy to actually write the code.  Part of the issue is 
> that the guard page business is done under the covers by the OS, not by Emacs 
> directly -- in general Emacs doesn't know where the guard page(s) are.

Maybe I'm missing something, but none of the data structures involved
in "normal" throw to top-level are on the stack, right?  So why cannot
we call the equivalent of (top-level) _after_ we sig_longjmp out of
the signal handler?



  reply	other threads:[~2015-07-29 16:24 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-28 17:23 Two issues with stack overflow protection Eli Zaretskii
2015-07-29  5:01 ` Paul Eggert
2015-07-29  6:10   ` Daniel Colascione
2015-07-29  7:06     ` Paul Eggert
2015-07-29 11:27       ` Daniel Colascione
2015-07-29 13:18         ` Paul Eggert
2015-07-29 16:24           ` Eli Zaretskii [this message]
2015-07-29 16:48             ` Paul Eggert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=834mknx76u.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=dancol@dancol.org \
    --cc=eggert@cs.ucla.edu \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).