From owner-freebsd-current Sat Jul 3 13:25:16 1999 Delivered-To: freebsd-current@freebsd.org Received: from fep4.post.tele.dk (fep4.post.tele.dk [195.41.46.139]) by hub.freebsd.org (Postfix) with ESMTP id 3697B15171 for ; Sat, 3 Jul 1999 13:25:12 -0700 (PDT) (envelope-from peter@holm.cc) Received: from holm.cc ([195.249.209.231]) by fep4.post.tele.dk (InterMail v4.0 201-221) with ESMTP id <19990703202511.CXZF18064.fep4@holm.cc> for ; Sat, 3 Jul 1999 22:25:11 +0200 Message-ID: <377E723D.19674A38@holm.cc> Date: Sat, 03 Jul 1999 22:27:41 +0200 From: Peter Holm X-Mailer: Mozilla 4.51 [en] (Win95; I) X-Accept-Language: en MIME-Version: 1.0 To: freebsd-current@FreeBSD.org Subject: 12 trap in rfork+0x22 Content-Type: multipart/mixed; boundary="------------C6DB7A8D1433429B6317E010" Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This is a multi-part message in MIME format. --------------C6DB7A8D1433429B6317E010 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit I don't know is this is of any interest, but a rfork(0) will cause a fault. I have included a patch. fault code = supervisor read, page not present instruction pointer = 0x8:0xc015ff46 stack pointer = 0x10:0xc6894f38 frame pointer = 0x10:0xc6894f4c code segment = base 0x0, limit 0xfffff, type 0x1b = DPL 0, pres 1, def32 1, gran 1 processor eflags = interrupt enabled, resume, IOPL = 0 current process = 94200 (syscall) interrupt mask = kernel: type 12 trap, code=0 Stopped at rfork+0x22: movl 0x30(%eax),%eax db> p %eax c015ff46 <--- why this? eax == 0x8 in show reg db> trace rfork(c680a100,c6894f80,2,bfbfdc24,bfbfdc30) at rfork+0x22 syscall(2f,2f,2f,bfbfdc30,bfbfdc24) at syscall+0x182 Xint0x80_syscall() at Xint0x80_syscall+0x30 db> show reg cs 0x8 ds 0x10 es 0x10 fs 0x10 ss 0x10 eax 0x8 ecx 0x7d8aa8c3 edx 0 ebx 0xc680a100 esp 0xc6894f38 ebp 0xc6894f4c esi 0xc02f9a3c sysent+0x7d8 edi 0 eip 0xc015ff46 rfork+0x22 efl 0x10246 rfork+0x22: movl 0x30(%eax),%eax db> -- Peter Holm | mailto:peter@holm.cc | http://login.dknet.dk/~pho/ -[ Member of the BSD-Dk User Group / http://www.bsd-dk.dk/ ] - --------------C6DB7A8D1433429B6317E010 Content-Type: text/plain; charset=us-ascii; name="diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="diff" *** src/sys/kern/kern_fork.c~ Sat Jul 3 21:15:58 1999 --- src/sys/kern/kern_fork.c Sat Jul 3 21:54:18 1999 *************** *** 130,136 **** error = fork1(p, uap->flags, &p2); if (error == 0) { ! p->p_retval[0] = p2->p_pid; p->p_retval[1] = 0; } return error; --- 130,139 ---- error = fork1(p, uap->flags, &p2); if (error == 0) { ! if (p2 == NULL) ! p->p_retval[0] = 0; ! else ! p->p_retval[0] = p2->p_pid; p->p_retval[1] = 0; } return error; *************** *** 196,201 **** --- 199,205 ---- p1->p_fd = newfd; } } + *procp = NULL; return (0); } --------------C6DB7A8D1433429B6317E010-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message