kevent changes (was Re: [Dovecot] 1.0 RC1 status)
Scott Ellis
scotte at warped.com
Mon Jun 26 21:35:49 EEST 2006
Timo Sirainen wrote:
> On Wed, 2006-06-21 at 17:23 -0700, Scott Ellis wrote:
>> Timo Sirainen wrote:
>> [snip]
>>> I'm thinking about releasing 1.0 RC1 within a few days. Would be nice if
>>> that release actually worked, so testing would be appreciated :) You can
>>> try it by getting the dovecot-latest from http://dovecot.org/nightly/
>> There was a change to how configure detects if kqueue is supported (made
>> sometime after the 10th (I suspect the change on the 16th, but haven't
>> looked too closely) which prevents it from being detected on NetBSD.
>> Forcing kqueue to be used for file change and i/o loop by hacking up the
>> configure script allows it to be used.
>
> Any idea what exactly? I noticed one test had == instead of =. Was it
> just because of that?
> http://dovecot.org/list/dovecot-cvs/2006-June/005920.html
It appears so. It now properly detects and uses kqueue for ioloop, but
not for notify. Changing the configure test for notify makes it work
there as well:
--- configure 2006-06-26 10:59:49.000000000 -0700
+++ configure.orig 2006-06-24 14:33:51.000000000 -0700
@@ -22526,7 +22526,7 @@
if test "$notify" = "" || test "$notify" = "kqueue"; then
echo "$as_me:$LINENO: checking if we can use BSD kqueue() notify" >&5
echo $ECHO_N "checking if we can use BSD kqueue() notify... $ECHO_C" >&6
- if test "$ac_cv_func_kqueue" = yes && test "$ac_cv_func_kevent" =
yes ; then
+ if test "$ac_cv_func_kqueue" == yes && test "$ac_cv_func_kevent" ==
yes ; then
have_notify=kqueue
notify=kqueue
echo "$as_me:$LINENO: result: \"yes\"" >&5
>
>> Jun 21 17:22:13 intrepid dovecot: auth(default): kevent(10) in
>> io_loop_handle_remove failed: Bad file descriptor
>
> Well, these aren't good anyway.. Would be nice to know where those came
> from. If you want you could change i_error calls to i_panic in
> src/lib/ioloop-kqueue.c and then get gdb backtraces when it crashes
> (http://dovecot.org/bugreport.html)
>
This doesn't yield anything useful. There's nothing before the kill()
in the backtrace of dovecot-auth, even though the binary has symbols in it:
intrepid# !file
file /software/dovecot-1.0-20060626/libexec/dovecot/dovecot-auth
/software/dovecot-1.0-20060626/libexec/dovecot/dovecot-auth: ELF 64-bit
LSB executable, AMD x86-64, version 1 (SYSV), for NetBSD 3.99.21,
dynamically linked (uses shared libs), for NetBSD 3.99.21, not stripped
I suspect I should really rebuild it w/o any optimization flags, just to
make sure that's not the issue with the backtrace (there's also the
potential that gdb isn't working quite right either, as this is
NetBSD-current, and GDB6 was recently introduced...I don't know if 5.3
has works with GCC4 binaries or not...). I'll try and dig around a bit
more on this.
ScottE
More information about the dovecot
mailing list