Date: Thu, 9 May 1996 03:12:49 +0300 (EET DST) From: Heikki Suonsivu <hsu@clinet.fi> To: FreeBSD-gnats-submit@freebsd.org Subject: kern/1180: freeing held page, count=%d Message-ID: <199605090012.DAA14899@katiska.clinet.fi> Resent-Message-ID: <199605090020.RAA12695@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 1180 >Category: kern >Synopsis: freeing held page, count=%d >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed May 8 17:20:01 PDT 1996 >Last-Modified: >Originator: Heikki Suonsivu >Organization: Clinet, Espoo, Finland >Release: FreeBSD 2.2-CURRENT i386 >Environment: news server, P90, ASUS, Adaptek 2940, 64M. sup May 5 11:21 GMT >Description: Panic "freeing held page". Kernel and dump is ftp://ftp.clinet.fi/pub/FreeBSD/crashdumps/*.68.gz As a sidenote: two of our servers which mount disks from this machine hung shortly after this machine had crashed, the other did not respond to ping, the other responded but all services were hung (fork deadlock, maybe, those machines still have the kernel before the fork patch). 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.13 (i386-unknown-freebsd), Copyright 1994 Free Software Foundation, Inc... IdlePTD 263000 current pcb at 21a5c8 panic: freeing held page, count=%d #0 boot (howto=256) at ../../i386/i386/machdep.c:931 931 dumppcb.pcb_ptd = rcr3(); (kgdb) bt #0 boot (howto=256) at ../../i386/i386/machdep.c:931 #1 0xf01171e6 in panic (fmt=0xf01b9d32 "freeing held page, count=%d") at ../../kern/subr_prf.c:127 #2 0xf01b9e22 in vm_page_free (m=0xf0306da0) at ../../vm/vm_page.c:827 #3 0xf01b7cd1 in vm_object_terminate (object=0xf2979680) at ../../vm/vm_object.c:409 #4 0xf01b7b3b in vm_object_deallocate (object=0xf2979680) at ../../vm/vm_object.c:356 #5 0xf01b5f14 in vm_map_entry_delete (map=0xf2823f00, entry=0xf2aec280) at ../../vm/vm_map.c:1616 #6 0xf01b6066 in vm_map_delete (map=0xf2823f00, start=0, end=4026265600) at ../../vm/vm_map.c:1711 #7 0xf01b4a69 in vmspace_free (vm=0xf2823f00) at ../../vm/vm_map.c:252 #8 0xf01c992a in cpu_wait (p=0xf26ab000) at ../../i386/i386/vm_machdep.c:628 #9 0xf010c355 in wait1 (q=0xf2853a00, uap=0xefbfff94, retval=0xefbfff84, compat=0) at ../../kern/kern_exit.c:426 #10 0xf010c183 in wait4 (p=0xf2853a00, uap=0xefbfff94, retval=0xefbfff84) at ../../kern/kern_exit.c:323 #11 0xf01c6171 in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi = 372736, tf_esi = 1, tf_ebp = -272639136, tf_isp = -272629788, tf_ebx = -272639076, tf_edx = 2, tf_ecx = -272639076, tf_eax = 7, tf_trapno = 12, tf_err = 7, tf_eip = 178277, tf_cs = 31, tf_eflags = 514, tf_esp = -272639156, tf_ss = 39}) ---Type <return> to continue, or q <return> to quit--- at ../../i386/i386/trap.c:904 #12 0xf01be375 in Xsyscall () #13 0xb63f in ?? () #14 0xb347 in ?? () #15 0xb1f8 in ?? () #16 0x620a in ?? () #17 0x52a9 in ?? () #18 0x51bd in ?? () #19 0x50eb in ?? () #20 0x5eab in ?? () #21 0x52a9 in ?? () #22 0xc08b in ?? () #23 0xbf86 in ?? () #24 0x107f in ?? () (kgdb) up #1 0xf01171e6 in panic (fmt=0xf01b9d32 "freeing held page, count=%d") at ../../kern/subr_prf.c:127 127 boot(bootopt); (kgdb) list 122 123 #if defined(DDB) 124 if (debugger_on_panic) 125 Debugger ("panic"); 126 #endif 127 boot(bootopt); 128 } 129 130 /* 131 * Warn that a system table is full. (kgdb) up #2 0xf01b9e22 in vm_page_free (m=0xf0306da0) at ../../vm/vm_page.c:827 827 panic("freeing held page, count=%d", m->hold_count); (kgdb) list 822 else 823 panic("vm_page_free: freeing busy page"); 824 } 825 826 if (m->hold_count) { 827 panic("freeing held page, count=%d", m->hold_count); 828 } 829 830 vm_page_remove(m); 831 vm_page_unqueue(m); (kgdb) up #3 0xf01b7cd1 in vm_object_terminate (object=0xf2979680) at ../../vm/vm_object.c:409 409 vm_page_free(p); (kgdb) list 404 */ 405 while ((p = object->memq.tqh_first) != NULL) { 406 if (p->flags & PG_BUSY) 407 printf("vm_object_terminate: freeing busy page\n"); 408 PAGE_WAKEUP(p); 409 vm_page_free(p); 410 cnt.v_pfree++; 411 } 412 413 /* (kgdb) print p $1 = (struct vm_page *) 0xf0306da0 (kgdb) print *p $2 = {pageq = {tqe_next = 0xf02a2ff0, tqe_prev = 0xf031e0e0}, hashq = { tqe_next = 0x0, tqe_prev = 0xf0278200}, listq = {tqe_next = 0xf0312d40, tqe_prev = 0xf29796a0}, object = 0xf2979680, pindex = 960, phys_addr = 42594304, queue = 4, flags = 180, wire_count = 0, hold_count = 1, act_count = 5 '\005', busy = 0 '\000', valid = 255 'ÿ', dirty = 255 'ÿ'} (kgdb) set radix 16 Input and output radices now set to decimal 16, hex 10, octal 20. (kgdb) print *p $3 = {pageq = {tqe_next = 0xf02a2ff0, tqe_prev = 0xf031e0e0}, hashq = { tqe_next = 0x0, tqe_prev = 0xf0278200}, listq = {tqe_next = 0xf0312d40, tqe_prev = 0xf29796a0}, object = 0xf2979680, pindex = 0x3c0, phys_addr = 0x289f000, queue = 0x4, flags = 0xb4, wire_count = 0x0, hold_count = 0x1, act_count = 0x5, busy = 0x0, valid = 0xff, dirty = 0xff} (kgdb) down #2 0xf01b9e22 in vm_page_free (m=0xf0306da0) at ../../vm/vm_page.c:827 827 panic("freeing held page, count=%d", m->hold_count); (kgdb) list 822 else 823 panic("vm_page_free: freeing busy page"); 824 } 825 826 if (m->hold_count) { 827 panic("freeing held page, count=%d", m->hold_count); 828 } 829 830 vm_page_remove(m); 831 vm_page_unqueue(m); (kgdb) print m $4 = (struct vm_page *) 0xf0306da0 (kgdb) print *m $5 = {pageq = {tqe_next = 0xf02a2ff0, tqe_prev = 0xf031e0e0}, hashq = { tqe_next = 0x0, tqe_prev = 0xf0278200}, listq = {tqe_next = 0xf0312d40, tqe_prev = 0xf29796a0}, object = 0xf2979680, pindex = 0x3c0, phys_addr = 0x289f000, queue = 0x4, flags = 0xb4, wire_count = 0x0, hold_count = 0x1, act_count = 0x5, busy = 0x0, valid = 0xff, dirty = 0xff} (kgdb) up #3 0xf01b7cd1 in vm_object_terminate (object=0xf2979680) at ../../vm/vm_object.c:409 409 vm_page_free(p); (kgdb) list 404 */ 405 while ((p = object->memq.tqh_first) != NULL) { 406 if (p->flags & PG_BUSY) 407 printf("vm_object_terminate: freeing busy page\n"); 408 PAGE_WAKEUP(p); 409 vm_page_free(p); 410 cnt.v_pfree++; 411 } 412 413 /* (kgdb) print object $6 = (struct vm_object *) 0xf2979680 (kgdb) print *object $7 = {object_list = {tqe_next = 0xf2892600, tqe_prev = 0xf2724600}, cached_list = {tqe_next = 0xf2979694, tqe_prev = 0x10}, shadow_head = { tqh_first = 0x0, tqh_last = 0xf2979690}, shadow_list = { tqe_next = 0xf0064c2, tqe_prev = 0x0}, memq = {tqh_first = 0xf0306da0, tqh_last = 0xf02ddcb0}, type = OBJT_DEFAULT, size = 0x3c1, ref_count = 0x0, shadow_count = 0x0, flags = 0x188, paging_in_progress = 0x0, resident_page_count = 0x4, paging_offset = 0x0000000000000000, backing_object = 0x0, backing_object_offset = 0x0000000000000000, last_read = 0x0, pager_object_list = {tqe_next = 0xf28b4880, tqe_prev = 0xf27e1358}, handle = 0x0, un_pager = {vnp = {vnp_size = 0x0000000000001000}, devp = { devp_pglist = {tqh_first = 0x1000, tqh_last = 0x0}}, swp = { swp_nblocks = 0x1000, swp_allocsize = 0x0, swp_blocks = 0xf25a5d00, swp_poip = 0x0}}} (kgdb) print cnt $8 = {v_swtch = 0x155195b, v_trap = 0xb03838, v_syscall = 0x22c3467, v_intr = 0x475637b, v_soft = 0x95877f, v_vm_faults = 0xa6ff26, v_cow_faults = 0x11fdeb, v_zfod = 0x4126db, v_swapin = 0x222a0, v_swapout = 0x23e65, v_swappgsin = 0x48ec7, v_swappgsout = 0x6a194, v_vnodein = 0xdf5b, v_vnodeout = 0x204ec, v_vnodepgsin = 0x2f637, v_vnodepgsout = 0x36cb6, v_intrans = 0x26a, v_reactivated = 0x6bb03, v_pdwakeups = 0x4726, v_pdpages = 0x49c1197, v_dfree = 0x2b5f, v_pfree = 0x4ca32b, v_tfree = 0xb96306, v_page_size = 0x1000, v_page_count = 0x3d55, v_free_reserved = 0x1d, v_free_target = 0x104, v_free_min = 0x6a, v_free_count = 0x6b, v_wire_count = 0x1079, v_active_count = 0x1f87, v_inactive_target = 0xebe, v_inactive_count = 0x5c4, v_cache_count = 0x725, v_cache_min = 0x6ff, v_cache_max = 0x1bfe, v_pageout_free_min = 0x17, v_interrupt_free_min = 0x2} (kgdb) up #4 0xf01b7b3b in vm_object_deallocate (object=0xf2979680) at ../../vm/vm_object.c:356 356 vm_object_terminate(object); (kgdb) print object $9 = (struct vm_object *) 0xf2979680 (kgdb) print *object $10 = {object_list = {tqe_next = 0xf2892600, tqe_prev = 0xf2724600}, cached_list = {tqe_next = 0xf2979694, tqe_prev = 0x10}, shadow_head = { tqh_first = 0x0, tqh_last = 0xf2979690}, shadow_list = { tqe_next = 0xf0064c2, tqe_prev = 0x0}, memq = {tqh_first = 0xf0306da0, tqh_last = 0xf02ddcb0}, type = OBJT_DEFAULT, size = 0x3c1, ref_count = 0x0, shadow_count = 0x0, flags = 0x188, paging_in_progress = 0x0, resident_page_count = 0x4, paging_offset = 0x0000000000000000, backing_object = 0x0, backing_object_offset = 0x0000000000000000, last_read = 0x0, pager_object_list = {tqe_next = 0xf28b4880, tqe_prev = 0xf27e1358}, handle = 0x0, un_pager = {vnp = {vnp_size = 0x0000000000001000}, devp = { devp_pglist = {tqh_first = 0x1000, tqh_last = 0x0}}, swp = { swp_nblocks = 0x1000, swp_allocsize = 0x0, swp_blocks = 0xf25a5d00, swp_poip = 0x0}}} (kgdb) list 351 temp = object->backing_object; 352 if (temp) { 353 TAILQ_REMOVE(&temp->shadow_head, object, shadow_list); 354 --temp->shadow_count; 355 } 356 vm_object_terminate(object); 357 /* unlocks and deallocates object */ 358 object = temp; 359 } 360 } (kgdb) print temp $11 = (struct vm_object *) 0x0 (kgdb) print object->backing_object $12 = (struct vm_object *) 0x0 (kgdb) print object $13 = (struct vm_object *) 0xf2979680 (kgdb) print temp->shadow_head $14 = {tqh_first = 0x8ee08ed8, tqh_last = 0xc2e8e8} (kgdb) print temp $15 = (struct vm_object *) 0x0 (kgdb) up #5 0xf01b5f14 in vm_map_entry_delete (map=0xf2823f00, entry=0xf2aec280) at ../../vm/vm_map.c:1616 1616 vm_object_deallocate(entry->object.vm_object); (kgdb) list 1611 map->size -= entry->end - entry->start; 1612 1613 if (entry->is_a_map || entry->is_sub_map) 1614 vm_map_deallocate(entry->object.share_map); 1615 else 1616 vm_object_deallocate(entry->object.vm_object); 1617 1618 vm_map_entry_dispose(map, entry); 1619 } 1620 (kgdb) print entry $16 = (struct vm_map_entry *) 0xf2aec280 (kgdb) print *entry $17 = {prev = 0xf2823f20, next = 0xf2823f20, start = 0xefbfe000, end = 0xeffbf000, object = {vm_object = 0xf2979680, share_map = 0xf2979680, sub_map = 0xf2979680}, offset = 0x0000000000000000, is_a_map = 0x0, is_sub_map = 0x0, copy_on_write = 0x0, needs_copy = 0x0, protection = 0x7, max_protection = 0x7, inheritance = 0x1, wired_count = 0x0} (kgdb) print map $18 = (struct vm_map *) 0xf2823f00 (kgdb) print *map $19 = {pmap = 0xf2823f64, lock = {want_write = 0x1, want_upgrade = 0x0, waiting = 0x0, can_sleep = 0x1, read_count = 0x0, proc = 0x0, recursion_depth = 0x0}, header = {prev = 0xf2823f20, next = 0xf2823f20, start = 0x0, end = 0xeffbf000, object = {vm_object = 0x0, share_map = 0x0, sub_map = 0x0}, offset = 0x0000000000000000, is_a_map = 0x0, is_sub_map = 0x0, copy_on_write = 0x0, needs_copy = 0x0, protection = 0x0, max_protection = 0x0, inheritance = 0x0, wired_count = 0x0}, nentries = 0x0, size = 0x1a47000, is_main_map = 0x1, ref_count = 0x1, hint = 0xf2823f20, first_free = 0xf2823f20, entries_pageable = 0x1, timestamp = 0x9} (kgdb) up #6 0xf01b6066 in vm_map_delete (map=0xf2823f00, start=0x0, end=0xeffbf000) at ../../vm/vm_map.c:1711 1711 vm_map_entry_delete(map, entry); (kgdb) list 1706 * removing all pmap entries pointing to its pages. 1707 * (Otherwise, its page frames may be reallocated, and any 1708 * modify bits will be set in the wrong object!) 1709 */ 1710 1711 vm_map_entry_delete(map, entry); 1712 entry = next; 1713 } 1714 return (KERN_SUCCESS); 1715 } (kgdb) print map $20 = (struct vm_map *) 0xf2823f00 (kgdb) print entry $21 = (struct vm_map_entry *) 0xf2aec280 (kgdb) up #7 0xf01b4a69 in vmspace_free (vm=0xf2823f00) at ../../vm/vm_map.c:252 252 (void) vm_map_delete(&vm->vm_map, vm->vm_map.min_offset, (kgdb) list 247 * Lock the map, to wait out all other references to it. 248 * Delete all of the mappings and pages they hold, then call 249 * the pmap module to reclaim anything left. 250 */ 251 vm_map_lock(&vm->vm_map); 252 (void) vm_map_delete(&vm->vm_map, vm->vm_map.min_offset, 253 vm->vm_map.max_offset); 254 vm_map_unlock(&vm->vm_map); 255 while( vm->vm_map.ref_count != 1) 256 tsleep(&vm->vm_map.ref_count, PVM, "vmsfre", 0); (kgdb) print vm $22 = (struct vmspace *) 0xf2823f00 (kgdb) print *vm $23 = {vm_map = {pmap = 0xf2823f64, lock = {want_write = 0x1, want_upgrade = 0x0, waiting = 0x0, can_sleep = 0x1, read_count = 0x0, proc = 0x0, recursion_depth = 0x0}, header = {prev = 0xf2823f20, next = 0xf2823f20, start = 0x0, end = 0xeffbf000, object = { vm_object = 0x0, share_map = 0x0, sub_map = 0x0}, offset = 0x0000000000000000, is_a_map = 0x0, is_sub_map = 0x0, copy_on_write = 0x0, needs_copy = 0x0, protection = 0x0, max_protection = 0x0, inheritance = 0x0, wired_count = 0x0}, nentries = 0x0, size = 0x1a47000, is_main_map = 0x1, ref_count = 0x1, hint = 0xf2823f20, first_free = 0xf2823f20, entries_pageable = 0x1, timestamp = 0x9}, vm_pmap = {pm_pdir = 0xf8b66000, pm_dref = 0x0, pm_count = 0x1, pm_stats = {resident_count = 0xfffffffa, wired_count = 0x0}, pm_map = 0xf2823f00}, vm_refcnt = 0x0, vm_shm = 0x0, vm_upages_obj = 0xf2979680, vm_rssize = 0x0, vm_swrss = 0x23, vm_tsize = 0xa, vm_dsize = 0x2, vm_ssize = 0x20, vm_taddr = 0x1000 "Ì", vm_daddr = 0xb000 "|ò\001", vm_maxsaddr = 0xebbfe000 <Address 0xebbfe000 out of bounds>, vm_minsaddr = 0xefbfde28 ""} (kgdb) up #8 0xf01c992a in cpu_wait (p=0xf26ab000) at ../../i386/i386/vm_machdep.c:628 628 vmspace_free(p->p_vmspace); (kgdb) list 623 struct proc *p; 624 { 625 /* drop per-process resources */ 626 pmap_qremove((vm_offset_t) p->p_addr, UPAGES); 627 kmem_free(u_map, (vm_offset_t)p->p_addr, ctob(UPAGES)); 628 vmspace_free(p->p_vmspace); 629 } 630 631 /* 632 * Dump the machine specific header information at the start of a core dump. (kgdb) print p $24 = (struct proc *) 0xf26ab000 (kgdb) print *p $25 = {p_forw = 0xf275e200, p_back = 0x0, p_list = {le_next = 0x0, le_prev = 0xf023e3b8}, p_cred = 0x0, p_fd = 0xf2ab3200, p_stats = 0xf66ec258, p_limit = 0xf0205474, p_vmspace = 0xf2823f00, p_sigacts = 0xf66ec128, p_flag = 0x6004, p_stat = 0x5, p_pad1 = "ðûï", p_pid = 0x301d, p_pglist = {le_next = 0x0, le_prev = 0xf2853a34}, p_pptr = 0xf2853a00, p_sibling = {le_next = 0x0, le_prev = 0xf2853a48}, p_children = {lh_first = 0x0}, p_oppid = 0x0, p_dupfd = 0x0, p_estcpu = 0x100, p_cpticks = 0x1, p_pctcpu = 0x0, p_wchan = 0x0, p_wmesg = 0x0, p_swtime = 0x0, p_slptime = 0x0, p_realtimer = { it_interval = {tv_sec = 0x0, tv_usec = 0x0}, it_value = {tv_sec = 0x0, tv_usec = 0x0}}, p_rtime = {tv_sec = 0x0, tv_usec = 0x1582}, p_uticks = 0, p_sticks = 1, p_iticks = 0, p_traceflag = 0x0, p_tracep = 0x0, p_siglist = 0x0, p_textvp = 0xf257e600, p_lock = 0x0, p_pad2 = "\000\000", p_locks = 0x0, p_simple_locks = 0x0, p_hash = {le_next = 0x0, le_prev = 0xf23fd074}, p_sigmask = 0x0, p_sigignore = 0xffffffff, p_sigcatch = 0x0, p_priority = 0x72, p_usrpri = 0x72, p_nice = 0x0, p_comm = "[\000\000n\000er\000\000\000\000\000\000\000\000\000", p_pgrp = 0x0, p_sysent = 0xf01f88c0, p_rtprio = {type = 0x1, prio = 0x0}, p_addr = 0xf66ec000, p_md = {md_flags = 0x6, md_regs = 0xefbfffbc}, p_xstat = 0x0, p_acflag = 0x0, p_ru = 0x0} (kgdb) print u_map $26 = (struct vm_map *) 0xf1399d80 (kgdb) print *u_map $27 = {pmap = 0xf021b798, lock = {want_write = 0x0, want_upgrade = 0x0, waiting = 0x0, can_sleep = 0x1, read_count = 0x0, proc = 0x0, recursion_depth = 0x0}, header = {prev = 0xf2ad5500, next = 0xf2af5140, start = 0xf6566000, end = 0xf858e000, object = {vm_object = 0x0, share_map = 0x0, sub_map = 0x0}, offset = 0x0000000000000000, is_a_map = 0x0, is_sub_map = 0x0, copy_on_write = 0x0, needs_copy = 0x0, protection = 0x0, max_protection = 0x0, inheritance = 0x0, wired_count = 0x0}, nentries = 0x5, size = 0x1ae000, is_main_map = 0x1, ref_count = 0x2, hint = 0xf2af5140, first_free = 0xf2af5140, entries_pageable = 0x0, timestamp = 0x2318f} (kgdb) up #9 0xf010c355 in wait1 (q=0xf2853a00, uap=0xefbfff94, retval=0xefbfff84, compat=0x0) at ../../kern/kern_exit.c:426 426 cpu_wait(p); (kgdb) list 421 /* 422 * Give machine-dependent layer a chance 423 * to free anything that cpu_exit couldn't 424 * release while still running in process context. 425 */ 426 cpu_wait(p); 427 FREE(p, M_PROC); 428 nprocs--; 429 return (0); 430 } (kgdb) print *p $28 = {p_forw = 0xf275e200, p_back = 0x0, p_list = {le_next = 0x0, le_prev = 0xf023e3b8}, p_cred = 0x0, p_fd = 0xf2ab3200, p_stats = 0xf66ec258, p_limit = 0xf0205474, p_vmspace = 0xf2823f00, p_sigacts = 0xf66ec128, p_flag = 0x6004, p_stat = 0x5, p_pad1 = "ðûï", p_pid = 0x301d, p_pglist = {le_next = 0x0, le_prev = 0xf2853a34}, p_pptr = 0xf2853a00, p_sibling = {le_next = 0x0, le_prev = 0xf2853a48}, p_children = {lh_first = 0x0}, p_oppid = 0x0, p_dupfd = 0x0, p_estcpu = 0x100, p_cpticks = 0x1, p_pctcpu = 0x0, p_wchan = 0x0, p_wmesg = 0x0, p_swtime = 0x0, p_slptime = 0x0, p_realtimer = { it_interval = {tv_sec = 0x0, tv_usec = 0x0}, it_value = {tv_sec = 0x0, tv_usec = 0x0}}, p_rtime = {tv_sec = 0x0, tv_usec = 0x1582}, p_uticks = 0, p_sticks = 1, p_iticks = 0, p_traceflag = 0x0, p_tracep = 0x0, p_siglist = 0x0, p_textvp = 0xf257e600, p_lock = 0x0, p_pad2 = "\000\000", p_locks = 0x0, p_simple_locks = 0x0, p_hash = {le_next = 0x0, le_prev = 0xf23fd074}, p_sigmask = 0x0, p_sigignore = 0xffffffff, p_sigcatch = 0x0, p_priority = 0x72, p_usrpri = 0x72, p_nice = 0x0, p_comm = "[\000\000n\000er\000\000\000\000\000\000\000\000\000", p_pgrp = 0x0, p_sysent = 0xf01f88c0, p_rtprio = {type = 0x1, prio = 0x0}, p_addr = 0xf66ec000, p_md = {md_flags = 0x6, md_regs = 0xefbfffbc}, p_xstat = 0x0, p_acflag = 0x0, p_ru = 0x0} (kgdb) up #10 0xf010c183 in wait4 (p=0xf2853a00, uap=0xefbfff94, retval=0xefbfff84) at ../../kern/kern_exit.c:323 323 return (wait1(p, uap, retval, 0)); (kgdb) list 318 struct proc *p; 319 struct wait_args *uap; 320 int *retval; 321 { 322 323 return (wait1(p, uap, retval, 0)); 324 } 325 326 static int 327 wait1(q, uap, retval, compat) (kgdb) print p $29 = (struct proc *) 0xf2853a00 (kgdb) print uap $30 = (struct wait_args *) 0xefbfff94 (kgdb) print *uap $31 = {pid = 0xffffffff, status = 0xefbfdb9c, options = 0x2, rusage = 0x0} (kgdb) print retval $32 = (int *) 0xefbfff84 (kgdb) up #11 0xf01c6171 in syscall (frame={tf_es = 0x27, tf_ds = 0x27, tf_edi = 0x5b000, tf_esi = 0x1, tf_ebp = 0xefbfdb60, tf_isp = 0xefbfffe4, tf_ebx = 0xefbfdb9c, tf_edx = 0x2, tf_ecx = 0xefbfdb9c, tf_eax = 0x7, tf_trapno = 0xc, tf_err = 0x7, tf_eip = 0x2b865, tf_cs = 0x1f, tf_eflags = 0x202, tf_esp = 0xefbfdb4c, tf_ss = 0x27}) at ../../i386/i386/trap.c:904 904 error = (*callp->sy_call)(p, args, rval); (kgdb) list 899 ktrsyscall(p->p_tracep, code, callp->sy_narg, args); 900 #endif 901 rval[0] = 0; 902 rval[1] = frame.tf_edx; 903 904 error = (*callp->sy_call)(p, args, rval); 905 906 switch (error) { 907 908 case 0: (kgdb) >How-To-Repeat: I do now know, but running news and loading the machine would probably be the best try. >Fix: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199605090012.DAA14899>