Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.98k stars 560 forks source link

Perl 5.24 makes nama FTBFS due to segfault #15930

Open p5pRT opened 7 years ago

p5pRT commented 7 years ago

Migrated from rt.perl.org#131054 (status was 'open')

Searchable as RT131054$

p5pRT commented 7 years ago

From balint.reczey@canonical.com

This is a bug report for perl from rbalint@​ubuntu.com\, generated with the help of perlbug 1.40 running under perl 5.24.1.


When building nama Perl crashes in tests.

Originally reported to Debian BTS​: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839218

On Fri\, 30 Sep 2016 10​:09​:01 +0100 Chris Lamb \lamby@​debian\.org wrote​:

Source​: nama Version​: 1.208-1 Severity​: serious Justification​: fails to build from source User​: reproducible-builds@​lists.alioth.debian.org Usertags​: ftbfs X-Debbugs-Cc​: reproducible-builds@​lists.alioth.debian.org

Dear Maintainer\,

nama fails to build from source in unstable/amd64​:

[..]

ok 57 - set JACK client as input sax​: JACK source port is sax_in. Make connections manually.

Track sax​: source set to JACK manual port sax_in Failed 69/126 subtests t/13_io.t ....... 1..1 ok 1 - use Audio​::Nama​::IO; ok

Test Summary Report ------------------- t/12_nama.t (Wstat​: 139 Tests​: 57 Failed​: 0) Non-zero wait status​: 139 Parse errors​: Bad plan. You planned 126 tests but ran 57. Files=7\, Tests=91\, 5 wallclock secs ( 0.03 usr 0.01 sys + 2.29 cusr 0.43 csys = 2.76 CPU) Result​: FAIL Failed 1/7 test programs. 0/91 subtests failed. Makefile​:930​: recipe for target 'test_dynamic' failed make[1]​: *** [test_dynamic] Error 255 make[1]​: Leaving directory '/home/lamby/temp/cdt.20160930095107.55GhkE5sL3.db.nama/nama-1.208' dh_auto_test​: make -j1 test TEST_VERBOSE=1 returned exit code 2 debian/rules​:4​: recipe for target 'build' failed make​: *** [build] Error 2

[..]

This looks like a problem in Perl itself possibly causing random crashes elsewhere\, too.

Reproduction with the perl-debug package shows the internal assertion​:

sudo apt-get install perl-debug sudo apt-get build-dep nama apt source nama cd nama-* dpkg-buildpackage ... ok 57 - set JACK client as input sax​: JACK source port is sax_in. Make connections manually.

Track sax​: source set to JACK manual port sax_in Failed 69/126 subtests t/13_io.t ....... 1..1 ok 1 - use Audio​::Nama​::IO; ok ..

PERL_DL_NONLAZY=1 PERL_USE_UNSAFE_INC=1 "/usr/bin/debugperl" \ "-MExtUtils​::Command​::MM" "-MTest​::Harness" "-e" " test_harness(1\, \ 'inc'\, 'blib/lib'\, 'blib/arch')" t/12_nama.t

...

ok 57 - set JACK client as input sax​: JACK source port is sax_in. Make connections manually. Track sax​: source set to JACK manual port sax_in debugperl​: sv.c​:6438​: Perl_sv_clear​: Assertion `SvTYPE(sv) != (svtype)SVTYPEMASK' failed. Failed 69/126 subtests ...

Address Sanitizer shows the crash with non-debug perl​:

LD_PRELOAD=libasan.so.3 PERL_DL_NONLAZY=1 PERL_USE_UNSAFE_INC=1 \ "/usr/bin/perl" "-MExtUtils​::Command​::MM" "-MTest​::Harness" "-e" " test_harness(1\, 'inc'\, 'blib/lib'\, 'blib/arch')" t/12_nama.t ... sax​: JACK source port is sax_in. Make connections manually. Track sax​: source set to JACK manual port sax_in ASAN​:DEADLYSIGNAL

==13877==ERROR​: AddressSanitizer​: SEGV on unknown address 0x00ff00000012 (pc 0x559191b15fd8 bp 0x62100013f578 sp 0x7fffaa838b00 T0)   #0 0x559191b15fd7 (/usr/bin/perl+0xd9fd7)   #1 0x559191b1616d in Perl_sv_unmagic (/usr/bin/perl+0xda16d)   #2 0x559191b1513a in Perl_sv_clear (/usr/bin/perl+0xd913a)   #3 0x559191b15a8f in Perl_sv_free2 (/usr/bin/perl+0xd9a8f)   #4 0x559191b4624e in Perl_leave_scope (/usr/bin/perl+0x10a24e)   #5 0x559191b49707 (/usr/bin/perl+0x10d707)   #6 0x559191b4ebab in Perl_die_unwind (/usr/bin/perl+0x112bab)   #7 0x559191aea518 in Perl_vcroak (/usr/bin/perl+0xae518)   #8 0x559191aeafb3 in Perl_croak (/usr/bin/perl+0xaefb3)   #9 0x559191b1d592 in Perl_sv_setsv_flags (/usr/bin/perl+0xe1592)   #10 0x559191b08ca9 in Perl_pp_sassign (/usr/bin/perl+0xccca9)   #11 0x559191b08605 in Perl_runops_standard (/usr/bin/perl+0xcc605)   #12 0x559191a8e6c8 in perl_run (/usr/bin/perl+0x526c8)   #13 0x559191a6787c in main (/usr/bin/perl+0x2b87c)   #14 0x7fa31be502b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)   #15 0x559191a678b9 in _start (/usr/bin/perl+0x2b8b9)

AddressSanitizer can not provide additional info. SUMMARY​: AddressSanitizer​: SEGV (/usr/bin/perl+0xd9fd7) ==13877==ABORTING Dubious\, test returned 1 (wstat 256\, 0x100) Failed 69/126 subtests

Niko Tyni found a workaround\, but Perl itself would still be buggy​:

While I haven't made it to the bottom of this yet\, I note that there's this code in lib/Audio/Nama/Effect.pm​:

     my $perl\_version = $^V;
     my \($minor\_version\) = $perl\_version =~ /^v5\\\.\(\\d\+\)/;
     my @​new\_list = grep  \{ $\_ ne $id  \} @​ops\_list;
     \#say "new\_list​: @​new\_list";
     if \($minor\_version \<= 14\)
          \{    $track\->\{ops\}   = \[ @&#8203;new\_list  \] \}
     else \{ @&#8203;\{ $track\->\{ops\} \} =    @&#8203;new\_list    \}

and if I patch that to take the \<= 14 code path\, the segfault goes away here and all tests pass. What's the history behind this version check?

Funny story\, it was added to work around a segfault in older perl​: https://github.com/bolangi/nama/commit/8ecdbd5ad0b8ac67b7e4adab2ee1100fbf29aa1f

The line looks very much like a corner case for the assignment reimplementation​:

https://github.com/Perl/perl5/commit/a5f48505593c7e1ca478de383e24d5cc2541f3ca

  re-implement OPpASSIGN_COMMON mechanism

This commit almost completely replaces the current mechanism for detecting and handing common vars in list assignment\, e.g. ...

The issue was also reported against nama\, but I could not find a way to reassign it to perl​: https://rt.cpan.org/Public/Bug/Display.html?id=109852



Flags​:   category=core   severity=high


Site configuration information for perl 5.24.1​:

Configured by Debian Project at Thu Mar 16 11​:11​:46 UTC 2017.

Summary of my perl5 (revision 5 version 24 subversion 1) configuration​:   Platform​:   osname=linux\, osvers=3.16.0\, archname=x86_64-linux-gnu-thread-multi   uname='linux localhost 3.16.0 #1 smp debian 3.16.0 x86_64 gnulinux '   config_args='-Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fdebug-prefix-map=/build/perl-fHa8XZ/perl-5.24.1=. -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl\,-z\,relro -Dlddlflags=-shared -Wl\,-z\,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.24 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.24 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.24 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.24.1 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.24.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dusesitecustomize -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib -Dlibperl=libperl.so.5.24.1'   hint=recommended\, useposix=true\, d_sigaction=define   useithreads=define\, usemultiplicity=define   use64bitint=define\, use64bitall=define\, uselongdouble=undef   usemymalloc=n\, bincompat5005=undef   Compiler​:   cc='x86_64-linux-gnu-gcc'\, ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'\,   optimize='-O2 -g'\,   cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include'   ccversion=''\, gccversion='6.3.0 20170221'\, 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='double'\, nvsize=8\, Off_t='off_t'\, lseeksize=8   alignbytes=8\, prototype=define   Linker and Libraries​:   ld='x86_64-linux-gnu-gcc'\, ldflags =' -fstack-protector-strong -L/usr/local/lib'   libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/6/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=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt   perllibs=-ldl -lm -lpthread -lc -lcrypt   libc=libc-2.24.so\, so=so\, useshrplib=true\, libperl=libperl.so.5.24   gnulibc_version='2.24'   Dynamic Linking​:   dlsrc=dl_dlopen.xs\, dlext=so\, d_dlsymun=undef\, ccdlflags='-Wl\,-E'   cccdlflags='-fPIC'\, lddlflags='-shared -L/usr/local/lib -fstack-protector-strong'

Locally applied patches​:   DEBPKG​:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.   DEBPKG​:debian/db_file_ver - https://bugs.debian.org/340047 Remove overly restrictive DB_File version check.   DEBPKG​:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.   DEBPKG​:debian/enc2xs_inc - https://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @​INC directories.   DEBPKG​:debian/errno_ver - https://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.   DEBPKG​:debian/libperl_embed_doc - https://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking   DEBPKG​:fixes/respect_umask - Respect umask during installation   DEBPKG​:debian/writable_site_dirs - Set umask approproately for site install directories   DEBPKG​:debian/extutils_set_libperl_path - EU​:MM​: set location of libperl.a under /usr/lib   DEBPKG​:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor   DEBPKG​:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.   DEBPKG​:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.   DEBPKG​:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.   DEBPKG​:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.   DEBPKG​:debian/mod_paths - Tweak @​INC ordering for Debian   DEBPKG​:debian/prune_libs - https://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.   DEBPKG​:fixes/net_smtp_docs - [rt.cpan.org #36038] https://bugs.debian.org/100195 Document the Net​::SMTP 'Port' option   DEBPKG​:debian/perlivp - https://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local   DEBPKG​:debian/deprecate-with-apt - https://bugs.debian.org/747628 Point users to Debian packages of deprecated core modules   DEBPKG​:debian/squelch-locale-warnings - https://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts   DEBPKG​:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository   DEBPKG​:debian/patchlevel - https://bugs.debian.org/567489 List packaged patches for 5.24.1-2 in patchlevel.h   DEBPKG​:debian/skip-kfreebsd-crash - https://bugs.debian.org/628493 [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD   DEBPKG​:fixes/document_makemaker_ccflags - https://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags}   DEBPKG​:debian/find_html2text - https://bugs.debian.org/640479 Configure CPAN​::Distribution with correct name of html2text   DEBPKG​:debian/perl5db-x-terminal-emulator.patch - https://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl   DEBPKG​:debian/cpan-missing-site-dirs - https://bugs.debian.org/688842 Fix CPAN​::FirstTime defaults with nonexisting site dirs if a parent is writable   DEBPKG​:fixes/memoize_storable_nstore - [rt.cpan.org #77790] https://bugs.debian.org/587650 Memoize​::Storable​: respect 'nstore' option not respected   DEBPKG​:debian/regen-skip - Skip a regeneration check in unrelated git repositories   DEBPKG​:debian/makemaker-pasthru - https://bugs.debian.org/758471 Pass LD settings through to subdirectories   DEBPKG​:debian/makemaker-manext - https://bugs.debian.org/247370 Make EU​::MakeMaker honour MANnEXT settings in generated manpage headers   DEBPKG​:debian/devel-ppport-reproducibility - https://bugs.debian.org/801523 Sort the list of XS code files when generating RealPPPort.xs   DEBPKG​:debian/encode-unicode-bom-doc - https://bugs.debian.org/798727 Document Debian backport of Encode​::Unicode fix   DEBPKG​:debian/kfreebsd-softupdates - https://bugs.debian.org/796798 Work around Debian Bug#796798   DEBPKG​:fixes/autodie-scope - https://bugs.debian.org/798096 Fix a scoping issue with "no autodie" and the "system" sub   DEBPKG​:fixes/crosscompile-no-targethost - [23695c0] [perl #127234] Fix the Configure escape with usecrosscompile but no targethost   DEBPKG​:fixes/memoize-pod - [rt.cpan.org #89441] Fix POD errors in Memoize   DEBPKG​:fixes/ok-pod - Added encoding for pod.   DEBPKG​:debian/hurd-softupdates - https://bugs.debian.org/822735 Fix t/op/stat.t failures on hurd   DEBPKG​:fixes/nntp_docs - https://bugs.debian.org/51962 Net​::NNTP​: Correct innd/nnrpd confusion in relation to Reader option   DEBPKG​:fixes/math_complex_doc_great_circle - https://bugs.debian.org/697567 [rt.cpan.org #114104] Math​::Trig​: clarify definition of great_circle_midpoint   DEBPKG​:fixes/math_complex_doc_see_also - https://bugs.debian.org/697568 [rt.cpan.org #114105] Math​::Trig​: add missing SEE ALSO   DEBPKG​:fixes/math_complex_doc_angle_units - https://bugs.debian.org/731505 [rt.cpan.org #114106] Math​::Trig​: document angle units   DEBPKG​:fixes/cpan_web_link - https://bugs.debian.org/367291 CPAN​: Add link to main CPAN web site   DEBPKG​:fixes/time_piece_doc - https://bugs.debian.org/817925 Time​::Piece​: Improve documentation for add_months and add_years   DEBPKG​:fixes/perlbug-refactor - https://bugs.debian.org/822463 [perl #128020] perlbug​: Refactor duplicated file reading code   DEBPKG​:fixes/perlbug-linewrap - https://bugs.debian.org/822463 [perl #128020] perlbug​: wrap overly long lines   DEBPKG​:fixes/hurd_sigaction - https://bugs.debian.org/825016 [d54f4ed] ext/POSIX/t/sigaction.t​: Skip uid and pid tests on GNU/Hurd   DEBPKG​:fixes/hurd_hints - [4694301] https://bugs.debian.org/825020 [perl #128279] Modify hints for Hurd per Debian ticket 825020.   DEBPKG​:fixes/extutils-parsexs-reproducibility - [perl #128517] https://bugs.debian.org/829296 Make the output of ExtUtils​::ParseXS reproducible   DEBPKG​:debian/CVE-2016-1238/sitecustomize-in-etc - Look for sitecustomize.pl in /etc/perl rather than sitelib on Debian systems   DEBPKG​:debian/CVE-2016-1238/test-suite-without-dot - [perl #127810] Patch unit tests to explicitly insert "." into @​INC when needed.   DEBPKG​:debian/CVE-2016-1238/eumm-without-dot - [perl #127810] Add PERL_USE_UNSAFE_INC support to EU​::MM for fortify_inc support.   DEBPKG​:debian/CVE-2016-1238/cpan-without-dot - [perl #127810] Set PERL_USE_UNSAFE_INC for cpan usage   DEBPKG​:debian/document_inc_removal - Document in perlvar that we remove '.' from @​INC by default   DEBPKG​:fixes/extutils_makemaker_reproducible - https​://bugs.debian.org/835815 https://bugs.debian.org/834190 Make perllocal.pod files reproducible   DEBPKG​:debian/CVE-2016-1238/remove-inc-test - Remove test for '.' in @​INC as it might not be   DEBPKG​:debian/customized - Update customized.dat for files patched in Debian   DEBPKG​:fixes/file_path_hurd_errno - File-Path​: Fix test failure in Hurd due to hard-coded ENOENT   DEBPKG​:debian/hppa_op_optimize_workaround - https://bugs.debian.org/838613 Temporarily lower the optimization of op.c on hppa due to gcc-6 problems   DEBPKG​:fixes/test-builder-warning - https://bugs.debian.org/840968 Silence a 'used only once' warning in Test​::Builder   DEBPKG​:fixes/longdblinf-randomness - [dd68853] [perl #130133] https://bugs.debian.org/844752 Configure​: fix garbage filtering with 80-bit long doubles   DEBPKG​:debian/installman-utf8 - https://bugs.debian.org/840211 Generate man pages with UTF-8 characters   DEBPKG​:fixes/list_assign_leak - [1050723] [perl #130766] https://bugs.debian.org/855064 avoid a leak in list assign from/to magic values   DEBPKG​:fixes/perlfunc_inc_doc - [a03e9f8] https://bugs.debian.org/839536 [perl #130832] Documentation fixes for '.' possibly no longer being in @​INC


@​INC for perl 5.24.1​:   /etc/perl   /usr/local/lib/x86_64-linux-gnu/perl/5.24.1   /usr/local/share/perl/5.24.1   /usr/lib/x86_64-linux-gnu/perl5/5.24   /usr/share/perl5   /usr/lib/x86_64-linux-gnu/perl/5.24   /usr/share/perl/5.24   /usr/local/lib/site_perl   /usr/lib/x86_64-linux-gnu/perl-base


Environment for perl 5.24.1​:   HOME=/home/rbalint   LANG=C   LANGUAGE (unset)   LC_ADDRESS=hu_HU.UTF-8   LC_ALL=en_US.UTF-8   LC_IDENTIFICATION=hu_HU.UTF-8   LC_MEASUREMENT=hu_HU.UTF-8   LC_MONETARY=hu_HU.UTF-8   LC_NAME=hu_HU.UTF-8   LC_NUMERIC=hu_HU.UTF-8   LC_PAPER=hu_HU.UTF-8   LC_TELEPHONE=hu_HU.UTF-8   LC_TIME=hu_HU.UTF-8   LD_LIBRARY_PATH (unset)   LOGDIR (unset)   PATH=/usr/lib/ccache​:/home/rbalint/bin​:/usr/local/bin​:/usr/bin​:/bin​:/usr/local/games​:/usr/games   PERL_BADLANG (unset)   SHELL=/bin/bash

p5pRT commented 7 years ago

From rbalint@ubuntu.com

Apparently my original report was too detailed\, pasting the interesting parts​:

When building nama Perl crashes in tests.

Originally reported to Debian BTS​: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839218

This looks like a problem in Perl itself possibly causing random crashes elsewhere\, too.

Reproduction with the perl-debug package shows the internal assertion​:

sudo apt-get install perl-debug sudo apt-get build-dep nama apt source nama cd nama-* dpkg-buildpackage ... ok 57 - set JACK client as input sax​: JACK source port is sax_in. Make connections manually.

Track sax​: source set to JACK manual port sax_in Failed 69/126 subtests t/13_io.t ....... 1..1 ok 1 - use Audio​::Nama​::IO; ok ..

PERL_DL_NONLAZY=1 PERL_USE_UNSAFE_INC=1 "/usr/bin/debugperl" \ "-MExtUtils​::Command​::MM" "-MTest​::Harness" "-e" " test_harness(1\, \ 'inc'\, 'blib/lib'\, 'blib/arch')" t/12_nama.t

...

ok 57 - set JACK client as input sax​: JACK source port is sax_in. Make connections manually. Track sax​: source set to JACK manual port sax_in debugperl​: sv.c​:6438​: Perl_sv_clear​: Assertion `SvTYPE(sv) != (svtype)SVTYPEMASK' failed. Failed 69/126 subtests ...

Address Sanitizer shows the crash with non-debug perl​:

LD_PRELOAD=libasan.so.3 PERL_DL_NONLAZY=1 PERL_USE_UNSAFE_INC=1 \ "/usr/bin/perl" "-MExtUtils​::Command​::MM" "-MTest​::Harness" "-e" " test_harness(1\, 'inc'\, 'blib/lib'\, 'blib/arch')" t/12_nama.t ... sax​: JACK source port is sax_in. Make connections manually. Track sax​: source set to JACK manual port sax_in ASAN​:DEADLYSIGNAL

==13877==ERROR​: AddressSanitizer​: SEGV on unknown address 0x00ff00000012 (pc 0x559191b15fd8 bp 0x62100013f578 sp 0x7fffaa838b00 T0)   #0 0x559191b15fd7 (/usr/bin/perl+0xd9fd7)   #1 0x559191b1616d in Perl_sv_unmagic (/usr/bin/perl+0xda16d)   #2 0x559191b1513a in Perl_sv_clear (/usr/bin/perl+0xd913a)   #3 0x559191b15a8f in Perl_sv_free2 (/usr/bin/perl+0xd9a8f)   #4 0x559191b4624e in Perl_leave_scope (/usr/bin/perl+0x10a24e)   #5 0x559191b49707 (/usr/bin/perl+0x10d707)   #6 0x559191b4ebab in Perl_die_unwind (/usr/bin/perl+0x112bab)   #7 0x559191aea518 in Perl_vcroak (/usr/bin/perl+0xae518)   #8 0x559191aeafb3 in Perl_croak (/usr/bin/perl+0xaefb3)   #9 0x559191b1d592 in Perl_sv_setsv_flags (/usr/bin/perl+0xe1592)   #10 0x559191b08ca9 in Perl_pp_sassign (/usr/bin/perl+0xccca9)   #11 0x559191b08605 in Perl_runops_standard (/usr/bin/perl+0xcc605)   #12 0x559191a8e6c8 in perl_run (/usr/bin/perl+0x526c8)   #13 0x559191a6787c in main (/usr/bin/perl+0x2b87c)   #14 0x7fa31be502b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)   #15 0x559191a678b9 in _start (/usr/bin/perl+0x2b8b9)

AddressSanitizer can not provide additional info. SUMMARY​: AddressSanitizer​: SEGV (/usr/bin/perl+0xd9fd7) ==13877==ABORTING Dubious\, test returned 1 (wstat 256\, 0x100) Failed 69/126 subtests

p5pRT commented 7 years ago

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

p5pRT commented 7 years ago

From rbalint@ubuntu.com

Niko Tyni found a workaround\, but Perl itself would still be buggy​:

While I haven't made it to the bottom of this yet\, I note that there's this code in lib/Audio/Nama/Effect.pm​:

     my $perl\_version = $^V;
     my \($minor\_version\) = $perl\_version =~ /^v5\\\.\(\\d\+\)/;
     my @&#8203;new\_list = grep  \{ $\_ ne $id  \} @&#8203;ops\_list;
     \#say "new\_list&#8203;: @&#8203;new\_list";
     if \($minor\_version \<= 14\)
          \{    $track\->\{ops\}   = \[ @&#8203;new\_list  \] \}
     else \{ @&#8203;\{ $track\->\{ops\} \} =    @&#8203;new\_list    \}

and if I patch that to take the \<= 14 code path\, the segfault goes away here and all tests pass. What's the history behind this version check?

Funny story\, it was added to work around a segfault in older perl​: https://github.com/bolangi/nama/commit/8ecdbd5ad0b8ac67b7e4adab2ee1100fbf29aa1f

The line looks very much like a corner case for the assignment reimplementation​:

https://github.com/Perl/perl5/commit/a5f48505593c7e1ca478de383e24d5cc2541f3ca

  re-implement OPpASSIGN_COMMON mechanism

This commit almost completely replaces the current mechanism for detecting and handing common vars in list assignment\, e.g. ...

The issue was also reported against nama\, but I could not find a way to reassign it to perl​: https://rt.cpan.org/Public/Bug/Display.html?id=109852

p5pRT commented 7 years ago

From @ntyni

On Fri\, Mar 24\, 2017 at 07​:41​:40AM -0700\, Balint Reczey wrote​:

ok 57 - set JACK client as input sax​: JACK source port is sax_in. Make connections manually. Track sax​: source set to JACK manual port sax_in debugperl​: sv.c​:6438​: Perl_sv_clear​: Assertion `SvTYPE(sv) != (svtype)SVTYPEMASK' failed. Failed 69/126 subtests

I reduced this down to

  my $a = [ 0\, 1 ];  
  sub f {   my $arg = shift;   my @​a1 = @​$a;   @​$a = @​a1;   return();   }  
  map{ f($_) } @​$a;

which gives

  panic​: attempt to copy freed scalar 55aa6f0921c0 to 55aa6f092bb0 at - line 4.   debugperl​: sv.c​:6438​: Perl_sv_clear​: Assertion `SvTYPE(sv) != (svtype)SVTYPEMASK' failed.   zsh​: abort (core dumped) debugperl

So another stack-not-refcounted issue?

-- Niko Tyni ntyni@​debian.org

p5pRT commented 7 years ago

From zefram@fysh.org

Niko Tyni wrote​:

So another stack-not-refcounted issue?

Yes.

-zefram