I am running Cyrus IMAP 2.2.6 as a 64-bit binary on Solaris 9. I don't know whether this is officially supported but it is running perfectly apart from one small problem; that squatter crashes when indexing mailboxes due to an address alignment error.
The crash is being caused by the ntohl() call in annotate.c:split_attribs() (Note that on this architecture, an unsigned long is 64-bits) attrib->size = (size_t) ntohl(*(unsigned long *) data); Changing this line to attrib->size = (size_t) ntohl(*(uint32_t *) data); stops the crashes but I don't know enough about what's going on here to know if this is a good fix. If anyone has any ideas about the proper way to fix this that would be appreciated. Thanks, Andy 12588/1: Incurred fault #5, FLTACCESS %pc = 0x100030D30 12588/1: siginfo: SIGBUS BUS_ADRALN addr=0xFFFFFFFF7CF00334 12588/1: Received signal #10, SIGBUS [default] 12588/1: siginfo: SIGBUS BUS_ADRALN addr=0xFFFFFFFF7CF00334 (gdb) where #0 split_attribs ( data=0xffffffff7cf00334 <Address 0xffffffff7cf00334 out of bounds>, datalen=32, attrib=0xffffffff7fffce30) at sys/byteorder.h:139 #1 0x00000001000329e4 in annotatemore_lookup ( mboxname=0xffffffff7cf00334 <Address 0xffffffff7cf00334 out of bounds>, entry=0x20 <Address 0x20 out of bounds>, userid=0xffffffff7fffce30 "", attrib=0xffffffff7fffce30) at annotate.c:1199 #2 0x0000000100008bd8 in index_me ( name=0xffffffff7fffe1b0 "mydomainx.co.uk!user.xx", matchlen=23, maycreate=1, rock=0xffffffff7fffe0e0) at squatter.c:319 #3 0x000000010002284c in find_cb (rockp=0xffffffff7fffe940, key=0xffffffff7ce004a4 <Address 0xffffffff7ce004a4 out of bounds>, keylen=23, data=0xffffffff7ce004c0 <Address 0xffffffff7ce004c0 out of bounds>, datalen=62) at mboxlist.c:1853 #4 0x0000000100044ab4 in myforeach (db=0x1001e0e30, prefix=0xffffffff7fffe560 "*", prefixlen=0, goodp=0x10002238c <find_p>, cb=0x1000226f8 <find_cb>, rock=0xffffffff7fffe940, tid=0x0) at sys/byteorder.h:141 #5 0x0000000100022f2c in mboxlist_findall (namespace=0x1001d2f28, pattern=0xffffffff7fffea80 "*", isadmin=1, userid=0x0, auth_state=0x0, proc=0x1000084ac <index_me>, rock=0xffffffff7fffe940) at mboxlist.c:2032 #6 0x0000000100009150 in main (argc=2, argv=0xffffffff7ffffb58) at squatter.c:529 (gdb) frame 0 #0 split_attribs ( data=0xffffffff7cf00334 <Address 0xffffffff7cf00334 out of bounds>, datalen=32, attrib=0xffffffff7fffce50) at sys/byteorder.h:139 139 { (gdb) list 134 135 /* Convert a network long to a host long. */ 136 137 static __inline__ unsigned long 138 ntohl (unsigned long __arg) 139 { 140 return htonl (__arg); 141 } --- 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