| Summary: | uthread_init.c PANICs in case of (legally) close stdin | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Base System | Reporter: | Mikhail Teterin <mi> | ||||
| Component: | bin | Assignee: | freebsd-bugs (Nobody) <bugs> | ||||
| Status: | Closed FIXED | ||||||
| Severity: | Affects Only Me | CC: | eischen | ||||
| Priority: | Normal | ||||||
| Version: | 3.2-STABLE | ||||||
| Hardware: | Any | ||||||
| OS: | Any | ||||||
| Attachments: |
|
||||||
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: 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. 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. |
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