threads/72429: threads blocked in stdio (fgets, etc) are not cancellable in 5.3 (works in 4.x)

Daniel Eischen deischen at gdeb.com
Thu Oct 7 16:50:21 PDT 2004


The following reply was made to PR threads/72429; it has been noted by GNATS.

From: Daniel Eischen <deischen at gdeb.com>
To: Mark Gooderum <mark at verniernetworks.com>
Cc: freebsd-gnats-submit at freebsd.org, <freebsd-threads at freebsd.org>,
	<archie at dellroad.org>
Subject: Re: threads/72429: threads blocked in stdio (fgets, etc) are not
 cancellable in 5.3 (works in 4.x)
Date: Thu, 7 Oct 2004 19:44:45 -0400 (EDT)

 On Thu, 7 Oct 2004, Mark Gooderum wrote:
 
 > Uncle.  Okay - you're right, sigh.
 >
 > It's not so much that we're using fgets() as many/most C based parsing
 > libraries use stdio, bleh.
 >
 > As for why libc_r is cancellable...
 >
 > In 4.x  _foo() sets the cancellation state and calls __foo() (for read,
 > write, et.al), in 5.3 it's reversed.
 
 Hmm, that's not what it looks like for read.  In 4.x, read() sets
 the cancellation state and calls _read().  It looks like fgets()
 ends up calling __sread() which calls _read(), so I'm not sure
 how cancellation is getting set.  Only read() in libc_r sets the
 cancellation point, not _read().  I'm looking at revision 1.11.2.4
 of uthread/uthread.c; are we looking at the same version?
 
 -- 
 Dan Eischen
 


More information about the freebsd-threads mailing list