Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SIGSEGV in S_regmatch with S_study_chunk: Assertion `!frame' failed. #15306

Closed
p5pRT opened this issue May 6, 2016 · 8 comments
Closed

SIGSEGV in S_regmatch with S_study_chunk: Assertion `!frame' failed. #15306

p5pRT opened this issue May 6, 2016 · 8 comments

Comments

@p5pRT
Copy link

p5pRT commented May 6, 2016

Migrated from rt.perl.org#128085 (status was 'resolved')

Searchable as RT128085$

@p5pRT
Copy link
Author

p5pRT commented May 6, 2016

From @dcollinsn

Greetings Porters,

I have compiled bleadperl with the afl-gcc compiler using​:

./Configure -Dusedevel -Dprefix='/usr/local/perl-afl' -Dcc='ccache afl-gcc' -Uuselongdouble -Duse64bitall -Doptimize=-g -Uversiononly -Uman1dir -Uman3dir -Dusequadmath -des
AFL_HARDEN=1 make && make test

And then fuzzed the resulting binary using​:

AFL_NO_VAR_CHECK=1 afl-fuzz -i in -o out bin/perl @​@​

After reducing testcases using `afl-tmin` and performing additional minimization by hand, I have located the following testcase that triggers a segmentation fault in the perl interpreter. The testcase is the 17-character file​:

/()()/~~/\X*(?0)/

On normal builds, this crashes with a segmentation fault. On debug builds, this throws an assert failure that I cannot find an existing bug report for

dcollins@​nightshade64​:/usr/local/perl-afl/out$ ~/perl/perl -e "/()()//\X*(?0)/"
Smartmatch is experimental at -e line 1.
Segmentation fault
dcollins@​nightshade64​:/usr/local/perl-afl/out$ ~/perldebug/perl -e "/()()/
/\X*(?0)/"
Smartmatch is experimental at -e line 1.
perl​: regcomp.c​:5928​: S_study_chunk​: Assertion `!frame' failed.
Aborted
dcollins@​nightshade64​:/usr/local/perl-afl/out$

Debugging tool output is below.

**GDB**

dcollins@​nightshade64​:/usr/local/perl-afl/out$ gdb --args /perl/perl -e "/()()/~~/\X*(?0)/"
GNU gdb (GDB) 7.10
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+​: GNU GPL version 3 or later <http​://gnu.org/licenses/gpl.html>
This is free software​: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see​:
<http​://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at​:
<http​://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/dcollins/perl/perl...done.
(gdb) run
Starting program​: /home/dcollins/perl/perl -e /\(\)\(\)/\
\~/\\X\*\(\?0\)/
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Smartmatch is experimental at -e line 1.

Program received signal SIGSEGV, Segmentation fault.
0x0000000000a001f5 in S_regmatch (reginfo=reginfo@​entry=0x7fffffffdf10, startpos=<optimized out>, prog=<optimized out>) at regexec.c​:7209
7209 min = ARG1(cur_curlyx->u.curlyx.me);
(gdb) bt
#0 0x0000000000a001f5 in S_regmatch (reginfo=reginfo@​entry=0x7fffffffdf10, startpos=<optimized out>, prog=<optimized out>) at regexec.c​:7209
#1 0x0000000000a1e123 in S_regtry (reginfo=0x7fffffffdf10, startposp=0x7fffffffdf00) at regexec.c​:3615
#2 0x0000000000a5178d in Perl_regexec_flags (rx=0xe993b0, stringarg=0xea34c0 "(?^​:()())", strend=0xea34c9 "", strbeg=0xea34c0 "(?^​:()())", minend=<optimized out>,
  sv=0xe85210, data=0x0, flags=97) at regexec.c​:3482
#3 0x00000000007ab723 in Perl_pp_match () at pp_hot.c​:1816
#4 0x00000000008dcbd8 in S_matcher_matches_sv (matcher=matcher@​entry=0xea1e40, sv=sv@​entry=0xe85210) at pp_ctl.c​:4414
#5 0x00000000008e7733 in S_do_smartmatch (seen_this=<optimized out>, seen_other=0x0, copied=<optimized out>) at pp_ctl.c​:4861
#6 0x000000000079148b in Perl_runops_standard () at run.c​:41
#7 0x00000000004ebf9f in S_run_body (oldscope=1) at perl.c​:2483
#8 perl_run (my_perl=<optimized out>) at perl.c​:2406
#9 0x00000000004276a8 in main (argc=3, argv=0x7fffffffe348, env=0x7fffffffe368) at perlmain.c​:116
(gdb) info locals
n = <optimized out>
min = <optimized out>
max = <optimized out>
A = <optimized out>
utf8_target = <optimized out>
uniflags = <optimized out>
rex_sv = <optimized out>
rex = 0xea3a78
rexi = 0xea6a30
st = 0xea27d8
scan = <optimized out>
next = <optimized out>
n = <optimized out>
ln = <optimized out>
locinput = <optimized out>
pushinput = <optimized out>
nextchr = -10
result = false
depth = 11
nochange_depth = 0
max_nochange_depth = <optimized out>
yes_state = 0xea2760
mark_state = 0x0
cur_eval = 0xea2760
cur_curlyx = 0x0
state_num = 48
no_final = false
do_cutgroup = false
startpoint = <optimized out>
popmark = 0x0
sv_commit = 0x0
sv_yes_mark = <optimized out>
lastopen = 0
has_cutgroup = <optimized out>
sw = false
minmod = false
logical = 0
last_pad = 0x0
multicall_oldcatch = <optimized out>
gimme = 2 '\002'
caller_cv = 0x0
last_pushed_cv = 0x0
runops_cp = <optimized out>
maxopenparen = 0
to_complement = 0
classnum = <optimized out>
is_utf8_pat = false
match = false
(gdb)

dcollins@​nightshade64​:/usr/local/perl-afl/out$ gdb --args /perldebug/perl -e "/()()/~~/\X*(?0)/"
GNU gdb (GDB) 7.10
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+​: GNU GPL version 3 or later <http​://gnu.org/licenses/gpl.html>
This is free software​: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see​:
<http​://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at​:
<http​://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /home/dcollins/perldebug/perl...done.
(gdb) run
Starting program​: /home/dcollins/perldebug/perl -e /\(\)\(\)/\
\~/\\X\*\(\?0\)/
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Smartmatch is experimental at -e line 1.
perl​: regcomp.c​:5928​: S_study_chunk​: Assertion `!frame' failed.

Program received signal SIGABRT, Aborted.
0x00007ffff6cf4107 in raise () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0 0x00007ffff6cf4107 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff6cf54e8 in abort () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff6ced226 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007ffff6ced2d2 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
#4 0x000000000078d8e1 in S_study_chunk (pRExC_state=pRExC_state@​entry=0x7fffffffda70, scanp=scanp@​entry=0x7fffffffd978, minlenp=minlenp@​entry=0x7fffffffd958,
  deltap=deltap@​entry=0x7fffffffd968, last=<optimized out>, data=data@​entry=0x7fffffffd990, stopparen=<optimized out>, recursed_depth=<optimized out>,
  flags=<optimized out>, depth=<optimized out>, and_withp=<optimized out>) at regcomp.c​:5928
#5 0x00000000007a1f38 in Perl_re_op_compile (patternp=patternp@​entry=0x0, pat_count=<optimized out>, pat_count@​entry=0, expr=<optimized out>, expr@​entry=0x1210dc8,
  eng=<optimized out>, old_re=old_re@​entry=0x0, is_bare_re=is_bare_re@​entry=0x0, orig_rx_flags=0, pm_flags=0) at regcomp.c​:7456
#6 0x00000000004dc74a in Perl_pmruntime (o=0x1210d58, expr=0x1210dc8, repl=<optimized out>, isreg=isreg@​entry=true, floor=<optimized out>) at op.c​:5622
#7 0x0000000000665471 in Perl_yyparse (gramtype=gramtype@​entry=258) at perly.y​:1028
#8 0x000000000052b4c1 in S_parse_body (env=env@​entry=0x0, xsinit=xsinit@​entry=0x428f90 <xs_init>) at perl.c​:2331
#9 0x0000000000532277 in perl_parse (my_perl=<optimized out>, xsinit=xsinit@​entry=0x428f90 <xs_init>, argc=<optimized out>, argv=<optimized out>, env=env@​entry=0x0)
  at perl.c​:1650
#10 0x0000000000428bb8 in main (argc=3, argv=0x7fffffffe338, env=0x7fffffffe358) at perlmain.c​:114
(gdb) frame 4
#4 0x000000000078d8e1 in S_study_chunk (pRExC_state=pRExC_state@​entry=0x7fffffffda70, scanp=scanp@​entry=0x7fffffffd978, minlenp=minlenp@​entry=0x7fffffffd958,
  deltap=deltap@​entry=0x7fffffffd968, last=<optimized out>, data=data@​entry=0x7fffffffd990, stopparen=<optimized out>, recursed_depth=<optimized out>,
  flags=<optimized out>, depth=<optimized out>, and_withp=<optimized out>) at regcomp.c​:5928
5928 assert(!frame);
(gdb) info locals
min = <optimized out>
pars = <optimized out>
code = <optimized out>
scan = 0x1214230
next = <optimized out>
delta = <optimized out>
is_inf = <optimized out>
is_inf_internal = <optimized out>
is_par = <optimized out>
data_fake = {pos_min = 6896942, pos_delta = 9, last_found = 0x994452 <Perl_sv_upgrade+2882>, last_end = 0, last_start_min = 3, last_start_max = 80, longest = 0x0,
  longest_fixed = 0x30, offset_fixed = 8339874, minlen_fixed = 0x0, lookbehind_fixed = -150591968, longest_float = 0x1214420, offset_float_min = 511101108334,
  offset_float_max = 0, minlen_float = 0x99701e <Perl_sv_grow+1774>, lookbehind_float = 0, flags = 0, whilem_c = 0, last_closep = 0x1214420,
  start_class = 0x6b41ba <S__append_range_to_invlist+2826>}
re_trie_maxbuff = <optimized out>
first_non_open = <optimized out>
stopmin = <optimized out>
frame = <optimized out>
re_debug_flags = 0
(gdb)

**VALGRIND**

dcollins@​nightshade64​:/usr/local/perl-afl/out$ valgrind ~/perl/perl -e "/()()//\X*(?0)/"
==24308== Memcheck, a memory error detector
==24308== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==24308== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==24308== Command​: /home/dcollins/perl/perl -e /()()/
/\\X*(?0)/
==24308==
Smartmatch is experimental at -e line 1.
==24308== Invalid read of size 8
==24308== at 0xA001F5​: S_regmatch (regexec.c​:7209)
==24308== by 0xA1E122​: S_regtry (regexec.c​:3615)
==24308== by 0xA5178C​: Perl_regexec_flags (regexec.c​:3482)
==24308== by 0x7AB722​: Perl_pp_match (pp_hot.c​:1816)
==24308== by 0x8DCBD7​: S_matcher_matches_sv (pp_ctl.c​:4414)
==24308== by 0x8E7732​: S_do_smartmatch (pp_ctl.c​:4861)
==24308== by 0x79148A​: Perl_runops_standard (run.c​:41)
==24308== by 0x4EBF9E​: S_run_body (perl.c​:2483)
==24308== by 0x4EBF9E​: perl_run (perl.c​:2406)
==24308== by 0x4276A7​: main (perlmain.c​:116)
==24308== Address 0x20 is not stack'd, malloc'd or (recently) free'd
==24308==
==24308==
==24308== Process terminating with default action of signal 11 (SIGSEGV)
==24308== Access not within mapped region at address 0x20
==24308== at 0xA001F5​: S_regmatch (regexec.c​:7209)
==24308== by 0xA1E122​: S_regtry (regexec.c​:3615)
==24308== by 0xA5178C​: Perl_regexec_flags (regexec.c​:3482)
==24308== by 0x7AB722​: Perl_pp_match (pp_hot.c​:1816)
==24308== by 0x8DCBD7​: S_matcher_matches_sv (pp_ctl.c​:4414)
==24308== by 0x8E7732​: S_do_smartmatch (pp_ctl.c​:4861)
==24308== by 0x79148A​: Perl_runops_standard (run.c​:41)
==24308== by 0x4EBF9E​: S_run_body (perl.c​:2483)
==24308== by 0x4EBF9E​: perl_run (perl.c​:2406)
==24308== by 0x4276A7​: main (perlmain.c​:116)
==24308== If you believe this happened as a result of a stack
==24308== overflow in your program's main thread (unlikely but
==24308== possible), you can try to increase the size of the
==24308== main thread stack using the --main-stacksize= flag.
==24308== The main thread stack size used in this run was 8388608.
==24308==
==24308== HEAP SUMMARY​:
==24308== in use at exit​: 134,665 bytes in 649 blocks
==24308== total heap usage​: 784 allocs, 135 frees, 151,031 bytes allocated
==24308==
==24308== LEAK SUMMARY​:
==24308== definitely lost​: 320 bytes in 1 blocks
==24308== indirectly lost​: 2,604 bytes in 38 blocks
==24308== possibly lost​: 0 bytes in 0 blocks
==24308== still reachable​: 131,741 bytes in 610 blocks
==24308== suppressed​: 0 bytes in 0 blocks
==24308== Rerun with --leak-check=full to see details of leaked memory
==24308==
==24308== For counts of detected and suppressed errors, rerun with​: -v
==24308== ERROR SUMMARY​: 1 errors from 1 contexts (suppressed​: 0 from 0)
Segmentation fault

**PERL -V**

dcollins@​nightshade64​:~/perl$ ./perl -Ilib -V
Summary of my perl5 (revision 5 version 24 subversion 0) configuration​:
  Commit id​: 10d36cf
  Platform​:
  osname=linux, osvers=3.16.0-4-amd64, archname=x86_64-linux-ld
  uname='linux nightshade64 3.16.0-4-amd64 #1 smp debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 gnulinux '
  config_args='-Dusedevel -Dprefix=/usr/local/perl-afl -Dcc=ccache afl-gcc -Duselongdouble -Duse64bitall -Doptimize=-g -Uversiononly -Uman1dir -Uman3dir -des'
  hint=recommended, useposix=true, d_sigaction=define
  useithreads=undef, usemultiplicity=undef
  use64bitint=define, use64bitall=define, uselongdouble=define
  usemymalloc=n, bincompat5005=undef
  Compiler​:
  cc='ccache afl-gcc', ccflags ='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
  optimize='-g',
  cppflags='-fwrapv -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
  ccversion='', gccversion='5.2.0', gccosandvers=''
  intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678, doublekind=3
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16, longdblkind=3
  ivtype='long', ivsize=8, nvtype='long double', nvsize=16, Off_t='off_t', lseeksize=8
  alignbytes=16, prototype=define
  Linker and Libraries​:
  ld='ccache afl-gcc', ldflags =' -fstack-protector-strong -L/usr/local/lib'
  libpth=/usr/local/lib /usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
  libs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
  perllibs=-lpthread -lnsl -ldl -lm -lcrypt -lutil -lc
  libc=libc-2.19.so, so=so, useshrplib=false, libperl=libperl.a
  gnulibc_version='2.19'
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
  cccdlflags='-fPIC', lddlflags='-shared -g -L/usr/local/lib -fstack-protector-strong'

Characteristics of this binary (from libperl)​:
  Compile-time options​: HAS_TIMES PERLIO_LAYERS PERL_COPY_ON_WRITE
  PERL_DONT_CREATE_GVSV
  PERL_HASH_FUNC_ONE_AT_A_TIME_HARD PERL_MALLOC_WRAP
  PERL_PRESERVE_IVUV PERL_USE_DEVEL USE_64_BIT_ALL
  USE_64_BIT_INT USE_LARGE_FILES USE_LOCALE
  USE_LOCALE_COLLATE USE_LOCALE_CTYPE
  USE_LOCALE_NUMERIC USE_LOCALE_TIME USE_LONG_DOUBLE
  USE_PERLIO USE_PERL_ATOF
  Locally applied patches​:
  RC3
  Built under linux
  Compiled at Apr 30 2016 15​:50​:19
  @​INC​:
  lib
  /usr/local/perl-afl/lib/site_perl/5.24.0/x86_64-linux-ld
  /usr/local/perl-afl/lib/site_perl/5.24.0
  /usr/local/perl-afl/lib/5.24.0/x86_64-linux-ld
  /usr/local/perl-afl/lib/5.24.0
  .

@p5pRT
Copy link
Author

p5pRT commented May 8, 2016

From @hvds

The failure case can be simplified to​:
% miniperl -e 'qr{\X*(?0)}'
miniperl​: regcomp.c​:5928​: S_study_chunk​: Assertion `!frame' failed.
Aborted (core dumped)
%

A bisect leads to​:
  commit d5a00e4
  Author​: Yves Orton <demerphq@​gmail.com>
  Date​: Sat Mar 5 22​:04​:28 2016 +0100
  Unify GOSTART and GOSUB

I don't understand this, but stepping through just after that commit at regcomp.c​:4669​:
4669 start = RExC_open_parens[paren];
(gdb) s
4670 end = RExC_close_parens[paren];
(gdb) p start
$1 = (regnode *) 0xabb798
(gdb) p pRExC_state->open_parens[0]@​2
$2 = {0xabb798, 0x0}
(gdb) p pRExC_state->rxi->program + 1
$3 = (regnode *) 0xabb790
(gdb)

.. where the latter expression is what the previous code would have evaluated for the GOSTART case. As a result, before that commit we recurse onto the STAR node rather than the WHILEM.

Yves, could you take a look?

Hugo

@p5pRT
Copy link
Author

p5pRT commented May 8, 2016

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented May 9, 2016

From @demerphq

On 8 May 2016 at 20​:32, Hugo van der Sanden via RT
<perlbug-followup@​perl.org> wrote​:

The failure case can be simplified to​:
% miniperl -e 'qr{\X*(?0)}'
miniperl​: regcomp.c​:5928​: S_study_chunk​: Assertion `!frame' failed.
Aborted (core dumped)
%

A bisect leads to​:
commit d5a00e4
Author​: Yves Orton <demerphq@​gmail.com>
Date​: Sat Mar 5 22​:04​:28 2016 +0100
Unify GOSTART and GOSUB

I don't understand this, but stepping through just after that commit at regcomp.c​:4669​:
4669 start = RExC_open_parens[paren];
(gdb) s
4670 end = RExC_close_parens[paren];
(gdb) p start
$1 = (regnode *) 0xabb798
(gdb) p pRExC_state->open_parens[0]@​2
$2 = {0xabb798, 0x0}
(gdb) p pRExC_state->rxi->program + 1
$3 = (regnode *) 0xabb790
(gdb)

.. where the latter expression is what the previous code would have evaluated for the GOSTART case. As a result, before that commit we recurse onto the STAR node rather than the WHILEM.

I am not really sure I follow you there actually. This assert fires
because the WHILEM handler goto'ed past the block that unwinds
recursion. It should have jumped to just before the unwind block so
that it could fire if needed.

Yves, could you take a look?

Fix pushed as branch yves/fix_128085.

I don't have time right now to sort out a proper test. If you want to
hack one together it would be useful. There are examples in t/re/pat.t

Yves

--
perl -Mre=debug -e "/just|another|perl|hacker/"

@p5pRT
Copy link
Author

p5pRT commented May 9, 2016

From @hvds

On Sun May 08 23​:58​:38 2016, demerphq wrote​:

.. where the latter expression is what the previous code would have
evaluated for the GOSTART case. As a result, before that commit we
recurse onto the STAR node rather than the WHILEM.

I am not really sure I follow you there actually.

I'm saying that the bisected commit d5a00e4, in combining GOSUB and GOSTART, has changed the "start" target we recurse to for the former GOSTART case (now GOSUB(0)).

This assert fires
because the WHILEM handler goto'ed past the block that unwinds
recursion. It should have jumped to just before the unwind block so
that it could fire if needed.

Ah ok; that has been the case since you added the framing stuff in 2006 (8aa23a4) and I had assumed this was genuinely asserting that we are not expected to hit a WHILEM when recursing (faithfully preserved in S_rck_whilem() in the hv/study_chunk branch).

Are you saying that's the _only_ problem here, and the change of start target for GOSTART is fine?

Hugo

@p5pRT
Copy link
Author

p5pRT commented May 10, 2016

From @demerphq

On 9 May 2016 at 10​:28, Hugo van der Sanden via RT
<perlbug-followup@​perl.org> wrote​:

On Sun May 08 23​:58​:38 2016, demerphq wrote​:

.. where the latter expression is what the previous code would have
evaluated for the GOSTART case. As a result, before that commit we
recurse onto the STAR node rather than the WHILEM.

I am not really sure I follow you there actually.

I'm saying that the bisected commit d5a00e4, in combining GOSUB and GOSTART, has changed the "start" target we recurse to for the former GOSTART case (now GOSUB(0)).

Thanks.

This assert fires
because the WHILEM handler goto'ed past the block that unwinds
recursion. It should have jumped to just before the unwind block so
that it could fire if needed.

Ah ok; that has been the case since you added the framing stuff in 2006 (8aa23a4) and I had assumed this was genuinely asserting that we are not expected to hit a WHILEM when recursing (faithfully preserved in S_rck_whilem() in the hv/study_chunk branch).

Are you saying that's the _only_ problem here, and the change of start target for GOSTART is fine?

No. You have identified another issue which really needs to be fixed.
I haven't managed to come up with a satisfactory test case yet
unfortunately.

Yves

--
perl -Mre=debug -e "/just|another|perl|hacker/"

@p5pRT
Copy link
Author

p5pRT commented May 10, 2016

From @demerphq

I have pushed

da7cf1c fix #128109 - do not move
RExC_open_parens[0] in reginsert
1bda7a7 fix #128085 - SIGSEGV in
S_regmatch with S_study_chunk​: Assertion "!frame" failed

to blead.

Yves

--
perl -Mre=debug -e "/just|another|perl|hacker/"

@p5pRT
Copy link
Author

p5pRT commented Jun 21, 2016

@iabyn - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant