Cyrus IMAPd 2.3.7 Released
Ken Murchison
murch at andrew.cmu.edu
Wed Jul 12 08:11:31 EDT 2006
Дейтер Александр Валериевич 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
More information about the Info-cyrus
mailing list