Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!cbmvax!jesup From: jesup@cbmvax.UUCP (Randell Jesup) Newsgroups: comp.sys.amiga.tech Subject: Re: UnLoadSeg() Keywords: Waiting or not Message-ID: <7208@cbmvax.UUCP> Date: 4 Jul 89 01:09:11 GMT References: <1364@inria.inria.fr> Reply-To: jesup@cbmvax.UUCP (Randell Jesup) Organization: Commodore Technology, West Chester, PA Lines: 28 In article <1364@inria.inria.fr> rouaix@inria.inria.fr (Francois Rouaix) writes: >I have a doubt on the possibility that UnLoadSeg() might >Wait() somewhere. Does anybody knows for sure ? >The reason I ask this is the following: >A program detaches itself from CLI (ya know, hacking the >SegList), runs, and at the end, unloads itself with UnLoadSeg(). >The very end of the code (ASM) looks like >callsys Forbid >* setup UnLoadSeg >callsys UnLoadSeg >moveq.l 0,d0 >rts > >And occasionally, I get a Guru (4)... UnLoadSeg() will not Wait() UNLESS the seglist is overlaid, in which case it must Close() the program file. I would look for something trashing a seglist pointer, some reference in a system structure to memory in your seglist (interrupt structures, nodes on a public list, whatever), writing past the end of some data area (unlikely), or passing the wrong seglist pointer to UnLoadSeg (must be a BPTR to the first segment's next segment BPTR - the value returned by LoadSeg()). -- Randell Jesup, Keeper of AmigaDos, Commodore Engineering. {uunet|rutgers}!cbmvax!jesup, jesup@cbmvax.cbm.commodore.com BIX: rjesup Common phrase heard at Amiga Devcon '89: "It's in there!"