Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 24 Feb 2006 14:10:33 -0700 (MST)
From:      Lonnie Olson <fungus@aros.net>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   i386/93809: panic: could not copy LDT on RELENG_5_3 through RELENG_5
Message-ID:  <200602242110.k1OLAXFi016707@phobos.aros.net>
Resent-Message-ID: <200602242120.k1OLK4P7024009@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         93809
>Category:       i386
>Synopsis:       panic: could not copy LDT on RELENG_5_3 through RELENG_5
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    freebsd-i386
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Fri Feb 24 21:20:04 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Lonnie Olson
>Release:        FreeBSD 5.5-PRERELEASE i386
>Organization:
ArosNet
>Environment:
System: FreeBSD phobos.aros.net 5.5-PRERELEASE FreeBSD 5.5-PRERELEASE #1: Thu Feb 23 14:24:58 MST 2006 root@phobos.aros.net:/usr/obj/usr/src/sys/PHOBOS i386

CPU: AMD Opteron(tm) Processor 246 (1991.25-MHz 686-class CPU)
  Origin = "AuthenticAMD"  Id = 0xf5a  Stepping = 10
  Features=0x78bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CM
OV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2>
  AMD Features=0xe0500000<NX,AMIE,LM,DSP,3DNow!>
real memory  = 2147418112 (2047 MB)
avail memory = 2095964160 (1998 MB)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
 cpu0 (BSP): APIC ID:  0
 cpu1 (AP): APIC ID:  1

>Description:
This machine and 2 others like it, panic after a while.  A better description of the problem was given by Howard.Wang in the freebsd-stable list last year.
http://lists.freebsd.org/pipermail/freebsd-stable/2005-August/017567.html

I can not upgrade this machine to -CURRENT.  Is there a fix for this in RELENG_5 anytime soon?

>How-To-Repeat:
This code can trigger tha panic on my machine with only 100 processes.  

//Below is a copy of the trigger program (executed as "./chain_fork 100 1 15")

/* chain_fork.c 1.0 by Howard. */

#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
         int N,M,T;
         int pid;
         char *p;
         int j;

         if(argc!=4)
         {
                 printf("Usage: %s <number_of_proc> <memsize_per_proc> <proc_keep_alive_in_seconds>\n",argv[0]);
                 return (0);
         }

         N = atoi(argv[1]);			//How many depth.
         M = atoi(argv[2])*1024*1024;	//Size per Proc.
         T = atoi(argv[3]);			//Life per Proc.

         while(N>0)
         {
                 pid = fork();
                 if (pid != 0)
                 {
                         p = malloc(M);
                         memset(p,0,M);
                         sleep(T);
                         exit(0);
                 }
                 else
                 {
                         printf("I forked a child No.%d\n",N);
                         N--;
                 }
         }
         return (0);
}

/* end of file */

>Fix:
Not sure here.  Howard mentioned it was fixed in 7.0-CURRENT.  Perhaps it could be backported to RELENG_5??  Pretty please with sugar on top.

>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200602242110.k1OLAXFi016707>