From: Ealdwulf Wuffinga <ealdwulf@googlemail.com>
To: John Tapsell <johnflux@gmail.com>
Cc: Steven Tweed <orthochronous@gmail.com>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Christian Couder <chriscool@tuxfamily.org>,
Git List <git@vger.kernel.org>
Subject: Re: Generalised bisection
Date: Mon, 16 Mar 2009 22:47:09 +0000 [thread overview]
Message-ID: <efe2b6d70903161547m4cb8b16co542e2f7bb3afd043@mail.gmail.com> (raw)
In-Reply-To: <43d8ce650903160337p5a48c429nd9efd7f35e66248d@mail.gmail.com>
On Mon, Mar 16, 2009 at 10:37 AM, John Tapsell <johnflux@gmail.com> wrote:
> I think it's reasonable to expect false-positives as well as
> false-negatives. e.g. you're looking for a commit that slows down the
> frame rate. But on one of the good commits the hard disk hits a bad
> sector and takes a bit longer to retrieve data and so you get a
> false-positive.
It's true that you could get false positives, as you say. What's less
obvious to me is whether it would be a good idea for the algorithm to try
to deal with them, or just report the earliest revision that failed
and leave it
up to the intelligence of the user to decide whether it is a false positive,
and what to do about it.
In the absence of some user-provided way of discriminating, the only way
I can see for the algorithm can distinguish between revisions affected by
the real bug as opposed to ones affected by false positives is to
assume that
the false positives occur at some lower rate. There are two
difficulties with this:
first, presumably it would have to start sampling more times at some locations
in order to figure out what the rate is at them. This sounds like it
would be expensive -
currently the algorithm can usually get away with looking at most locations no
more than once. Secondly, I'm not sure how to justify this
assumption, or model it.
In short, false positives look like a can of worms to me; I'm hoping
the algorithm is
useful without considering them.
The algorithm actually has one potentially problematic assumptions
already - or rather,
it has two alternative assumptions, neither of which is completely believable.
It can either assume that the bug causes faults at the same rate in
all affected revisions,
or that the affected revisions each have their own completely
independent rate. Originally
I thought that the latter would be the more conservative assumption -
it certainly assumes less.
However, the following argument convinces me that the other one is
actually more conservative:
Suppose that in the latest revision, we observe a fault in one run out
of ten. Under the second
assumption, this observed rate has no effect on our belief about the
fault rate in other affected
revisions, if any. This means that with a uniform prior on the fault
rate, we more or less start out
assuming a fault rate of 50% on any other affected revisions - much
higher, implausably so.
If any of them are only affected at a rate of one in ten, the
algorithm is quite likely to terminate without
seeing a fault there, concluding that the bug was introduced later
than it really was.
On the other hand, we know quite well that the fault rate isn't
necessarily going to be
identical either. Of the two, I think the assumption of identical
rates is the more practical one, more
likely to actually identify the correct location. It does leave me
wondering whether some intermediate
assumption would more accurately represent our experience of fault
rates, but I haven't thought of a
really convincing one.
Ealdwulf.
next prev parent reply other threads:[~2009-03-16 22:49 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-09 1:40 Generalised bisection Ealdwulf Wuffinga
2009-03-10 7:08 ` Christian Couder
2009-03-11 8:59 ` Ealdwulf Wuffinga
2009-03-11 9:35 ` John Tapsell
2009-03-11 12:05 ` Johannes Schindelin
2009-03-11 12:08 ` John Tapsell
2009-03-11 13:04 ` Johannes Schindelin
2009-03-11 13:24 ` John Tapsell
2009-03-11 22:14 ` Ealdwulf Wuffinga
2009-03-11 22:15 ` Ealdwulf Wuffinga
2009-03-12 6:45 ` John Tapsell
2009-03-12 10:55 ` Johannes Schindelin
2009-03-12 18:02 ` Steven Tweed
2009-03-13 10:00 ` Ealdwulf Wuffinga
2009-03-13 12:49 ` Ealdwulf Wuffinga
2009-03-13 15:19 ` Steven Tweed
2009-03-15 19:16 ` Ealdwulf Wuffinga
2009-03-16 10:29 ` Steven Tweed
2009-03-16 10:37 ` John Tapsell
2009-03-16 22:47 ` Ealdwulf Wuffinga [this message]
2009-03-16 22:08 ` Ealdwulf Wuffinga
2009-03-13 9:58 ` Ealdwulf Wuffinga
2009-03-13 10:55 ` Johannes Schindelin
2009-03-13 12:42 ` John Tapsell
2009-03-13 13:56 ` Johannes Schindelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=efe2b6d70903161547m4cb8b16co542e2f7bb3afd043@mail.gmail.com \
--to=ealdwulf@googlemail.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=johnflux@gmail.com \
--cc=orthochronous@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).