*BSD News Article 4681


Return to BSD News archive

Newsgroups: comp.unix.bsd
Path: sserve!manuel!munnari.oz.au!uunet!elroy.jpl.nasa.gov!usc!venice!gumby.dsd.trw.com!eel.dsd.trw.com!gottloeb
From: gottloeb@eel.dsd.trw.com (Jeffrey R. Gottloeb)
Subject: Re: GDB under 386bsd 0.1
Message-ID: <1992Sep8.163904.8941@gumby.dsd.trw.com>
Keywords: gdb, ptrace
Sender: news@gumby.dsd.trw.com
Organization: TRW, INC.
References: <1992Sep4.005417.3876@gumby.dsd.trw.com> <1992Sep4.153554.4387@cs.few.eur.nl>
Date: Tue, 8 Sep 1992 16:39:04 GMT
Lines: 44

In article <1992Sep4.153554.4387@cs.few.eur.nl> pk@cs.eur.nl writes:
>In <1992Sep4.005417.3876@gumby.dsd.trw.com> gottloeb@eel.dsd.trw.com writes:
>
>>I have noticed a problem using gdb under 386bsd 0.1.
>
>>When at least one breakpoint has been set and the program terminates,
>>e.g. executes exit(), the breakpoint is not removed from the process's
>>text image.  When the program is subsequently re-executed under gdb,
>>gdb remembers that a breakpoint is supposed to at the memory location
>>and puts one there again.  However this time it shadows the breakpoint
>>instruction from the previous run rather than the original instruction.
>>When execution begins after reaching the breakpoint, various traps occur.
>
>>If the program is run after quitting gdb, a Trace/BPT trap occurs.
>
>>I think the problem is that gdb assumes that when ptrace modifies the
>>process's image the kernel either makes a private copy of the text image
>>or it will throw away the text image after the process terminates.
>>However, this is not the case - the kernel keeps the modified text image
>>around and executes it rather than a fresh copy from the original file.
>
>The 386 does not generate a page protection fault while it is executing
>in supervisor mode :-(, so copy on write handling never takes place when
>the kernel stuffs data into a process's text- or any other non-anonymous
>segment. So these cases must be explicitly checked for. Here's a patch
>for kern/sys_process.c:
>
>

      (code deleted)

>
>I am not entirely happy about the call to `vm_fault', but at this moment 
>I don't see another way to enforce a copy on write.
>
>-pk


I modified kern/sys_process.c with the patch and rebuilt the kernel.
This fixed the problem.  Thanks.


Jeff Gottloeb
gottloeb@gumby.dsd.trw.com