# New Ticket Created by  ab5tract 
# Please include the string:  [perl #124057]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=124057 >


I encountered a consistent segfault while working out a trivial proxy
example in hopes of documenting the class.

How this might be condensed further is beyond me at the moment. After
removing the $!scrambler attribute, the code will no longer segfault, which
would defeat the purpose of this rakudobug.

Weirdly enough, if I remove $!string, it also stops segfaulting -- even
though it is never used. The name of the attribute doesn't seem to matter.

This class is modeled off of what I saw in the proxy-related spec tests.
The mutator test seems to do something very similar, but I haven't been
able to extend it.


## codeword.p6

class Codeword {
    has Sub $.scrambler is rw;
    has $!string;
    has $!encoded-string;

    submethod BUILD {
        my sub scrambler { $^s.trans: 'a..mn..z' => 'n..za..m', :ii }
        $!scrambler = &scrambler;
    }

    method codeword returns Str is rw {
        return Proxy.new(
            FETCH => method ()      { $!encoded-string },
            STORE => method ($s)    { $!encoded-string = $!scrambler($s) }
        );
    }
}

my $code = Codeword.new;
$code.codeword;


## perl6-debug-m output:

+ proxy-test.p6 (23 - 25)
|
| my $code = Codeword.new;
| $code.codeword;
>
+ proxy-test.p6 (15 - 22)
|
|     method codeword returns Str is rw {
|         return Proxy.new(
|             FETCH => method ()      { $!encoded-string },
|             STORE => method ($s)    { $!encoded-string = $!scrambler($s) }
|         );
|     }
| }
>
+ proxy-test.p6 (16 - 20)
|     method codeword returns Str is rw {
|         return Proxy.new(
|             FETCH => method ()      { $!encoded-string },
|             STORE => method ($s)    { $!encoded-string = $!scrambler($s) }
|         );
>
~/.rakudobrew/bin/perl6-debug-m: line 2: 14368 Segmentation fault: 11
 ~/.rakudobrew/bin/../moar-HEAD/install/bin/perl6-debug-m "$@"

Reply via email to