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