Full_Name: Ben Schmidt Version: 2.4.10 OS: MinGW32, Mac OS X URL: ftp://ftp.openldap.org/incoming/ Submission from: (NULL) (124.168.9.190)
I have recently cross-compiled OpenLDAP for MinGW32 on Mac OS X. While debugging to find and fix two crashes which I will detail in other posts, I discovered that an assertion is always failing because it seems it is inappropriately included when it shouldn't be. I suggest this patch.
diff -ru --exclude=Makefile openldap-2.4.10/servers/slapd/daemon.c openldap/servers/slapd/daemon.c --- openldap-2.4.10/servers/slapd/daemon.c 2008-05-28 06:12:44.000000000 +1000 +++ openldap/servers/slapd/daemon.c 2008-06-28 21:54:38.000000000 +1000 @@ -829,7 +829,9 @@ { ldap_pvt_thread_mutex_lock( &slap_daemon.sd_mutex );
+#if defined(HAVE_EPOLL) assert( SLAP_SOCK_NOT_ACTIVE(s) ); +#endif
if ( isactive ) slap_daemon.sd_nactives++;
If you search for where the relevant parts of the macros involved in SLAP_SOCK_NOT_ACTIVE, and particularly the marking of active and inactive, I believe you will find they apply only in the HAVE_EPOLL case, and thus the assertion should only hold in that case.
I did find a closed issue in your tracker related to the same assertion failing, but it didn't detail the fix, and was very old, so I assume was not relevant to this particular problem.