develooper Front page | perl.perl5.porters | Postings from September 2011

bisecting should be trivially easy

Thread Next
Nicholas Clark
September 29, 2011 13:56
bisecting should be trivially easy
Message ID:
git bisect is cool. Everyone should use it.

However, it seems that it still has this aura of complexity.

So I've just committed Porting/

It's "tuned" to run on x86_64 Linux (ie dromedary), but hopefully will be
useful elsewhere. (Improvements welcome, provided they don't break running
it on dromedary)

In a clean git checkout, you run something like this:

~/Perl/perl/Porting/ -e 'sub reftype { "whatever\n" }; sub DESTROY { undef &reftype } print sub { my $guard = bless []; goto &reftype }->(\1); undef &whatever;'

and after a bit of time and lot of output, you get this:

HEAD is now at 4c80c0b shrink pp_hot fractionally
good - zero exit from ./miniperl -e sub reftype { "whatever\n" }; sub DESTROY { undef &reftype } print sub { my $guard = bless []; goto &reftype }->(\1); undef &whatever;
840a7b70755d06740715e982aa756f9d77203c4e is the first bad commit
commit 840a7b70755d06740715e982aa756f9d77203c4e
Author: Ilya Zakharevich <>
Date:   Mon Dec 4 19:40:25 2000 -0500

    Re: [PATCH] The largest hoax of all times?
    Date: Tue, 5 Dec 2000 00:40:25 -0500
    Message-ID: <>

    Subject: Re: [PATCH] The largest hoax of all times?
    From: Ilya Zakharevich <>
    Date: Mon, 4 Dec 2000 23:55:53 -0500
    Message-ID: <>

    Subject: Re: [PATCH] The largest hoax of all times?
    From: Ilya Zakharevich <>
    Date: Tue, 5 Dec 2000 01:28:45 -0500
    Message-ID: <>

    Fix the unpredictable order of DESTROYs.

    p4raw-id: //depot/perl@7991

:100644 100644 14dcbd7d144e224f88248644d5435e8e62a92cf0 6c90a54033ba0b1de7c1c270ed04f94d3340cc35 M  embed.h
:100755 100755 055c28b963bfa81d567b4b737d9011338b6f84ec ac43b0757d097eac41fb63e81337b3629647e3fc M
:100644 100644 91dc6df07c0f8579f13f19bca515b810cea3838e 5a3850cb4ef5bdb13e8a36165fcca3d4a368e33e M  objXSUB.h
:040000 040000 b706fac7a2586ff044458d9590a18a73157e936e db860b679925cb581b75521e64d458003fc1384d M  pod
:100644 100644 e561d1a024d6fcd97b21492f75f6c7ba25cd6037 1a3802ab476b9bfe8a778913fba375c72c9fd1f1 M  proto.h
:100644 100644 0713fa7e782dacdd556b74e4a8d940103ecada70 3f41a4e56bc3c62f64ecfec756e8b2f8cc70435d M  scope.c
:100644 100644 f875d58053c8ed082ff9b5e9b006d5e4c5fe8515 26914307879fbdbc50539019dfe6733bd4f8cda2 M  sv.c
:100644 100644 b155ece7b0fad5905660b130ef8fa70d04f9b984 39c1c29323c18985db52fee43ea85148519a8ab7 M  sv.h
:040000 040000 7c90678abbf5ce1867629f2e9bf2ef6a368ea903 70abb9b5147b5c11968254661fb915ff0733b7d5 M  t
bisect run success
That took 473 seconds

Which I think is rather useful.

[Example slightly simplified. You'd need to pass the options
    -j=9 --target=miniperl
to get the answer in 473 seconds. By default it will not use a parallel
make, and will build test_prep, which instead took 813 seconds]

Currently it's not very documented. It defaults to bisecting between
perl-5.005 and blead, because I've yet hacked to go earlier
than that. (I think 5.000 is possible, as I built it somewhat by accident
whilst playing, but I think with a present that set defaults.
5.004's Configure is grumpy if I close STDIN or open it to /dev/null)

You can't (yet) change the options to Configure

But I thought it was useful enough already to commit.

Nicholas Clark

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About