From owner-freebsd-bugs Fri Apr 18 19:10:06 1997 Return-Path: Received: (from root@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id TAA20576 for bugs-outgoing; Fri, 18 Apr 1997 19:10:06 -0700 (PDT) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.5/8.8.5) id TAA20562; Fri, 18 Apr 1997 19:10:03 -0700 (PDT) Date: Fri, 18 Apr 1997 19:10:03 -0700 (PDT) Message-Id: <199704190210.TAA20562@freefall.freebsd.org> To: freebsd-bugs Cc: From: Tor Egge Subject: Re: kern/3327: using gdb may cause hanging processes. Reply-To: Tor Egge Sender: owner-bugs@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk The following reply was made to PR kern/3327; it has been noted by GNATS. From: Tor Egge To: Tor.Egge@idi.ntnu.no Cc: FreeBSD-gnats-submit@freebsd.org Subject: Re: kern/3327: using gdb may cause hanging processes. Date: Sat, 19 Apr 1997 04:05:00 +0200 > When debugging a process, gdb sometimes gives a message of > the form > > Cannot insert breakpoint 2: > Error accessing memory address 0x25240: Bad address. > > After this, the process is stuck. A more complete fix: Allow fallback to backing objects when reading. Unlock the vm map if vm_page_lookup fails. Index: procfs_mem.c =================================================================== RCS file: /home/ncvs/src/sys/miscfs/procfs/procfs_mem.c,v retrieving revision 1.24 diff -c -r1.24 procfs_mem.c *** procfs_mem.c 1997/04/06 02:29:31 1.24 --- procfs_mem.c 1997/04/19 01:49:07 *************** *** 197,202 **** --- 197,213 ---- } m = vm_page_lookup(object, pindex); + + /* Allow fallback to backing objects if we are reading */ + + while (m == NULL && !writing && object->backing_object) { + + pindex += OFF_TO_IDX(object->backing_object_offset); + object = object->backing_object; + + m = vm_page_lookup(object, pindex); + } + if (m == NULL) { error = EFAULT; *************** *** 205,210 **** --- 216,223 ---- * an error return on vm_map_lookup. */ object = NULL; + + vm_map_lookup_done(tmap, out_entry); break; }