Date: Thu, 7 Oct 2004 23:50:20 GMT From: Daniel Eischen <deischen@gdeb.com> To: freebsd-threads@FreeBSD.org Subject: Re: threads/72429: threads blocked in stdio (fgets, etc) are not cancellable in 5.3 (works in 4.x) Message-ID: <200410072350.i97NoKaJ006201@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR threads/72429; it has been noted by GNATS. From: Daniel Eischen <deischen@gdeb.com> To: Mark Gooderum <mark@verniernetworks.com> Cc: freebsd-gnats-submit@freebsd.org, <freebsd-threads@freebsd.org>, <archie@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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200410072350.i97NoKaJ006201>