Hi again,

Here's a guess.  The value expected is 0x4142434445464748.  The value
we read is 0xb3f4bce041424344.  That hints at an off-by-4-bytes issue.
My guess is an alignment issue.  When you force-cast the RPython
string to a type with an 8-bytes-per-item array, on some 32-bit
platforms it might be aligned to 8 bytes anyway.  It is not the case
on Linux x86-32, but it is the case on Win32 for example.  So you
force-cast to a type that looks like this:

   gc header (4 bytes)
   hash (4 bytes)
   length (4 bytes)
   PADDING! (4 bytes)
   array items (8 bytes each)

Maybe you should not force-cast to any type whose size is greater than
a Signed, to avoid the issue.


A bientôt,

Armin.
_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to