Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site umcp-cs.UUCP Path: utzoo!watmath!clyde!burl!ulysses!allegra!bellcore!decvax!decuac!cvl!umcp-cs!chris From: chris@umcp-cs.UUCP (Chris Torek) Newsgroups: net.unix-wizards Subject: Re: Bug iwith setjmp/longjmp on Vax Message-ID: <43@umcp-cs.UUCP> Date: Fri, 7-Jun-85 23:00:59 EDT Article-I.D.: umcp-cs.43 Posted: Fri Jun 7 23:00:59 1985 Date-Received: Tue, 11-Jun-85 02:40:38 EDT References: <44700008@gypsy.UUCP> Organization: U of Maryland, Computer Science Dept., College Park, MD Lines: 26 Your code has a nasty little no-no in it: it longjmp's after the stack environment in which the setjmp was done has been deallocated. No surprise it fails ``at random''. Watch: --------#include --------static jmp_buf env; --------int mode; --------main() { active: env=uninit, mode=0, main() -------- foo(); [expand foo()] []------foo() { active: env=uninit, mode=0, main(), foo() []------ mode = setjmp(env); active: env=foo(), mode=0, main(), foo() []------ if (mode != 0) magic(); []------} [return to main()] active: env=foo() [defunct], mode=0, main() -------- longjmp(env, 1); Oops. -- In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 4251) UUCP: seismo!umcp-cs!chris CSNet: chris@umcp-cs ARPA: chris@maryland