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