Andy Dougherty wrote:
On Fri, 2 Sep 2005, Nattfodd wrote:
I added in the last revision some very basic memory alignment control
(basically, headers and bodies are rounded up to the nearest multiple of
GMC_ALIGN, which has a value of 8 now but can be changed at will. As headers
were previously using 12 bytes, this may solve your problem (I hope so...).
There are assert for alignment pretty much everywhere in object allocation, so
that should help too.
Setting GMC_ALIGN to 8 failed as before. Setting it to 16 (the same value
as BUFFER_ALIGN in include/parrot/headers.h at least allowed it to build.
It still fails lots of tests, however:
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/dynclass/gdbmhash.t 13 3328 13 13 100.00% 1-13
t/dynclass/pyclass.t 1 256 6 1 16.67% 6
t/dynclass/pyfunc.t 1 256 4 1 25.00% 4
t/library/getopt_long.t 1 256 1 1 100.00% 1
t/library/streams.t 1 256 20 1 5.00% 13
t/native_pbc/integer.t 1 256 1 1 100.00% 1
t/native_pbc/number.t 1 256 1 1 100.00% 1
t/op/gc.t 6 1536 19 6 31.58% 4 11 15-18
t/p6rules/backtrack.t 13 3328 15 13 86.67% 3-15
t/p6rules/builtins.t 35 8960 41 35 85.37% 1-18 21 24 27-41
t/p6rules/capture.t 38 9728 38 38 100.00% 1-38
t/p6rules/escape.t 16 4096 19 16 84.21% 1-16
t/p6rules/subrules.t 5 1280 5 5 100.00% 1-5
t/p6rules/ws.t 19 4864 19 19 100.00% 1-19
t/pmc/mmd.t 10 2560 28 10 35.71% 1-8 23 25
t/pmc/objects.t 1 256 62 1 1.61% 31
t/pmc/ref.t 1 256 12 1 8.33% 7
t/src/hash.t 1 256 10 1 10.00% 6
4 tests and 76 subtests skipped.
Failed 18/163 test scripts, 88.96% okay. 164/2718 subtests failed, 93.97%
okay.
15 of those subtests were failing anyway even without your patch, but
the remaining failures are new, I think.
I have no time to investigate further, but I think there's a still some other
problem that's now getting masked. An alignment of 8 should have been
sufficent.
Or, it may be that the GMC_ALIGN and BUFFER_ALIGN need to be the same.
Hi Andy,
thanks for the investigation, I'll look closely to it. It was reported
to fail on AMD64 too but we did not try setting GMC_ALIGN to 16. Also be
warned that I am very far from an alignment master, so I may have done
things wrong in my small hack.
Btw, I always have a warning concerning Posix_memalign not being found.
It seems to be in no place that I changed, and I don't see why it isn't
found because the right headers are included. I did not really try to
correct it yet but this could be a cause of failure.
I also commited a correction for a really dummy mistake (an assert that
was failing onlw if data was *not* corrupted...).
This is still not perfect (98.37% on make test for me) but quite
positive anyway.
I'll leave tomorrow for one week of vacation in a place far, far away
(without internet connection, that is), but I'll continue trying to
debug it. Feel free to commit any change that seems relevant, of course.
Thansk for your support :)
Regards,
Alexandre