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]

Reply via email to