delayed expunge and subfolders

Leena Heino Leena.Heino at uta.fi
Fri Oct 20 12:08:38 EDT 2006


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 )


More information about the Info-cyrus mailing list