git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Generalised bisection

From
EWEaldwulf Wuffinga <ealdwulf@googlemail.com>
Date
Mar 9, 2009, 01:40 UTC
Message-ID
<efe2b6d70903081840v18e77aa7w2dac2bed553d0d6a@mail.gmail.com>
[whoops, mail server does not like html. trying again...]
Hi,

I have developed a generalised bisection algorithm, for the case where a bug is intermittent. The code may be found at git://github.com/Ealdwulf/bbchop.git. It should be considered experimental.

This should cover the use cases requested by Ingo (http://article.gmane.org/gmane.comp.version-control.git/108565) and John  (http://article.gmane.org/gmane.comp.version-control.git/112280), although it does not work in the same way as your proposed solutions - it is intended to be more general, working when the bug is not almost-deterministic. It is based on Bayesian Search Theory (http://en.wikipedia.org/wiki/Bayesian_search_theory, although that description is a bit simplistic) which is usually used to find submarines, or people lost on mountains.

To try it out, you need python and mpmath (from http://code.google.com/p/mpmath/ or your distribution). Once your have obtained the source, you can immediately run BBChop/source/bbchop which is the main driver program.

It is not currently integrated into git, although doing so should only involve minor scriptery.

The simplest way to try it out to is run it in manual mode:
>   bbchop -l 10 -c 0.9

This means, search in a linear history of 10 revisions, numbered 0 to 9, until bbchop thinks it has found the faulty location with probability at least 0.9. It will start asking questions:

] Most likely location is 0 (probability 0.100000). ] Please test at location 3. ] Target detected at 3? Y/N/S(kip)

Eventually the search will terminate and BBChop will print out its conclusion, with evidence, eg:

] Search complete.  Most likely location is 3 (probability 0.919614). ] Number of tests at 3: 3 of which 1 detected ] Number of tests at parents of 3: ]         At 2, 5 of which 0 detected

More information canbe found in the readme file.

Feel free to reply with any comments, questions, etc. If anyone tries it out on a real bug, please let me know how it goes.

regards,
Ealdwulf
Next: Christian Couder
Message 1 of 25 in “Generalised bisection”
  1. Ealdwulf WuffingaMar 9, 2009
  2. Christian CouderMar 10, 2009
  3. Ealdwulf WuffingaMar 11, 2009
  4. John TapsellMar 11, 2009
  5. Johannes SchindelinMar 11, 2009
  6. John TapsellMar 11, 2009
  7. Johannes SchindelinMar 11, 2009
  8. John TapsellMar 11, 2009
  9. Ealdwulf WuffingaMar 11, 2009
  10. Ealdwulf WuffingaMar 11, 2009
  11. John TapsellMar 12, 2009
  12. Johannes SchindelinMar 12, 2009
  13. Steven TweedMar 12, 2009
  14. Ealdwulf WuffingaMar 13, 2009
  15. Ealdwulf WuffingaMar 13, 2009
  16. Steven TweedMar 13, 2009
  17. Ealdwulf WuffingaMar 15, 2009
  18. Steven TweedMar 16, 2009
  19. John TapsellMar 16, 2009
  20. Ealdwulf WuffingaMar 16, 2009
  21. Ealdwulf WuffingaMar 16, 2009
  22. Ealdwulf WuffingaMar 13, 2009
  23. Johannes SchindelinMar 13, 2009
  24. John TapsellMar 13, 2009
  25. Johannes SchindelinMar 13, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.