in reply to Re^4: Stupid question (heisenbugs)
in thread Stupid question

The error has something to do with lack of ref counting of the stack.

Well, that is asserted in https://rt.perl.org/rt3/Public/Bug/Display.html?id=77706 but no justification or even discussion of that assertion is apparent or even linked from it and I find the assertion not credible. Items on the stack in Perl are still ref-counted, just somewhat differently. There may be a fundamental flaw in this difference but I have not heard it described and it is not apparent to me.

If you run into some actual discussion or even a description that is not ridiculously vague, please point such out.

- tye        

Replies are listed 'Best First'.
Re^6: Stupid question (mortalization)
by runrig (Abbot) on May 11, 2012 at 23:52 UTC
    Seems like there are just bugs related to altering function arguments, perhaps when they also refer to more global variables, and maybe especially @ARGV. E.g. (copied and modified from bizarre Carp - also I posted a patch in that thread):
    use Carp; Main(@ARGV); sub Main { my $first = shift @ARGV; $ARGV[0] = [qw(1 2 3)]; confess "Rubbish"; exit; }

    I get different results on different versions of perl (tested on 5.8.4, 5.8.8, and 5.14.1). And different results when I comment out the assignment to $ARGV[0].

    But passing @ARGV to Main() and then modifying @ARGV (and Getopt::* modules modify @ARGV by default -- so yes @_ should be copied and parsed instead) seems to be a bad thing (bad in that it triggers bugs in perl/Carp, not that you shouldn't be allowed to do it and perl should blow up).