Skip to content

Commit

Permalink
Merge branch 'bisection-example-20220227' into blead
Browse files Browse the repository at this point in the history
For: #19468
  • Loading branch information
jkeenan committed Feb 27, 2022
2 parents 5b030cc + 1d5c1f6 commit 5fd4557
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
60 changes: 60 additions & 0 deletions Porting/bisect-runner.pl
Expand Up @@ -927,6 +927,66 @@ =head2 Point in time where code started to segfault is unknown
=back
=head2 Interaction of debug flags caused crash on C<-DDEBUGGING> builds
=over 4
=item * Problem
In C<-DDEBUGGING> builds, the debug flags C<Xvt> would crash a program when
F<strict.pm> was loaded via C<require> or C<use>.
=item * Solution
Two-stage solution. In each stage, to shorten debugging time investigator
made use of existing set of production releases of F<perl> built with
C<-DDEBUGGING>.
=over 4
=item * Stage 1
Investigator used existing C<-DDEBUGGING> builds to determine the production
cycle in which crash first appeared. Then:
.../perl/Porting/bisect.pl \
--start v5.20.0 \
--end v5.22.1 \
-DDEBUGGING \
--target miniperl \
--crash \
-- ./miniperl -Ilib -DXvt -Mstrict -e 1
First bad commit was identified as
L<ed958fa315|https://github.com/Perl/perl5/commit/ed958fa315>.
=item * Stage 2
A second investigator was able to create a reduction of the code needed to
trigger a crash, then used this reduced case and the commit reported at the
end of Stage 1 to further bisect.
.../perl/Porting/bisect.pl \
--start v5.18.4 \
--end ed958fa315 \
-DDEBUGGING \
--target miniperl \
--crash \
-- ./miniperl -Ilib -DXv -e '{ my $n=1; *foo= sub () { $n }; }'
=back
The first bisect determined the point at which code was introduced to
F<strict.pm> that triggered the problem. With an understanding of the trigger,
the second bisect then determined the point at which such a trigger started
causing a crash.
* Reference
L<GH issue 193463|https://github.com/Perl/perl5/issues/19463>
=back
=head2 When did perl start failing to build on a certain platform using C<g++> as the C-compiler?
=over 4
Expand Down
1 change: 1 addition & 0 deletions t/porting/known_pod_issues.dat
Expand Up @@ -411,6 +411,7 @@ pod/perlsolaris.pod Verbatim line length including indents exceeds 78 by 13
pod/perltie.pod Verbatim line length including indents exceeds 78 by 3
pod/perltru64.pod Verbatim line length including indents exceeds 78 by 1
pod/perlwin32.pod Verbatim line length including indents exceeds 78 by 1
porting/bisect-runner.pl Verbatim line length including indents exceeds 78 by 1
porting/epigraphs.pod Verbatim line length including indents exceeds 78 by 28
porting/release_managers_guide.pod Verbatim line length including indents exceeds 78 by 2
porting/todo.pod ? Should you be using F<...> or maybe L<...> instead of 1
Expand Down

0 comments on commit 5fd4557

Please sign in to comment.