Hi Niko, On Wed, Mar 22, 2017 at 8:53 PM, Niko Tyni <nt...@debian.org> wrote: > On Tue, Mar 21, 2017 at 04:05:43PM +0100, Balint Reczey wrote: > >> It looks like not all regression are fixed after the re-implementation >> and the one affecting nama is one of them. > > Some effort on a reduced test case would have been appreciated; the nama > code base is rather big.
I worked on reducing the test, but I could not reach reasonable size and thought someone familiar with Perl internals could potentially spot the problem easily from the segfault/assert. I just found a perl test reducer, I'll give it a try: https://github.com/blekko/perl-reduce > > 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} = [ @new_list ] } > else { @{ $track->{ops} } = @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 you found looks very much like a corner case for the assignment reimplementation. Should I forward it to Perl upstream? Cheers, Balint