mupdate thread died with SIGSEGV

Derrick J Brashear shadow at
Mon Apr 11 11:53:28 EDT 2005

On Sun, 10 Apr 2005, João Assad wrote:

> This time I have strace and gdb logs. Im sending attached the last 1000 lines 
> of the mupdate process strace, the last 1000 of the mupdate thread strace and 
> the gdb trace I managed to extract from the core dump.

So, I assume it was thread 33, the only one not in int80, which crashed.
Thread 33 (process 15913):
#0  0x00534478 in strcmp () from /lib/tls/
No symbol table info available.
#1  0x08075b07 in auth_newstate (identifier=0x810de40 "cyrus") at 
         newstate = (struct auth_state *) 0x3834f5d8
         pwd = (struct passwd *) 0x5e7fb8
         grp = (struct group *) 0x5e7f08
         mem = (char **) 0x8122494
#2  0x0805f8d9 in mysasl_proxy_policy (conn=0x8d07230, context=0x0, 
requested_user=0x8d07b40 "cyrus", rlen=5,

             if (!strcmp(*mem, identifier)) break;
where *mem came from:
     while ((grp = getgrent())) {
         for (mem = grp->gr_mem; *mem; mem++) {

Of course in another thread I see:
#12 0x0059ac31 in __nss_getent () from /lib/tls/
No symbol table info available.
#13 0x00551f51 in getgrent () from /lib/tls/
No symbol table info available.
#14 0x08075ad6 in auth_newstate (identifier=0x810de40 "cyrus") at 
         newstate = (struct auth_state *) 0x383bd950

Which screams that we walked on some data in a non-reentrant interface.

I need to think about the right way to fix it.

More information about the Info-cyrus mailing list