In the cyrus.cache file there are always 10 cache fields per message. But
what could cause this code in mailbox.c to fail in the middle of skipping
over those fields:
/* Compute size of this record */
cacheitembegin = cacheitem = mailbox->cache_base + cache_offset;
for (cache_ent = 0; cache_ent < NUM_CACHE_FIELDS; cache_ent++) {
cacheitem = CACHE_ITEM_NEXT(cacheitem);
}
I see this failure when I try to use cyr_expire with -X 1 or with any
number greater than zero.
(gdb) frame 0
#0 process_records (mailbox=0xffbff080, newindex=0xe30a8,
index_base=0xfecd0000 <Address 0xfecd0000 out of bounds>, exists=29,
deleted=0x2eb77c0, numdeleted=0xffbfbedc, quotadeleted=0xffbfbef0,
numansweredflag=0xffbfbeec, numdeletedflag=0xffbfbee8,
numflaggedflag=0xffbfbee4, newcache=0xe3098,
new_cache_total_size=0xffbfbee0, expunge_fd=-1, last_offset=0,
decideproc=0x16e18 <expire_cb>, deciderock=0xffbffd60,
expunge_flags=2) at mailbox.c:1930
(gdb) p cache_ent
$1 = 8
OS: Solaris 9/Sparc
CC: Gcc 3.4.5
Cyrus: 2.3.7
--
Leena Heino University of Tampere / Computer Centre
( liinu at uta.fi ) ( http://www.uta.fi/laitokset/tkk )
----
Cyrus Home Page: http://cyrusimap.web.cmu.edu/
Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html