From owner-freebsd-current Fri Feb 16 7:29:44 2001 Delivered-To: freebsd-current@freebsd.org Received: from pcnet1.pcnet.com (pcnet1.pcnet.com [204.213.232.3]) by hub.freebsd.org (Postfix) with ESMTP id 3ADDD37B491 for ; Fri, 16 Feb 2001 07:29:40 -0800 (PST) Received: (from eischen@localhost) by pcnet1.pcnet.com (8.8.7/PCNet) id KAA03206; Fri, 16 Feb 2001 10:28:58 -0500 (EST) Date: Fri, 16 Feb 2001 10:28:57 -0500 (EST) From: Daniel Eischen To: John Hay Cc: freebsd-current@FreeBSD.ORG Subject: Re: HEADS UP: -current world broken since Feb 10 In-Reply-To: <200102161309.f1GD9bI49385@zibbi.icomtek.csir.co.za> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Fri, 16 Feb 2001, John Hay wrote: > > > > DO NOT TRY TO UPGRADE -STABLE OR A PRE-FEB 10 -CURRENT TO A POST-FEB > > > > 10 -CURRENT UNTIL THIS IS RESOLVED. YOU HAVE BEEN WARNED. > > > > > > Any updates on this yet ? > > > > Warner committed a fix for this. But I'm having trouble building world > > with it. > > Well make world finished here, but it looks like all is not well. The > resultant /usr/libexec/elf/as coredump with a signal 11. I did put an > old one back but it only helped for a little while. gdb traceback for > both look the same: Try this uncompiled and untested patch to lib/libc/stdio/findfp.c. If it doesn't compile, you should be able to tweak it. -- Dan Eischen Index: findfp.c =================================================================== RCS file: /opt/b/CVS/src/lib/libc/stdio/findfp.c,v retrieving revision 1.14 diff -u -r1.14 findfp.c --- findfp.c 2001/02/16 06:11:22 1.14 +++ findfp.c 2001/02/16 15:25:20 @@ -66,6 +66,7 @@ /* _ub _extra */ /* the usual - (stdin + stdout + stderr) */ static FILE usual[FOPEN_MAX - 3]; +static struct usual_extra[FOPEN_MAX - 3]; static struct glue uglue = { NULL, FOPEN_MAX - 3, usual }; static struct __sFILEX __sFX[3]; @@ -215,7 +216,17 @@ void __sinit() { - /* Make sure we clean up on exit. */ - __cleanup = _cleanup; /* conservative */ - __sdidinit = 1; + int i; + + THREAD_LOCK(); + if (__sdidinit == 0) { + /* Set _extra for the usual suspects. */ + for (i = 0; i < FOPENMAX - 3; i++) + usual[i]._extra = &usual_extra[i]; + + /* Make sure we clean up on exit. */ + __cleanup = _cleanup; /* conservative */ + __sdidinit = 1; + } + THREAD_UNLOCK(); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message