I was trying to run a CGI program with Apache 2.0.18 on BSDI BSD/OS 4.3,
and found that when read() on a nonblocking pipe returned -1, errno wasn't
setting set (to EAGAIN); it was 0. So apache didn't do its timeout call
and the CGI request got a Server Error.
The problem turned out to be that when linking libapr.so, libtool was adding
-lc. Then, when libapr.so was linked into httpd, -lc gets linked in again,
and there are now two copies of libc in apache's address space, each with its
own thread-safe copy of errno.
The version of libtool that came with Apache is:
ltmain.sh (GNU libtool) 1.3.4-freebsd-ports (1.385.2.196 1999/12/07 21:47:57)
However, the problem still exists in:
ltmain.sh (GNU libtool) 1.4 (1.920 2001/04/24 23:26:18)
The latter contains this case:
*-*-netbsd*)
# Don't link with libc until the a.out ld.so is fixed.
;;
That case needs to be extended to:
*-*-netbsd* | *-*-freebsd* | *-*-bsdi4*)
# Don't link with libc until the a.out ld.so is fixed.
;;
The FreeBSD port of libtool adds freebsd, and as I just discovered,
BSD/OS needs the same treatment.
This problem also recently bit Steven Schultz <[EMAIL PROTECTED]> while
porting some video software from Linux to BSD/OS.
_______________________________________________
Libtool mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/libtool