Cyrus IMAPd 2.3.7 Released

Gabor Gombas gombasg at inf.elte.hu
Wed Jul 12 09:45:27 EDT 2006


On Wed, Jul 12, 2006 at 05:02:10PM +0400, Дейтер Александр Валериевич wrote:

> Core was generated by
> `/home/devel/build/cyrus-imapd-2.3.7/imap/reconstruct -rf user.devel'.
> Program terminated with signal 10, Bus error.
> #0  0x0000000100011e04 in mailbox_write_index_header
> (mailbox=0xffffffff7fff3f70) at mailbox.c:1319
> 1319        *((bit64 *)(buf+OFFSET_HIGHESTMODSEQ_64)) =
> htonll(mailbox->highestmodseq);

Could you do a "p &buf" here? My guess would be that it is not 8-byte
aligned (because nobody told the compiler that it should be), and
therefore the code above generates an unaligned access, which explains
the bus error perfectly.

You can also try to replace

	char buf[INDEX_HEADER_SIZE];

with

	union {
		char buf[INDEX_HEADER_SIZE];
	#ifdef HAVE_LONG_LONG_INT
		long long int dummy;
	#endif
	} u;

to force the required alignment, and also replace every reference to
"buf" with "u.buf" inside the function. You may also use an unnamed
union and avoid the u.buf replaces if the Sun compiler supports unnamed
unions.

Gabor

-- 
     ---------------------------------------------------------
     MTA SZTAKI Computer and Automation Research Institute
                Hungarian Academy of Sciences
     ---------------------------------------------------------


More information about the Info-cyrus mailing list