5.3-RC2: kqueue descriptor leak in resolver functions?
Jonathan Lennox
lennox at cs.columbia.edu
Thu Nov 4 14:24:22 PST 2004
Arjan de Vet writes:
> A ktrace of the mozilla process seems to point to the DNS resolver code
> leaking kqueue descriptors (I could not find any kqueue() calls in the
> mozilla code itself).
I've noticed (and reported) this with 5.2.1, in the specific case when
you're using libc_r and linking statically. I never heard anything back,
though.
The problem is that 'kqueue' isn't namespace'd (#defined as _kqueue) in
lib/libc/include/[un]namespace.h, and the thread libraries don't draw in
_kqueue in their 'references' array.
Attached below is a patch against 5.2.1. It should apply to 5.3-RC2 as
well. The patch for lib/libc_r/uthread/uthread_init.c may also need to be
applied to lib/libpthread/thread/thr_init.c and
lib/libthr/thread/thr_init.c.
See PR bin/58687.
--- lib/libc_r/uthread/uthread_init.c.orig Wed Oct 29 11:00:53 2003
+++ lib/libc_r/uthread/uthread_init.c Wed Oct 29 11:01:21 2003
@@ -99,6 +99,7 @@
&_getsockopt,
&_ioctl,
&_kevent,
+ &_kqueue,
&_listen,
&_nanosleep,
&_open,
--- lib/libc/include/namespace.h.orig Wed Oct 29 14:13:09 2003
+++ lib/libc/include/namespace.h Wed Oct 29 14:13:31 2003
@@ -77,6 +77,7 @@
#define getsockopt _getsockopt
#define ioctl _ioctl
/* #define kevent _kevent */
+#define kqueue _kqueue
#define listen _listen
#define nanosleep _nanosleep
#define open _open
--- lib/libc/include/un-namespace.h.orig Wed Oct 29 14:13:13 2003
+++ lib/libc/include/un-namespace.h Wed Oct 29 14:13:55 2003
@@ -58,6 +58,7 @@
#undef getsockopt
#undef ioctl
#undef kevent
+#undef kqueue
#undef listen
#undef nanosleep
#undef open
--
Jonathan Lennox
lennox at cs.columbia.edu
More information about the freebsd-current
mailing list