develooper Front page | perl.perl5.porters | Postings from July 2010

RE: Building 64-bit perl on Win32

Thread Previous | Thread Next
Jan Dubois
July 22, 2010 10:03
RE: Building 64-bit perl on Win32
Message ID:
On Thu, 22 Jul 2010, Nicholas Clark wrote:
> On Tue, Jul 20, 2010 at 06:18:28PM -0700, Jan Dubois wrote:
> > Are they by themselves suitable for integration into maint-5.12?  They
> > look fine to me, but I'm not sure if they assume some other earlier
> > fixes in blead or not.
> I had assumed not, because I assumed that they didn't change any visible
> behaviour. That they do comes as somewhat a surprise.

That's what I thought at first based on your commit message:

    4c8f17b905f2 (change 7867) took the approach of a special case in sv_setsv()
    when PL_op indicated that the current OP was OP_AASSIGN. The problem is in one
    part of pp_aassign, where it was using sv_mortalcopy() on values that were
    correctly marked as temporaries, but also still needed later. Hence a more
    targetted solution is to avoid that call, and to instead use API calls that
    will not steal temporaries. 

But I can also read this as: the old code may have stolen the PV slot from mortals
that were still used later.  So if the copied SV was been freed and the PV memory
re-used before the original mortal was accessed again, then you might have some
memory corruption.

> I'm now rather curious to know what the difference between the execution
> paths (and stack usage) is with and without the two on Win64. But I'm not
> in a position to go digging on it, and it's not clear whether it's
> replicateable on any other platform.

It can only be replicated with one specific compiler (64-bit VS2008) and only
with miniperl.exe.  Running with the regular perl.exe works fine.

Is there anything in particular you want me to try (that ideally would not require
a lot of time :) )?

I plan to eventually retry this with VS2010, but don't currently have a VM set up
to do this easily.


Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About