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
op.c:13184: S_maybe_multideref: Assertion `!(o->op_private & ~(0x03|0x30))' failed #15864
Comments
From @dur-randirCreated by @dur-randirWhile fuzzing perl v5.25.9-35-g32207c637b built with afl and run p$0[],%{[],local$0[0][0]} to cause an assertion failure, even when run under -c for a syntax (gdb) bt Perl Info
|
From @hvdsOn Mon, 06 Feb 2017 13:21:39 -0800, randir wrote:
This simplifies to: % ./miniperl -wle 'sub p { print for @_ }; p($x[0], %{local $x[0]})' The assert is complaining about OPpLVAL_INTRO set at op.c:3328, and can also be triggered with eg '(local $x[0])->{x}' or '(local $x[0])->[0]'. If I hack out the assert it happily does what appears to be the right thing (though I'm not sure about the first warning): % ./hackedminiperl -wle 'sub p { print for @_ } p($x[0], %{local $x[0]})' % Without the local() we get to see the autovivified hashref, which I assume is also correct: % ./miniperl -wle 'sub p { print for @_ } p($x[0], %{$x[0]})' I don't know enough to suggest what should be changed here. Hugo |
The RT System itself - Status changed from 'new' to 'open' |
From @iabynOn Tue, Feb 07, 2017 at 04:47:09AM -0800, Hugo van der Sanden via RT wrote:
I'm currently working on this. Will update soon. -- |
From @iabynOn Tue, Feb 07, 2017 at 03:07:10PM +0000, Dave Mitchell wrote:
I've just pushed this: commit 43dbb3c multideref: handle both OPpLVAL_INTRO,OPpDEREF -- |
From @tonycozOn Tue, 07 Feb 2017 08:04:36 -0800, davem wrote:
Does that mean this ticket is closable? Tony |
@iabyn - Status changed from 'open' to 'pending release' |
From @iabynOn Sun, Feb 12, 2017 at 03:45:28PM -0800, Tony Cook via RT wrote:
Yes, I forgot to do that. Closed now. -- |
From @dur-randirOn Wed, 15 Feb 2017 03:21:46 -0800, davem wrote:
While this fixes cases deducted by Hugo van der Sanden and provided in your commit message, the original ./perl -e 'p$0[],%{[],local$0[0][0]}' still segfaults, though with another message: perl: op.c:13196: void S_maybe_multideref(OP *, OP *, UV, U8): Assertion `o->op_next->op_type == OP_LEAVE' failed. |
From @iabynOn Thu, Feb 16, 2017 at 01:27:46PM -0800, Sergey Aleynikov via RT wrote:
Fixed by v5.25.9-154-gd8f2fe0 -- |
From @khwilliamsonThank you for filing this report. You have helped make Perl better. With the release today of Perl 5.26.0, this and 210 other issues have been Perl 5.26.0 may be downloaded via: If you find that the problem persists, feel free to reopen this ticket. |
@khwilliamson - Status changed from 'pending release' to 'resolved' |
Migrated from rt.perl.org#130727 (status was 'resolved')
Searchable as RT130727$
The text was updated successfully, but these errors were encountered: