Hello, Ryan Tandy, le lun. 07 sept. 2020 14:44:40 -0700, a ecrit: > On Wed, Aug 19, 2020 at 01:51:40PM +0200, Samuel Thibault wrote: > > record locking support was added in libc0.3 2.29-3, so we can probably > > try to re-enable the BDB/HDB backends on hurd-any. > > I'm playing with this at the moment. The BDB backend seems to be working OK > in single-threaded operation. However the test008-concurrency fails badly. I > can't say at this point whether that's actually related to BDB, or just a > more general issue around concurrency.
I had a look, it seems what happens is that in libraries/libldap/result.c wait4msg gets EINTR from select(), and since LDAP_BOOL_RESTART is not set, it returns LDAP_SERVER_DOWN, interpreted as an error while EINTR simply means select() got interrupted by a signal. After setting LDAP_BOOL_RESTART, the test passes just fine. It does have quite a lot of such interrupted select() calls, does ldap use signals extensively? libpthread doesn't. Perhaps it's a dependency of openldap which does? Samuel