Front page | perl.perl5.porters |
Postings from November 2016
Re: [perl #130010] v5.25.5-184-ga5540cf breaks texinfo
Thread Previous
|
Thread Next
From:
demerphq
Date:
November 9, 2016 17:31
Subject:
Re: [perl #130010] v5.25.5-184-ga5540cf breaks texinfo
Message ID:
CANgJU+XQ7JVae3BDi2a7dDmxmZPO7HkuX3HibdewssGE=5i_3A@mail.gmail.com
On 9 November 2016 at 18:27, demerphq <demerphq@gmail.com> wrote:
> On 9 November 2016 at 17:22, Hugo van der Sanden via RT
> <perlbug-followup@perl.org> wrote:
>> I built and installed blead@392582f8 with './Configure -des -Dcc=gcc -Dprefix=/opt/blead-d0 -Doptimize='-g -O0' -DDEBUGGING -Dusedevel -Uversiononly'.
>>
>> On attempting the texinfo build, the first point it gives the error can be simplified to this command:
>> % ( cd doc && TEXINFO_DEV_SOURCE=1 top_srcdir=".." top_builddir=".." ${PERL} ../tp/texi2any -I . -o texinfo.info texinfo.texi )
>> Modification of a read-only value attempted at ../tp/Texinfo/Convert/ParagraphNonXS.pm line 327.
>> panic: POPSTACK
>> %
>>
>> After a quick grep for the error message (found in perl.h) and then for PL_no_modify, I rebuilt and installed the perl with this patch:
>> --- a/util.c
>> +++ b/util.c
>> @@ -1877,6 +1877,7 @@ paths reduces CPU cache pressure.
>> void
>> Perl_croak_no_modify(void)
>> {
>> + assert(0);
>> Perl_croak_nocontext( "%s", PL_no_modify);
>> }
>>
>> On reinvoking the above command, I get a core dump with the backtrace below. I'll try to cut down the repro case, but the backtrace might allow others to make some progress in the meantime.
>>
>> Hugo
>>
>> (gdb) where
>> #0 0x00007f60916d2cc9 in __GI_raise (sig=sig@entry=6)
>> at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
>> #1 0x00007f60916d60d8 in __GI_abort () at abort.c:89
>> #2 0x00007f60916cbb86 in __assert_fail_base (
>> fmt=0x7f609181c830 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
>> assertion=assertion@entry=0x7de9ce "0", file=file@entry=0x7dcd77 "util.c",
>> line=line@entry=1880,
>> function=function@entry=0x7e25b0 <__PRETTY_FUNCTION__.15620> "Perl_croak_no_modify") at assert.c:92
>> #3 0x00007f60916cbc32 in __GI___assert_fail (assertion=0x7de9ce "0",
>> file=0x7dcd77 "util.c", line=1880,
>> function=0x7e25b0 <__PRETTY_FUNCTION__.15620> "Perl_croak_no_modify")
>> at assert.c:101
>> #4 0x000000000056162e in Perl_croak_no_modify () at util.c:1880
>> #5 0x00000000005ed6f1 in Perl_sv_force_normal_flags (sv=0x712f998, flags=4)
>> at sv.c:5248
>> #6 0x00000000005ec24f in Perl_sv_usepvn_flags (sv=0x712f998,
>> ptr=0x7134ac0 "", len=328, flags=256) at sv.c:5087
>> #7 0x000000000050afb6 in S_invlist_replace_list_destroys_src (dest=0x712f998,
>> src=0x712f9b0) at regcomp.c:8492
>> #8 0x000000000050d26e in Perl__invlist_union_maybe_complement_2nd (
>> a=0x384be30, b=0x712f998, complement_b=false, output=0x7fff2ed01748)
>> at regcomp.c:9243
>> #9 0x00000000006fa6d9 in Perl__core_swash_init (pkg=0x7d024a "utf8",
>> name=0x7c5966 "", listsv=0x384bdb8, minbits=1, none=0, invlist=0x384be30,
>> flags_p=0x7fff2ed01990 "\005") at utf8.c:3401
>> #10 0x000000000053b7df in Perl__get_regclass_nonbitmap_data (prog=0x38460b0,
>> node=0x3854e5c, doinit=true, listsvp=0x0,
>> only_utf8_locale_ptr=0x7fff2ed01ad0, output_invlist=0x0) at regcomp.c:18080
>> #11 0x00000000006f0464 in S_reginclass (prog=0x38460b0, n=0x3854e5c,
>> p=0x2cf63a0 "This is ", p_end=0x2cf63a1 "his is ", utf8_target=false)
>> at regexec.c:9338
>> #12 0x00000000006e33e6 in S_regmatch (reginfo=0x7fff2ed024a0,
>> startpos=0x2cf63a0 "This is ", prog=0x3854dc0) at regexec.c:6342
>> #13 0x00000000006d8d83 in S_regtry (reginfo=0x7fff2ed024a0,
>> startposp=0x7fff2ed02308) at regexec.c:3641
>> #14 0x00000000006d87fb in Perl_regexec_flags (rx=0x384bc80,
>> stringarg=0x2cf63a0 "This is ", strend=0x2cf63a8 "",
>> strbeg=0x2cf63a0 "This is ", minend=1, sv=0x384bbc0, data=0x0, flags=0)
>> at regexec.c:3498
>> #15 0x000000000064c198 in Perl_pp_split () at pp.c:6022
>> #16 0x000000000055acf1 in Perl_runops_debug () at dump.c:2249
>> #17 0x0000000000462aa2 in S_run_body (oldscope=1) at perl.c:2526
>> #18 0x0000000000462093 in perl_run (my_perl=0x26cf010) at perl.c:2449
>> #19 0x000000000041ef95 in main (argc=7, argv=0x7fff2ed029e8,
>> env=0x7fff2ed02a28) at perlmain.c:123
>
> Thanks. I did the same, and added an sv_dump to the caller of
> Perl_croak_no_modify()
>
> For some reason we are trying to process an INVLIST object, which
> IIUIR should never be perl visible.
>
> Karl, is this enough for you to dig in?
>
> BTW, you dont need an installed perl to replicate this, I was able to
> replicate with the following:
>
> TEXINFO_DEV_SOURCE=1 top_srcdir=".." top_builddir=".." gdb --args
> /git_tree/perl/perl -I/git_tree/perl/lib ../tp/texi2any -I . -o
> texinfo.info texinfo.texi
>
> Yves
>
> Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
> SV = INVLIST(0x919d00) at 0x592c4d0
> REFCNT = 1
> FLAGS = (POK,READONLY,PROTECT,pPOK)
> PV = 0x5931a60
> [0] 0x1100 .. 0x115F
> [2] 0x2329 .. 0x232A
> [4] 0x2E80 .. 0x2FFB
> [6] 0x3000 .. 0x303E
> [8] 0x3041 .. 0x4DB5
> [10] 0x4E00 .. 0x9FBB
> [12] 0xA000 .. 0xA4C6
> [14] 0xAC00 .. 0xD7A3
> [16] 0xF900 .. 0xFAD9
> [18] 0xFE10 .. 0xFE19
> [20] 0xFE30 .. 0xFE6B
> [22] 0xFF01 .. 0xFF60
> [24] 0xFFE0 .. 0xFFE6
> [26] 0x20000 .. 0x2FFFD
> [28] 0x30000 .. 0x3FFFD
> CUR = 248
> LEN = 258
> perl: util.c:1880: Perl_croak_no_modify: Assertion `0' failed.
the code responsible is this:
sv_usepvn_flags(dest,
(char *) array,
src_byte_len - 1,
/* This flag is documented to cause a copy to be avoided */
SV_HAS_TRAILING_NUL);
dest is at this point an INVLIST with the readonly flag set.
Karl, is this enough for you to figure it out?
Yves
--
perl -Mre=debug -e "/just|another|perl|hacker/"
Thread Previous
|
Thread Next