develooper Front page | perl.perl5.porters | Postings from February 2003

Re: [perl #20613] Perl_magic_setsig/clearsig problems (patch included)

Thread Previous | Thread Next
From:
Nick Ing-Simmons
Date:
February 1, 2003 02:59
Subject:
Re: [perl #20613] Perl_magic_setsig/clearsig problems (patch included)
Message ID:
20030201105911.1872.7@bactrian.ni-s.u-net.com
Benjamin Goldberg <goldbb2@earthlink.net> writes:
>"Anders Johnson (via RT)" wrote:
>[snip]
>> +              if(PL_psig_ptr[i]) {
>> +                      to_dec=PL_psig_ptr[i];
>> +                      PL_psig_ptr[i]=0;
>> +                      SvREFCNT_dec(to_dec);
>> +              }
>
>How often is stuff like this used/needed, throughout perl's source?
>It's not exactly something one can grep for, after all...
>
>I suspect (fear) that many places where this should be done, but isn't.

I don't fully grasp what the problem is yet. The "safe signals" code 
in 5.8 should make the above _less_ necessary. Signals should only 
be asynchronously messing with a always allocated array of counts.
All access to perl SVs etc. should be synchronous - so what is 
getting in during the decrement? And which bit of code let it?


>
>Eg, av_clear stores sv_undef in the array slot before decrementing the
>refcount of that sv, but neither av_undef nor av_fill do.
>
>In gv_fetchmeth, I see:
>            SvREFCNT_dec(cv);
>            GvCV(topgv) = cv = Nullcv;
>Should this do something similar (replace, then dec?)?  I suppose that
>it's rare that coderefs get blessed at all, let alone into classes with
>destructors, so it would be hard to provoke this accidentally, but it's
>concievable.  There're other places throughout perl which likewise
>derecemnt before replacing.
>
>   perl -e '@x = (bless[]); sub DESTROY{pop @x}; undef @x'
>   perl -e '@x = (bless[]); sub DESTROY{pop @x}; $#x=-1'
>   perl -e '%x = (1,bless[]); sub DESTROY{ delete $x{1}; }; %x=()'
>
>Knowing that the problem exists, I'm sure that someone could come up
>with perl code which provokes the others.
-- 
Nick Ing-Simmons
http://www.ni-s.u-net.com/


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About