Bug 12853

Summary: uthread_init.c PANICs in case of (legally) close stdin
Product: Base System Reporter: Mikhail Teterin <mi>
Component: binAssignee: freebsd-bugs (Nobody) <bugs>
Status: Closed FIXED    
Severity: Affects Only Me CC: eischen
Priority: Normal    
Version: 3.2-STABLE   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff none

Description Mikhail Teterin 1999-07-28 17:40:01 UTC
	It  appears, a  thread-using (linked  with -lc_r)  application
	must have a  valid stdin at startup (and  stdout, and stderr).
	Otherwise,  it will  PANIC("Cannot get  stdio flags")  and may
	then seg-fault (because of the closed stderr too).

	The discussion of the matter with John Birrell and Dan Eischen
	yielded a patch below, which fixed our problem.

Fix: This fix does NOT fix the seg-fault itself, but only prevents
	the panic from happening in this legal case.

	I hope, this gets commited before the seg-fault is hunted down,
	as it is a different problem.
How-To-Repeat: 
	We are replacing the HylaFAX's ${PREFIX}/sbin/faxsend with our
	own thread-using application. The  app works fine when started
	from  command line,  but dies  a horrible  death when  started
	normally -- by HylaFAX's ${PREFIX}/sbin/faxq.

	I managed to  produce the ktrace (had  to make /usr/bin/ktrace
	suid),  which  helped  me   identify  the  problem  and,  most
	importantly, helped the "thread people" come up with the fix:

  1157 ktrace   RET   ktrace 0
  1157 ktrace   CALL  execve(0xbfbfdc23,0xbfbfdaec,0xbfbfdb00)
  1157 ktrace   NAMI  "/usr/local/sbin/faxsend.bin"
  1157 faxsend.bin RET   execve 0
  1157 faxsend.bin CALL  getpid
  1157 faxsend.bin RET   getpid 1157/0x485
  1157 faxsend.bin CALL  fcntl(0,0x3,0)
  1157 faxsend.bin RET   fcntl -1 errno 9 Bad file descriptor
  1157 faxsend.bin CALL  write(0x2,0xbfbfd9ac,0x6e)
  1157 faxsend.bin GIO   fd 2 wrote 110 bytes
       "Fatal error 'Cannot get stdio flags' at line ? in file /usr/src/lib/libc_r/ut\
	hread/uthread_init.c (errno = ?)
       "
  1157 faxsend.bin RET   write 110/0x6e
  1157 faxsend.bin CALL  setitimer(0x2,0xbfbfd968,0)
  1157 faxsend.bin RET   setitimer 0
  1157 faxsend.bin CALL  close(0xffffffff)
  1157 faxsend.bin RET   close -1 errno 9 Bad file descriptor
  1157 faxsend.bin CALL  close(0xffffffff)
  1157 faxsend.bin RET   close -1 errno 9 Bad file descriptor
  1157 faxsend.bin PSIG  SIGSEGV SIG_DFL
Comment 1 Sheldon Hearn 1999-07-29 20:55:39 UTC
Text from misfiled PR's associated with this one:

From eischen@vigrid.com Wed Jul 28 10:02:06 1999
Return-Path: <eischen@vigrid.com>
Received: from pcnet1.pcnet.com (pcnet1.pcnet.com [204.213.232.3])
	by hub.freebsd.org (Postfix) with ESMTP id 4CF5414EF1
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 28 Jul 1999 10:01:56 -0700 (PDT)
	(envelope-from eischen@vigrid.com)
Received: (from eischen@localhost)
	by pcnet1.pcnet.com (8.8.7/PCNet) id MAA06499;
	Wed, 28 Jul 1999 12:59:28 -0400 (EDT)
Message-Id: <199907281659.MAA06499@pcnet1.pcnet.com>
Date: Wed, 28 Jul 1999 12:59:28 -0400 (EDT)
From: Daniel Eischen <eischen@vigrid.com>
To: FreeBSD-gnats-submit@freebsd.org, mi@aldan.algebra.com
Cc: eischen@vigrid.com, jb@cimlogic.com.au, lawlopez@cisco.com,
	msestina@cisco.com, sjlee@cisco.com
Subject: Re: resend: uthread_init.c PANICs in case of (legally) close stdin

>Number:         12854
>Category:       pending
>Synopsis:       Re: resend: uthread_init.c PANICs in case of (legally) close stdin
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 28 10:10:00 PDT 1999
>Closed-Date:    
>Last-Modified:  
>Originator:     
>Release:        
>Organization:
>Environment:
>Description:
 Wow, this CC: list is growing!
 
 Can you please try this more complete patch (made against -stable)?
 I believe it better handles initialization of the fd tables for fds
 < 3.
 
 Index: uthread_fd.c
 ===================================================================
 RCS file: /A/cvs/src/lib/libc_r/uthread/uthread_fd.c,v
 retrieving revision 1.9.2.2
 diff -u -r1.9.2.2 uthread_fd.c
 --- uthread_fd.c	1999/07/23 13:00:27	1.9.2.2
 +++ uthread_fd.c	1999/07/28 16:31:33
 @@ -94,13 +94,13 @@
  		TAILQ_INIT(&entry->w_queue);
  
  		/* Get the flags for the file: */
 -		if (fd >= 3 && (entry->flags =
 -		    _thread_sys_fcntl(fd, F_GETFL, 0)) == -1) {
 +		if (((fd >= 3) || (_pthread_stdio_flags[fd] == -1)) &&
 +		    (entry->flags = _thread_sys_fcntl(fd, F_GETFL, 0)) == -1) {
  			ret = -1;
 -		    }
 +		}
  		else {
  			/* Check if a stdio descriptor: */
 -			if (fd < 3)
 +			if ((fd < 3) && (_pthread_stdio_flags[fd] != -1))
  				/*
  				 * Use the stdio flags read by
  				 * _pthread_init() to avoid
 Index: uthread_init.c
 ===================================================================
 RCS file: /A/cvs/src/lib/libc_r/uthread/uthread_init.c,v
 retrieving revision 1.9.2.3
 diff -u -r1.9.2.3 uthread_init.c
 --- uthread_init.c	1999/07/23 13:00:29	1.9.2.3
 +++ uthread_init.c	1999/07/28 16:43:27
 @@ -121,8 +121,9 @@
  
  	/* Get the standard I/O flags before messing with them : */
  	for (i = 0; i < 3; i++)
 -		if ((_pthread_stdio_flags[i] =
 -		    _thread_sys_fcntl(i,F_GETFL, NULL)) == -1)
 +		if (((_pthread_stdio_flags[i] =
 +		    _thread_sys_fcntl(i,F_GETFL, NULL)) == -1) &&
 +		    (errno != EBADF))
  			PANIC("Cannot get stdio flags");
  
  	/*
 @@ -292,12 +293,18 @@
  			}
  
  			/* Initialize stdio file descriptor table entries: */
 -			if ((_thread_fd_table_init(0) != 0) ||
 -			    (_thread_fd_table_init(1) != 0) ||
 -			    (_thread_fd_table_init(2) != 0)) {
 -				PANIC("Cannot initialize stdio file descriptor "
 -				    "table entries");
 -			}
 +			if ((_thread_fd_table_init(0) != 0) &&
 +			    (errno != EBADF))
 +				PANIC("Cannot initialize stdio file "
 +				    "descriptor table entries");
 +			else if ((_thread_fd_table_init(1) != 0) &&
 +			    (errno != EBADF))
 +				PANIC("Cannot initialize stdout file "
 +				    "descriptor table entries");
 +			else if ((_thread_fd_table_init(2) != 0) &&
 +			    (errno != EBADF))
 +				PANIC("Cannot initialize stderr file "
 +				    "descriptor table entries");
  		}
  	}
  
 
 Dan Eischen
 eischen@vigrid.com
 
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:

From lawlopez@cisco.com Wed Jul 28 16:47:44 1999
Return-Path: <lawlopez@cisco.com>
Received: from tornado.cisco.com (tornado.cisco.com [171.69.104.22])
	by hub.freebsd.org (Postfix) with ESMTP id 0A20514D8B
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 28 Jul 1999 16:47:33 -0700 (PDT)
	(envelope-from lawlopez@cisco.com)
Received: from cisco.com (lawlopez-pc.cisco.com [171.69.206.56]) by tornado.cisco.com (8.8.5-Cisco.1/8.6.5) with ESMTP id TAA10692; Wed, 28 Jul 1999 19:47:28 -0400 (EDT)
Message-Id: <379F9692.180CE56E@cisco.com>
Date: Wed, 28 Jul 1999 19:47:30 -0400
From: "Lawrence D. Lopez" <lawlopez@cisco.com>
Sender: lawlopez@cisco.com
To: Daniel Eischen <eischen@vigrid.com>
Cc: FreeBSD-gnats-submit@freebsd.org, mi@aldan.algebra.com,
	jb@cimlogic.com.au, msestina@cisco.com, sjlee@cisco.com
Subject: Re: resend: uthread_init.c PANICs in case of (legally) close stdin
References: <199907281659.MAA06499@pcnet1.pcnet.com>

>Number:         12860
>Category:       pending
>Synopsis:       Re: resend: uthread_init.c PANICs in case of (legally) close stdin
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 28 16:50:01 PDT 1999
>Closed-Date:    
>Last-Modified:  
>Originator:     
>Release:        
>Organization:
>Environment:
>Description:
 This is a multi-part message in MIME format.
 --------------BD951E80393B91190D1AEB4A
 Content-Type: text/plain; charset=us-ascii
 Content-Transfer-Encoding: 7bit
 
 Dan,
 
 Test procedure:
 
 attached is a tarfile which contains
 the test procedure.
 
 ***
 
 extract it from the mail.
 
 tar xcv tarfile
 cd thread
 make
 
 
 ***
 
 This is what is in the tarfile:
 
 makefile:
 
 
 all:
         rm -f run thread *.core
         cc -o thread thread.c -lc_r
         cc -o run run.c
         ./run
 
 Program 1: thread.c:
 
 main()
 {
 }
 
 
 
 Compile it like:
 
 cc -o thread thread.c -lc_r
 
 
 Program 2: run.c
 
 main()
 {
         close(0);
 
         execl("./thread", "./thead", 0);
         perror("execl");
 }
 
 
 Compile it like:
 
 cc -o run run.c
 
 
 Now type ./run to cause the bug:
 ./run
 Fatal error 'Cannot get stdio flags' at line ? in
 file /usr/src/lib/libc_r/uthread/uthread_init.c
 (errno = ?)
 Segmentation fault (core dumped)
 
 Hope this helps!
 
 	Larry
 
 
 Daniel Eischen wrote:
 > 
 > Wow, this CC: list is growing!
 > 
 > Can you please try this more complete patch (made against -stable)?
 > I believe it better handles initialization of the fd tables for fds
 > < 3.
 > 
 > Index: uthread_fd.c
 > ===================================================================
 > RCS file: /A/cvs/src/lib/libc_r/uthread/uthread_fd.c,v
 > retrieving revision 1.9.2.2
 > diff -u -r1.9.2.2 uthread_fd.c
 > --- uthread_fd.c        1999/07/23 13:00:27     1.9.2.2
 > +++ uthread_fd.c        1999/07/28 16:31:33
 > @@ -94,13 +94,13 @@
 >                 TAILQ_INIT(&entry->w_queue);
 > 
 >                 /* Get the flags for the file: */
 > -               if (fd >= 3 && (entry->flags =
 > -                   _thread_sys_fcntl(fd, F_GETFL, 0)) == -1) {
 > +               if (((fd >= 3) || (_pthread_stdio_flags[fd] == -1)) &&
 > +                   (entry->flags = _thread_sys_fcntl(fd, F_GETFL, 0)) == -1) {
 >                         ret = -1;
 > -                   }
 > +               }
 >                 else {
 >                         /* Check if a stdio descriptor: */
 > -                       if (fd < 3)
 > +                       if ((fd < 3) && (_pthread_stdio_flags[fd] != -1))
 >                                 /*
 >                                  * Use the stdio flags read by
 >                                  * _pthread_init() to avoid
 > Index: uthread_init.c
 > ===================================================================
 > RCS file: /A/cvs/src/lib/libc_r/uthread/uthread_init.c,v
 > retrieving revision 1.9.2.3
 > diff -u -r1.9.2.3 uthread_init.c
 > --- uthread_init.c      1999/07/23 13:00:29     1.9.2.3
 > +++ uthread_init.c      1999/07/28 16:43:27
 > @@ -121,8 +121,9 @@
 > 
 >         /* Get the standard I/O flags before messing with them : */
 >         for (i = 0; i < 3; i++)
 > -               if ((_pthread_stdio_flags[i] =
 > -                   _thread_sys_fcntl(i,F_GETFL, NULL)) == -1)
 > +               if (((_pthread_stdio_flags[i] =
 > +                   _thread_sys_fcntl(i,F_GETFL, NULL)) == -1) &&
 > +                   (errno != EBADF))
 >                         PANIC("Cannot get stdio flags");
 > 
 >         /*
 > @@ -292,12 +293,18 @@
 >                         }
 > 
 >                         /* Initialize stdio file descriptor table entries: */
 > -                       if ((_thread_fd_table_init(0) != 0) ||
 > -                           (_thread_fd_table_init(1) != 0) ||
 > -                           (_thread_fd_table_init(2) != 0)) {
 > -                               PANIC("Cannot initialize stdio file descriptor "
 > -                                   "table entries");
 > -                       }
 > +                       if ((_thread_fd_table_init(0) != 0) &&
 > +                           (errno != EBADF))
 > +                               PANIC("Cannot initialize stdio file "
 > +                                   "descriptor table entries");
 > +                       else if ((_thread_fd_table_init(1) != 0) &&
 > +                           (errno != EBADF))
 > +                               PANIC("Cannot initialize stdout file "
 > +                                   "descriptor table entries");
 > +                       else if ((_thread_fd_table_init(2) != 0) &&
 > +                           (errno != EBADF))
 > +                               PANIC("Cannot initialize stderr file "
 > +                                   "descriptor table entries");
 >                 }
 >         }
 > 
 > 
 > Dan Eischen
 > eischen@vigrid.com
 --------------BD951E80393B91190D1AEB4A
 Content-Type: application/octet-stream; name="tarfile"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment; filename="tarfile"
 
 dGhyZWFkLwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACA0MDc1NSAA
 ICAxNzU1IAAgIDE3NTUgACAgICAgICAgICAwICA2NzQ3NzEzMDExICAxMjI0NQAgNQAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGxhd2xv
 cGV6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbGF3bG9wZXoAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0aHJlYWQvdGhyZWFkLmMAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAMTAwNjQ0IAAgIDE3NTUgACAgMTc1NSAAICAgICAgICAgMTMg
 IDY3NDc3MTIwMzEgIDEzNzEwACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAHVzdGFyICAAbGF3bG9wZXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABs
 YXdsb3BlegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1h
 aW4oKQp7Cn0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGhyZWFkL3J1bi5jAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAADEwMDY0NCAAICAxNzU1IAAgIDE3NTUgACAgICAgICAgMTE1ICA2
 NzQ3NzEyMTUwICAxMzI3MgAgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAB1c3RhciAgAGxhd2xvcGV6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbGF3
 bG9wZXoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtYWlu
 KCkKewoJY2xvc2UoMCk7CgoJZXhlY2woIi4vdGhyZWFkIiwgIi4vdGhlYWQiLCAwKTsKCXBl
 cnJvcigiZXhlY2wiKTsKfQkJCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRocmVhZC9tYWtlZmlsZQAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAxMDA2NDQgACAgMTc1NSAAICAxNzU1IAAgICAgICAgIDEyMyAgNjc0
 NzcxMjc3NyAgMTQwNDAAIDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAdXN0YXIgIABsYXdsb3BlegAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGxhd2xv
 cGV6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYWxsOgoJ
 cm0gLWYgcnVuIHRocmVhZCAqLmNvcmUKCWNjIC1vIHRocmVhZCB0aHJlYWQuYyAtbGNfcgoJ
 Y2MgLW8gcnVuIHJ1bi5jCgkuL3J1bgoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
 --------------BD951E80393B91190D1AEB4A--
 
 
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:

From jb@cimlogic.com.au Wed Jul 28 16:55:22 1999
Return-Path: <jb@cimlogic.com.au>
Received: from cimlogic.com.au (cimlog.lnk.telstra.net [139.130.51.31])
	by hub.freebsd.org (Postfix) with ESMTP id 147391543E
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 28 Jul 1999 16:55:12 -0700 (PDT)
	(envelope-from jb@cimlogic.com.au)
Received: (from jb@localhost)
	by cimlogic.com.au (8.9.3/8.9.1) id KAA58415;
	Thu, 29 Jul 1999 10:01:12 +1000 (EST)
	(envelope-from jb)
Message-Id: <199907290001.KAA58415@cimlogic.com.au>
Date: Thu, 29 Jul 1999 10:01:12 +1000 (EST)
From: John Birrell <jb@cimlogic.com.au>
To: lawlopez@cisco.com (Lawrence D. Lopez)
Cc: eischen@vigrid.com (Daniel Eischen),
	FreeBSD-gnats-submit@freebsd.org, mi@aldan.algebra.com,
	jb@cimlogic.com.au, msestina@cisco.com, sjlee@cisco.com
In-Reply-To: <379F9692.180CE56E@cisco.com> from "Lawrence D. Lopez" at "Jul 28, 1999 07:47:30 pm"
Subject: Re: resend: uthread_init.c PANICs in case of (legally) close stdin

>Number:         12861
>Category:       pending
>Synopsis:       Re: resend: uthread_init.c PANICs in case of (legally) close stdin
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 28 17:00:01 PDT 1999
>Closed-Date:    
>Last-Modified:  
>Originator:     
>Release:        
>Organization:
>Environment:
>Description:
 Lawrence D. Lopez wrote:
 >         cc -o thread thread.c -lc_r
 
 This is wrong. You are linking against both libc _and_ libc_r.
 Use -pthread instead of -lc_r.
 
 -- 
 John Birrell - jb@cimlogic.com.au; jb@freebsd.org http://www.cimlogic.com.au/
 CIMlogic Pty Ltd, GPO Box 117A, Melbourne Vic 3001, Australia +61 418 353 137
 
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:

From eischen@vigrid.com Wed Jul 28 17:16:02 1999
Return-Path: <eischen@vigrid.com>
Received: from pcnet1.pcnet.com (pcnet1.pcnet.com [204.213.232.3])
	by hub.freebsd.org (Postfix) with ESMTP id 4BE84154E5
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 28 Jul 1999 17:15:52 -0700 (PDT)
	(envelope-from eischen@vigrid.com)
Received: (from eischen@localhost)
	by pcnet1.pcnet.com (8.8.7/PCNet) id UAA01121;
	Wed, 28 Jul 1999 20:13:41 -0400 (EDT)
Message-Id: <199907290013.UAA01121@pcnet1.pcnet.com>
Date: Wed, 28 Jul 1999 20:13:41 -0400 (EDT)
From: Daniel Eischen <eischen@vigrid.com>
To: eischen@vigrid.com, lawlopez@cisco.com
Cc: FreeBSD-gnats-submit@freebsd.org, jb@cimlogic.com.au,
	mi@aldan.algebra.com, msestina@cisco.com, sjlee@cisco.com
Subject: Re: resend: uthread_init.c PANICs in case of (legally) close stdin

>Number:         12862
>Category:       pending
>Synopsis:       Re: resend: uthread_init.c PANICs in case of (legally) close stdin
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 28 17:20:00 PDT 1999
>Closed-Date:    
>Last-Modified:  
>Originator:     
>Release:        
>Organization:
>Environment:
>Description:
 > Test procedure:
 > 
 > attached is a tarfile which contains
 > the test procedure.
 
 [ ... ]
 
 > all:
 >         rm -f run thread *.core
 >         cc -o thread thread.c -lc_r
 >         cc -o run run.c
 >         ./run
 
 That should be:
 
 	cc -o thread -pthread thread.c
 
 Don't use -lc_r when building threaded apps on FreeBSD because it
 also links in libc.
 
 But did you try the patches I sent?  I take it you didn't try
 them because your test program worked for me with the patches
 applied to uthread_fd.c and uthread_init.c.
 
 You said you were also getting other segmentation faults even
 after applying Mikhail Teterins patches from the PR filed.  What
 is the status of that problem?
 
 > >Fix: 
 >         
 >         This fix does NOT fix the seg-fault itself, but only prevents
 >         the panic from happening in this legal case.
 
 Dan Eischen
 eischen@vigrid.com
 
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:

From lawlopez@cisco.com Wed Jul 28 17:31:40 1999
Return-Path: <lawlopez@cisco.com>
Received: from tornado.cisco.com (tornado.cisco.com [171.69.104.22])
	by hub.freebsd.org (Postfix) with ESMTP id 4DA6814EEF
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 28 Jul 1999 17:31:38 -0700 (PDT)
	(envelope-from lawlopez@cisco.com)
Received: from cisco.com (lawlopez-pc.cisco.com [171.69.206.56]) by tornado.cisco.com (8.8.5-Cisco.1/8.6.5) with ESMTP id UAA11309; Wed, 28 Jul 1999 20:31:10 -0400 (EDT)
Message-Id: <379FA0D0.BE5E5BAD@cisco.com>
Date: Wed, 28 Jul 1999 20:31:12 -0400
From: "Lawrence D. Lopez" <lawlopez@cisco.com>
Sender: lawlopez@cisco.com
To: Daniel Eischen <eischen@vigrid.com>
Cc: FreeBSD-gnats-submit@freebsd.org, jb@cimlogic.com.au,
	mi@aldan.algebra.com, msestina@cisco.com, sjlee@cisco.com
Subject: Re: resend: uthread_init.c PANICs in case of (legally) close stdin
References: <199907290013.UAA01121@pcnet1.pcnet.com>

>Number:         12863
>Category:       pending
>Synopsis:       Re: resend: uthread_init.c PANICs in case of (legally) close stdin
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 28 17:40:01 PDT 1999
>Closed-Date:    
>Last-Modified:  
>Originator:     
>Release:        
>Organization:
>Environment:
>Description:
 Dan,
 
 	I didn't try the patches because mi had
 gone home.
 
 	The other problem we are having is:
 
 PANIC("Cannot set virtual timer");
 in uthread_kern.c
 
 	This one really has me stumped.
 
 	I will use -pthread in the future.
 
 
 		Larry
 
 
 Daniel Eischen wrote:
 > 
 > > Test procedure:
 > >
 > > attached is a tarfile which contains
 > > the test procedure.
 > 
 > [ ... ]
 > 
 > > all:
 > >         rm -f run thread *.core
 > >         cc -o thread thread.c -lc_r
 > >         cc -o run run.c
 > >         ./run
 > 
 > That should be:
 > 
 >         cc -o thread -pthread thread.c
 > 
 > Don't use -lc_r when building threaded apps on FreeBSD because it
 > also links in libc.
 > 
 > But did you try the patches I sent?  I take it you didn't try
 > them because your test program worked for me with the patches
 > applied to uthread_fd.c and uthread_init.c.
 > 
 > You said you were also getting other segmentation faults even
 > after applying Mikhail Teterins patches from the PR filed.  What
 > is the status of that problem?
 > 
 > > >Fix:
 > >
 > >         This fix does NOT fix the seg-fault itself, but only prevents
 > >         the panic from happening in this legal case.
 > 
 > Dan Eischen
 > eischen@vigrid.com
 
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:

From eischen@vigrid.com Wed Jul 28 17:50:07 1999
Return-Path: <eischen@vigrid.com>
Received: from pcnet1.pcnet.com (pcnet1.pcnet.com [204.213.232.3])
	by hub.freebsd.org (Postfix) with ESMTP id 2470E14F41
	for <FreeBSD-gnats-submit@freebsd.org>; Wed, 28 Jul 1999 17:50:04 -0700 (PDT)
	(envelope-from eischen@vigrid.com)
Received: (from eischen@localhost)
	by pcnet1.pcnet.com (8.8.7/PCNet) id UAA04565;
	Wed, 28 Jul 1999 20:47:29 -0400 (EDT)
Message-Id: <199907290047.UAA04565@pcnet1.pcnet.com>
Date: Wed, 28 Jul 1999 20:47:29 -0400 (EDT)
From: Daniel Eischen <eischen@vigrid.com>
To: eischen@vigrid.com, lawlopez@cisco.com
Cc: FreeBSD-gnats-submit@freebsd.org, jb@cimlogic.com.au,
	mi@aldan.algebra.com, msestina@cisco.com, sjlee@cisco.com
Subject: Re: resend: uthread_init.c PANICs in case of (legally) close stdin

>Number:         12865
>Category:       pending
>Synopsis:       Re: resend: uthread_init.c PANICs in case of (legally) close stdin
>Confidential:   yes
>Severity:       serious
>Priority:       medium
>Responsible:    gnats-admin
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Jul 28 18:00:01 PDT 1999
>Closed-Date:    
>Last-Modified:  
>Originator:     
>Release:        
>Organization:
>Environment:
>Description:
 >         I didn't try the patches because mi had
 > gone home.
 > 
 >         The other problem we are having is:
 > 
 > PANIC("Cannot set virtual timer");
 > in uthread_kern.c
 > 
 >         This one really has me stumped.
 
 You're going to have to bite the bullet and upgrade to -stable (or
 pull -stable's libc_r and rebuild it on your system).  You're
 working with an older threads library that has seen a lot of fixes
 since 3.1-RELEASE.  I believe the panic message you quote is from
 before 3.2-RELEASE.
 
 FYI, the message now is:
 
   PANIC("Cannot set scheduling timer");
 
 in uthread_kern.c.
 
 Dan Eischen
 eischen@vigrid.com
 
>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
Comment 2 Daniel Eischen freebsd_committer freebsd_triage 1999-08-05 13:20:07 UTC
State Changed
From-To: open->feedback

A fix was applied to -current and passes the supplied test program 
that demonstrates the problem.  I would like feedback from the 
originators before MFC and closing the PR. 

Comment 3 Daniel Eischen freebsd_committer freebsd_triage 1999-08-06 13:29:08 UTC
State Changed
From-To: feedback->closed

Fix was merged from current into -stable.  The fix to -current 
was verfied by SJ Lee <sjlee@cisco.com>.  Many thanks to the 
folks who debugged and reported the problem.