Bug#560301: Cyrus binaries are compiled across wrong libkrb5

Dmitry Katsubo dma_k at mail.ru
Thu Dec 10 11:25:36 UTC 2009


Package: cyrus-imapd-2.2
Version: 2.2.13-17

It looks like cyrus package was compiled across libkrb5.so.1x and linked 
against libkrb5.so.2x. The symptom is: "notifyd" and "lmtpd" services 
exit even before entering the debug mode (so, "-D" will not help):

Dec  9 14:17:05 centurion cyrus/master[524]: set maximum file 
descriptors to 256/256
Dec  9 14:17:05 centurion cyrus/master[524]: about to exec 
/usr/lib/cyrus/bin/notifyd
Dec  9 14:17:05 centurion cyrus/master[525]: about to exec 
/usr/lib/cyrus/bin/lmtpd
Dec  9 14:17:05 centurion cyrus/master[496]: process 524 exited, status 1
Dec  9 14:17:05 centurion cyrus/master[496]: service notify pid 524 in 
READY state: terminated abnormally
Dec  9 14:17:05 centurion cyrus/master[496]: service notify now has 0 
ready workers
Dec  9 14:17:05 centurion cyrus/master[496]: process 525 exited, status 1
Dec  9 14:17:05 centurion cyrus/master[496]: service lmtpunix pid 525 in 
READY state: terminated abnormally
Dec  9 14:17:05 centurion cyrus/master[496]: service lmtpunix now has 0 
ready workers

The most crucial thing about the issue is that the error message, 
printed by a child process (see writev(2, ..) call below), is not 
forwarded to logger.

The workaround is to recompile cyrus-imapd-2.2 in local environment (one 
should go through issues listed in
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=560207)

=== Information from binaries ===

# strings /usr/lib/cyrus/bin/notifyd | grep 'HEIMDAL_KRB5'
HEIMDAL_KRB5_1.0
# strings /usr/lib/libkrb5.so.25 | grep 'HEIMDAL_KRB5'
HEIMDAL_KRB5_2.0

=== strace log ===

[pid   507] send(6, "<23>Dec  9 14:16:52 cyrus/master[507]: about to 
exec /usr/lib/cyrus/bin/notifyd", 79, MSG_NOSIGNAL) = 79
[pid   507] execve("/usr/lib/cyrus/bin/notifyd", ["notifyd", "-D"], [/* 
36 vars */]) = 0
...
[pid   507] open("/usr/lib/libkrb5.so.25", O_RDONLY) = 6
...
[pid   507] mmap2(NULL, 84316, PROT_READ|PROT_EXEC, 
MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0xb71f8000
[pid   507] mmap2(0xb720c000, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x13) = 0xb720c000
[pid   507] close(6)                    = 0
[[pid   507] writev(2, [{"notifyd", 7}, {": ", 2}, 
{"/usr/lib/libkrb5.so.25", 22}, {": ", 2}, {"version `HEIMDAL_KRB5_1.0' 
not found (required by notifyd)", 58}, {"\n", 1}], 6) = 92
[pid   507] exit_group(1)               = ?
Process 507 detached
--- SIGCHLD (Child exited) @ 0 (0) ---

=== libraries ===

# dpkg -l | egrep '(cyrus|libkrb5)' | cut -c1-70
ii  cyrus-admin-2.2          2.2.13-17
ii  cyrus-clients-2.2        2.2.13-17
ii  cyrus-common-2.2         2.2.13-17
ii  cyrus-imapd-2.2          2.2.13-17
ii  libcyrus-imap-perl22     2.2.13-17
ii  libkrb5-25-heimdal       1.3.1.dfsg.1-3
ii  libkrb5-3                1.7+dfsg-3
ii  libkrb5-dev              1.7+dfsg-3
ii  libkrb5support0          1.7+dfsg-3

-- 
With best regards,
Dmitry





More information about the Pkg-Cyrus-imapd-Debian-devel mailing list