Дейтер Александр Валериевич wrote:
Ken Murchison wrote:I am pleased to announce the release of Cyrus IMAPd 2.3.7. This release should be considered late beta quality, reflecting that most large bugs have been resolved, but some small buglets might still remain. This release fixes problems with replication and virtual domains as well as a byte-alignment problem on 64-bit machines.I have removed #define HAVE_LONG_LONG_INT in config.h: --- cyrus-imapd-2.3.7/config.h.orig Wed Jul 12 13:54:00 2006 +++ cyrus-imapd-2.3.7/config.h Wed Jul 12 11:24:17 2006 @@ -158,7 +158,7 @@ #define HAVE_LONG_FILE_NAMES 1 /* Does the compiler support long long int? */ -#define HAVE_LONG_LONG_INT +#undef HAVE_LONG_LONG_INT /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 @@ -321,10 +321,10 @@ #define SIZEOF_LONG 8 /* The size of a `long long int', as computed by sizeof. */ -#define SIZEOF_LONG_LONG_INT 8 +#undef SIZEOF_LONG_LONG_INT /* The size of a `unsigned long long int', as computed by sizeof. */ -#define SIZEOF_UNSIGNED_LONG_LONG_INT 8 +#undef SIZEOF_UNSIGNED_LONG_LONG_INT /* Do we already have setproctitle? */ /* #undef SPT_TYPE */ rebuild and reinstall Cyrus IMAP and reconstruct/imapd programs work again. Comments ?
The #undef is forcing the MODSEQ field of cyrus.index to be only 4-bytes instead of 8. This will obviously work, but its masking whatever problem the Sun compiler is having with the 8-byte code.
P.S.: on i386/sparc32: size of int = 4 size of long = 4 size of long long = 8 on sparc64: size of int = 4 size of long = 8 size of long long = 8 Thanks a lot!This release cannot work on Solaris 9 64-bit. Cyrus-IMAP build in 64-bit mode with SUNWspro cc (SUN Studio 11): # su - cyrus -c /usr/local/sbin/reconstruct user.devel Bus Error - core dumped program terminated by signal BUS (invalid address alignment) Current function is mailbox_read_index_header 946 ntohll(*((bit64 *)(mailbox->index_base+OFFSET_HIGHESTMODSEQ_64))); (dbx) where =>[1] mailbox_read_index_header(mailbox = 0xffffffff7fffaa60), line 946 in "mailbox.c" [2] mailbox_open_index(mailbox = 0xffffffff7fffaa60), line 675 in "mailbox.c" [3] reconstruct(name = 0x100204e7c "user.devel", found = (nil)), line 529 in "reconstruct.c" [4] do_reconstruct(name = 0xffffffff7fffd23d "user.devel", matchlen = 10, maycreate = 1, rock = (nil)), line 393 in "reconstruct.c" [5] find_cb(rockp = 0xffffffff7fffda78, key = 0xffffffff7bb000e4 "<bad address 0x7bb000e4>", keylen = 10, data = 0xffffffff7bb000f4 "<bad address 0x7bb000f4>", datalen = 26), line 1974 in "mboxlist.c" [6] myforeach(db = 0x100228da0, prefix = 0xffffffff7fffd671 "user.devel", prefixlen = 10, goodp = 0x100029e88 = &`reconstruct`mboxlist.c`find_p(void *rockp, const char *key, int keylen, const char *data, int datalen), cb = 0x10002a468 = &`reconstruct`mboxlist.c`find_cb(void *rockp, const char *key, int keylen, const char *data, int datalen), rock = 0xffffffff7fffda78, tid = (nil)), line 989 in "cyrusdb_skiplist.c" [7] mboxlist_findall(namespace = 0x100214430, pattern = 0x100220050 "user.devel", isadmin = 1, userid = (nil), auth_state = (nil), proc = 0x1000166f8 = &do_reconstruct(char *name, int matchlen, int maycreate, void *rock), rock = (nil)), line 2168 in "mboxlist.c" [8] main(argc = 2, argv = 0xffffffff7ffffd98), line 301 in "reconstruct.c" (dbx)
-- Kenneth Murchison Systems Programmer Project Cyrus Developer/Maintainer Carnegie Mellon University ---- Cyrus Home Page: http://asg.web.cmu.edu/cyrus Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html