Hi, Hmm all this time passed already...
On Tue, 2008-10-07 at 17:47:52 +0200, Raphael Hertzog wrote: > On Tue, 07 Oct 2008, Guillem Jover wrote: > > Yeah got the code the day after that mail, but I've not found the time > > to test it. I guess the easiest is to change one of the function > > return values to the output of rand() or similar and see from there. > > I'll try to get to it this week. Worked and tested that last week but didn't "clean up a bit" the stuff until today. I've pushed two branches, pu/ood-abort and pu/ood-unwind with different approaches for the fix, to: <http://git.hadrons.org/?p=debian/dpkg.git> > Just share it, others might have the time to test (using quota on a openvz > virtual environment for example). The problem is triggering the exact conditions for this bug, having OOD is not enough, and would probably need a lot of iterations to maybe be able to reproduce it. That's why I wanted to add the targetted random(). The initial patch (f0efc5cc in ood-unwind) I mentioned in the previous mail only fixed part of the problem, in some conditions when doing error unwinding some of the cu_ functions from src/cleanup.c get called then those call modstatdb_note, which trigger this bug. So the root problem here is that the onerr_abort logic is broken, the code assumes that once onerr_abort has been flagged the program will terminate, but that does not happen, and some code unexpectedly runs again. At the same time the code is trying to deal with onerr_abort in random places. The correct approach is the one in ood-abort, implementing what I guess was meant to be done with onerr_abort. What's missing is untangling onerr_abort being activated by the archives/packages processing loop when too many errors happen. The ood-unwind branch might imply less behaviour changes, but it's not the correct solution long term, and some side effects might be still there as the execution continues when it should not. I'll finish the odd-abort code, and do some testing, if I feel comfortable with that one I'll push it, otherwise I might consider ood-unwind for lenny, and switch to ood-abort for squeeze. Let's see. regards, guillem -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]