Subject: setjmp/longjmp and pth
To: None <port-vax@netbsd.org>
From: Matthew Fredette <fredette@MIT.EDU>
List: port-vax
Date: 12/10/2000 23:46:36
Hi all.  pth-1.3.7 (the GNU portable thread library) doesn't work
under 1.5_ALPHA; programs fail with a "longjmp botch." error message.

I've looked at lib/libc/arch/vax/gen/__setjmp14.S, but I don't read
VAX assembly.  It looks like before calling __sigreturn14, __longjmp14
walks up the frames of the current stack to where __setjmp14 was
called, looking for spots where it has to copy out the longjmp return
value?

If so, this fails because pth will call longjmp with a totally
different stack than the one that was active at setjmp time.  Can
someone fill me in on why the VAX longjmp works this way?  Why can't
it just do the equivalent of a __sigreturn14, no matter where it is,
forcing the longjmp return value?

Thanks,

Matt

--
Matt Fredette
fredette@aquery.com, fredette@mit.edu, fredette@theory.lcs.mit.edu
http://mit.edu/fredette/www
"If you understood everything I said, you'd be me."  - Miles Davis