Subject: port-i386/5145: "panic: ptdi" when debugging large program
To: None <>
From: Andreas Gustafsson <>
List: netbsd-bugs
Date: 03/10/1998 22:35:53
>Number:         5145
>Category:       port-i386
>Synopsis:       "panic: ptdi" when debugging large program
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    gnats-admin (GNATS administrator)
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Mar 10 12:50:00 1998
>Originator:     Andreas Gustafsson
Araneus Information Systems Oy
>Release:        1.3
System: NetBSD 1.3 NetBSD 1.3 (GUAVA) #0: Thu Feb 12 12:46:34 EET 1998 i386


Debugging a large program with gdb consistently causes NetBSD 1.3
(i386) to panic with "panic: ptdi".

In a message on the port-i386 list, Mark Brinicombe <>
gave the following analysis of what appears to be the same bug:

  The problem is that procfs_domem tries to fault in the page directly with
  vm_fault(). However with the old pmap (pre UVM) pmap_enter() required that
  a page table already existed for the page being mapped. In the fault
  handler in trap.c a specific check is made and if a page table does not
  exist an additional vm_fault() call is made to obtain a page table prior
  to the vm_fault() call to map the actual faulting page. procfs_domem()
  misses this code so a panic situation can arise.

  With UVM pmap_enter() can handling mapping the page table if it does not
  exist (I believe) so this problem goes away.


Attempt to debug the pigiRpc program from the Ptolemy distribution, as
in the following session log.  

  ptolemy@guava% which pigiRpc
  ptolemy@guava% size /x/ptolemy/bin.nbsd.386/pigiRpc
  text    data    bss     dec     hex
  6152192 131072  679020  6962284 6a3c6c
  ptolemy@guava% gdb pigiRpc
  GDB is free software and you are welcome to distribute copies of it
   under certain conditions; type "show copying" to see the conditions.
  There is absolutely no warranty for GDB; type "show warranty" for details.
  GDB 4.16 (i386-netbsd), Copyright 1996 Free Software Foundation, Inc...
  (no debugging symbols found)...
  (gdb) run
  Starting program: /x/ptolemy/bin.nbsd.386/pigiRpc 
  panic: ptdi 35ef063
  Stoped at	_Debugger0x4: leave
  db>  t
  _Debugger(...) at _Debugger+0x4
  _panic(...) at _panic+0x46
  _pmap_enter(...) at _pmap_enter+0x55
  _vm_fault(...) at _vm_fault+0xbca
  gcc2_compiled.(...) at gcc2_compiled.+0x136
  _procfs_domem(...) at _procfs_domem+0x51
  _sys_ptrace(...) at _sys_ptrace+0x2b0
  _syscall() at _syscall+238
  --- syscall (number 26) ---

The pigiRpc binary and kernel dump are available upon request, but I
suspect any sufficiently large program will suffice to repeat the