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