On Sun, Apr 23, 2017 at 09:34:00AM +0200, GALAMBOS Daniel wrote:
Which I forgot to mention is that the slapd process uses one CPU core to
100 percent when this happens.

Noted. But you don't observe that CPU usage during normal operation? I'm assuming this loop gets triggered when you ask slapd to shut down?

We use Heimdal, so I installed cyrus-sasl2-dbg,cyrus-sasl2-heimdal-dbg
(i didn't notice the missing symbols from the first stacktrace)

Thanks.

Frame #1  (counting from zero):
(gdb) info locals
plugcount = 1
pluglist = 0x7f326c4ca040 <plain_client_plugins>
mech = 0x7f312413b950
mp = 0x7f312412e090
result = <optimized out>
version = 4
lupe = 0

Which seems weird as we use GSSAPI. But I'm not familiar with the sasl
and slapd source, so it may be okay.

I'm not really familiar with the cyrus-sasl code either, but it looks like it might just be scanning/loading all the available plugins, and you happened to stop it at this point.

#4  0x00007f3271b297b1 in sasl_client_init (callbacks=callbacks@entry=0x0) at 
../../lib/client.c:311
       ret = <optimized out>
       ep_list = {{entryname = 0x7f3271b36bbd "sasl_client_plug_init", add_plugin = 
0x7f3271b28e80 <sasl_client_add_plugin>}, {entryname = 0x7f3271b36bd3 
"sasl_canonuser_init",
           add_plugin = 0x7f3271b27590 <sasl_canonuser_add_plugin>}, {entryname 
= 0x0, add_plugin = 0x0}}
#5  0x00007f327279fb3c in ldap_int_sasl_init () at cyrus.c:98
       sasl_initialized = 1
       sasl_initialized = 1

This looks strange to me. ldap_int_sasl_init sets sasl_initialized to 1 _after_ sasl_client_init returns, and shouldn't call it again after that. So I have to wonder whether this somehow got called from multiple threads... That also suggests to me that this particular thread might be getting stuck inside sasl_client_init, maybe.

What does your config look like on this server? Do you perhaps have multiple syncrepl clients all using GSSAPI?

If you can catch slapd during this loop again, maybe you could capture multiple stack traces? It would be really good if we could identify which stack frame contains the loop - especially whether it's in slapd or in cyrus-sasl.

Reply via email to