kern/87658: IO::AIO test suite loops infinitely on
5.4-RELEASE-p5
Peter Edwards
peter.edwards at vordel.com
Wed Nov 23 18:50:37 GMT 2005
The following reply was made to PR kern/87658; it has been noted by GNATS.
From: Peter Edwards <peter.edwards at vordel.com>
To: bug-followup at FreeBSD.org, niallm at avernus.net
Cc:
Subject: Re: kern/87658: IO::AIO test suite loops infinitely on 5.4-RELEASE-p5
Date: Wed, 23 Nov 2005 18:48:48 +0000
There are two distinct problems here, one which causes a crash on 5.x,
the other causing problems for 6.x
First off, perl on 5.x is not linked with -lpthread, as a result, the
threading library is in something of a muddle when it loads dynamic
modules that need thread support. You can hack your way out of this with
env LD_PRELOAD=/usr/lib/libpthread.so perl <blah>
The second problem is that the AIO implementation creates IO stacks with
tiny threads (8K), but has two local functions with 4K on-stack buffers
("readahead", and "sendfile_") which GCC appears to helpfully inline
into "aio_proc", allocating more than 8K of stack space up front. This
is easy enough to fix:
--------8<--------
--- AIO.xs.orig Wed Nov 23 18:17:53 2005
+++ AIO.xs Mon Nov 21 20:51:47 2005
@@ -36,7 +36,7 @@
#if __ia64
# define STACKSIZE 65536
#else
-# define STACKSIZE 8192
+# define STACKSIZE 16384
#endif
enum {
--------8<--------
I'd have thought there was enough info available to the compiler to
re-use the same 4K of stack for both inlined functions, rather than
allocating separate space for each, but I'm not a compiler expert. At
best, it seems like a POLA violation, but it looks more like a bug to
me: The compiler on FreeBSD 5.x doesn't seem to do it...
This e-mail is business-confidential and may be privileged. If you are not
the intended recipient, please notify us immediately and delete it. If the
email does not relate to Vordel's business then it is neither from nor
authorized by Vordel. Thank you.
More information about the freebsd-bugs
mailing list