i386/93809: panic: could not copy LDT on RELENG_5_3 through RELENG_5
Lonnie Olson
fungus at aros.net
Fri Feb 24 13:20:05 PST 2006
>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 at 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:
More information about the freebsd-i386
mailing list