GNU bug report logs - #12446
port better to POSIX hosts lacking _setjmp

Previous Next

Package: emacs;

Reported by: Paul Eggert <eggert <at> cs.ucla.edu>

Date: Fri, 14 Sep 2012 19:47:01 UTC

Severity: normal

Tags: patch

Done: Paul Eggert <eggert <at> cs.ucla.edu>

Bug is archived. No further changes may be made.

Full log


Message #28 received at 12446 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Paul Eggert <eggert <at> cs.ucla.edu>
Cc: lekktu <at> gmail.com, 12446 <at> debbugs.gnu.org
Subject: Re: port better to POSIX hosts lacking _setjmp
Date: Sat, 15 Sep 2012 11:28:19 +0300
> Date: Sat, 15 Sep 2012 00:50:17 -0700
> From: Paul Eggert <eggert <at> cs.ucla.edu>
> CC: 12446 <at> debbugs.gnu.org, lekktu <at> gmail.com
> 
> On 09/15/2012 12:12 AM, Eli Zaretskii wrote:
> > On which platforms does longjmp change the signal
> > mask and how, and in what ways can this "mess things up and slow
> > things down"?
> 
> For example, under FreeBSD, setjmp saves the signal mask,
> and longjmp restores the signal mask to the value that it had
> when setjmp was called.  See
> <http://www.freebsd.org/cgi/man.cgi?query=setjmp&manpath=FreeBSD+9.0-RELEASE>.
> FreeBSD is not alone in this -- it's sort of a BSD tradition --
> but I don't have a list handy of exactly which OSes do it and
> which do not.

So what was the rationale of turning away from _setjmp, which does the
same as sigsetjmp with its second argument zero?

> Messups are trickier, because they involve rare race conditions.
> They can occur if Emacs or a system call has set the signal mask to X,
> but a longjump unexpectedly changes it to Y, where Y is not equal to X.

Why is that a messup?




This bug report was last modified 12 years and 255 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.