installing 2.3.16 on slackware64-13

Dan White dwhite at olp.net
Tue May 11 18:07:22 EDT 2010


On 11/05/10 17:23 +0100, James Meara wrote:
>Hi,
>
>I'm trying to get cyrus imap running on new machine, I've compiled and 
>installed it without errors but when I start master the imapd processes 
>are dying immediately from what looks like a divide by zero error.

>May 11 17:23:52 mercury1 kernel: imapd[9664] trap divide error ip:407487 
>sp:7fff5fa64420 error:0 in imapd[400000+102000]
>May 11 17:23:52 mercury1 kernel: imapd[9667] trap divide error ip:407487 
>sp:7fff0c8c7c90 error:0 in imapd[400000+102000]
>May 11 17:23:52 mercury1 kernel: imapd[9668] trap divide error ip:407487 
>sp:7fffdd4ce590 error:0 in imapd[400000+102000]
>May 11 17:23:52 mercury1 kernel: imapd[9670] trap divide error ip:407487 
>sp:7fff511f9b90 error:0 in imapd[400000+102000]

See http://cyrusimap.web.cmu.edu/imapd/install-upgrade.html

Have you tried reconstructing your mailboxes?

You can use the debug_command in imapd.conf to further trouble shoot.  From
Debian's README.Debian.debug.gz file:

Attaching debuggers to Cyrus, and getting traces
------------------------------------------------

You can tell Cyrus services to run a debugging command just before they
start doing real work.  This can be used to run strace, ltrace and gdb or
ddd (for interactive debugging and back-tracing) quite easily.

Set the shell command to be run in /etc/imapd.conf, option debug_command.
Then, add the command line switch "-D" to the Cyrus services you want to
run the debug_command in /etc/cyrus.conf, and restart cyrmaster using
/etc/init.d/cyrus2.3 restart.

The debugging command must be given as a single line in the configuration
file.

To get a back-trace using gdb: debug_command: /usr/bin/gdb -batch -cd=/tmp
-x /usr/lib/cyrus/getbacktrace.gdb /usr/lib/cyrus/bin/%s %d
>/tmp/gdb-backtrace.cyrus.%1$s.%2$d <&- 2>&1 &

The above will produce a back-trace of every service run with -D that
segfaults in the files /tmp/gdb-backtrace.cyrus.*;
/usr/lib/cyrus/getbacktrace.gdb simply has the sequence of commands for
gdb: c (to continue running the service), bt (to get the back-trace if the
program didn't exit normally), quit (to quit gdb).

For strace, you can use: debug_command: /usr/bin/strace -tt -o
/tmp/strace.cyrus.%s.%d -p %2$d <&- 2>&1 &

Which will produce straces in /tmp/strace.cyrus.*

-- 
Dan White


More information about the Info-cyrus mailing list