> I just tried this patch, and everything compile fine. > I wiped out my installation and mailbox partitions and started from > scratch with this new version. I ran into another problem right away. > When trying to do various cyradm operations, set ACL's and Deleting > mailboxes, cyradm will just hang. No errors, but it looks > like imapd just hangs, and the load on my box skyrockets until I stop > and restart master. Simon, did you try to install this version fresh? > Using RH 7.3 here.
I have tested patched 2.2.4 on my existing servers and also did a fresh install with success. The tests were done on RedHat 7.2 and 7.3. I didn't experience any problems. Simon > > Thanks. > AJ > > Simon Matter wrote: > >>>On Mon, 24 May 2004, Simon Matter wrote: >>> >>> >>>>>>The backtrace is from RedHat 7.2 running ext3. Nothing special here. >>>>>>Switching back to 2.2.3 made it work again and I also don't see any >>>>>>corruption. >>>>> >>>>>Are the backtraces and straces consistent in their content? >>>> >>>>Here is an ltrace in case this helps: >>> >>>[snip] >>> >>>Ok, the problem seems to be that we're deleteing elements of the hash >>>table in the middle of a call to hash_enumerate. >>> >>>This isn't terribly good, but atleast I understand why its intermittant >>>and why Ken and I probably can't reproduce it (we're lucky). >>> >>>Can one of you try this patch to hash.c? >> >> >> Thanks! A quick test showed no problems so far. I'll do some more >> testing >> later today. >> >> Simon >> >> >>>Index: hash.c >>>=================================================================== >>>RCS file: /afs/andrew.cmu.edu/system/cvs/src/cyrus/lib/hash.c,v >>>retrieving revision 1.11 >>>diff -u -r1.11 hash.c >>>--- hash.c 22 Oct 2003 18:50:12 -0000 1.11 >>>+++ hash.c 24 May 2004 13:57:06 -0000 >>>@@ -300,7 +300,7 @@ >>> void *rock) >>> { >>> unsigned i; >>>- bucket *temp; >>>+ bucket *temp, *temp_next; >>> >>> for (i=0;i<table->size; i++) >>> { >>>@@ -308,8 +308,9 @@ >>> { >>> for (temp = (table->table)[i]; >>> NULL != temp; >>>- temp = temp -> next) >>>+ temp = temp_next) >>> { >>>+ temp_next = temp->next; >>> func(temp -> key, temp->data, rock); >>> } >>> } >>> >>> >>>-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- >>>Rob Siemborski * Andrew Systems Group * Cyert Hall 207 * 412-268-7456 >>>Research Systems Programmer * /usr/contributed Gatekeeper >>> >>> >> >> > > --- 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