Subject: | Fails some tests when built against PDL-2.007 |
Hi,
There's no problem if perl's ivsize == 4, but if perl's ivsize == 8 there's a couple of test failures (including a segfault) on MS Windows.
PDL-2.007 introduced 64-bit indexing, and I suspect that this is at the heart of the problem.
One of the telling compiler warnings I see is:
pdlperlfunc.c:162:3: warning: passing argument 2 of 'PDL->setdims' from incompatible pointer type [enabled by default]
pdlperlfunc.c:162:3: note: expected 'PDL_Indx *' but argument is of type 'PDL_Long *'
That doesn't threaten anything on perls where PDL_Indx and PDL_long are the same size, but on those of my Windows perls that have ivsize == 8 the PDL_Indx type is an 8-byte (long long) integer value whereas the PDL_Long type is a 4-byte value.
This is a recipe for disaster ... which is precisely what ensues.
Here are the actual test failures:
t/chkjac.t ..... PDL: PDL::Ops::assgn(a,b): Parameter 'b':
Mismatched implicit thread dimension 0: should be 10, is 1815957885
at Basic/Core/Core.pm.PL (i.e. PDL::Core.pm) line 858.
PDL::__ANON__('PDL=SCALAR(0x2d68e50)', 'PDL=SCALAR(0x2d68d78)', undef) called at t/chkjac.t line 85
main::jacgauss('PDL=SCALAR(0x2d68c88)', 'PDL=SCALAR(0x2d68cb8)', 'PDL=SC
ALAR(0x2d68d18)') called at C:\sisyphusion\PDL-Fit-Levmar-0.0096\blib\lib/PDL/Fi
t/Levmar.pm line 1750
PDL::Fit::Levmar::levmar_chkjac('PDL::Fit::Levmar::Func=HASH(0x2d68b80)'
, 'PDL=SCALAR(0x2d68a00)', 'PDL=SCALAR(0x2d68988)') called at t/chkjac.t line 112
main::chkjac('1e-005') called at t/chkjac.t line 123
t/chkjac.t ..... Dubious, test returned 255 (wstat 65280, 0xff00)
.
.
.
t/liblevmar.t .. Dubious, test returned 5 (wstat 1280, 0x500)
It's the t/liblevmar.t test script that segfaults:
###############################
C:\sisyphusion\PDL-Fit-Levmar-0.0096>perl -Mblib t/liblevmar.t
1..25
# type double
ok - 1 Rosenbrock csrc == def
[crash]
###############################
If you don't have a perl whose ivsize != longsize, then it may well be that you can't reproduce the problem.
It's also a possibility that this is a problem with PDL-2.007, not PDL-Fit-Levmar ... I don't know.
Cheers,
Rob