Subject: | Perl.exe crashes during tests on MS Windows 64bit |
Hi,
While testing Devel::Caller on Strawberry 5.12.0-RC0 (64bit, Windows 7) I have experinced a crash during tests. 64bit strawberry perl is currently available as a beta here: http://strawberryperl.com/beta/
The trouble maker seems to be this test:
@expect = qw( %T::flange ); called_assign(%flange = (%foo, %bar));
here is prove -blv output:
t\Devel-Caller.t ..
1..72
ok 1 - use Devel::Caller;
ok 2 - caller_cv
ok 3 - caller_cv 0 is check
ok 4 - called_with 0 is $check
ok 5 - caller_cv 1 is baz
ok 6 - called_with 1 is $baz
ok 7 - caller_cv 2 is bar
ok 8 - called_with 2 is $bar
ok 9 - caller_cv 3 is foo
ok 10 - called_with 3 is $foo
ok 11 - right count
ok 12 - with lexical $foo
ok 13 - with lexical @foo
ok 14 - with lexical %foo
ok 15 - right count
ok 16 - with lexical name $foo
ok 17 - with lexical name @foo
ok 18 - with lexical name %foo
ok 19 - constant called_assign(undef)
ok 20 - constant called_assign(undef, $foo)
ok 21 - constant called_assign(undef, $foo)
ok 22 - lexical create called_assign($bar)
ok 23 - lexical create called_assign($baz)
ok 24 - lexical create called_assign($quux, $bar)
ok 25 - lexical create called_assign(@bar)
ok 26 - lexical create called_assign(@baz)
ok 27 - lexical create called_assign(@quux, @bar)
ok 28 - lexical create called_assign(@flange)
ok 29 - lexical create called_assign(%bar)
ok 30 - lexical create called_assign(%baz)
ok 31 - lexical create called_assign(%quux, %bar)
ok 32 - lexical create called_assign(%flange)
ok 33 - lexical prexist called_assign($bar)
ok 34 - lexical prexist called_assign($baz)
ok 35 - lexical prexist called_assign($quux, $bar)
ok 36 - lexical prexist called_assign(@bar)
ok 37 - lexical prexist called_assign(@baz)
ok 38 - lexical prexist called_assign(@quux, @bar)
ok 39 - lexical prexist called_assign(@flange)
ok 40 - lexical prexist called_assign(%bar)
ok 41 - lexical prexist called_assign(%baz)
ok 42 - lexical prexist called_assign(%quux, %bar)
ok 43 - lexical prexist called_assign(%flange)
ok 44 - right count
ok 45 - with $quux
ok 46 - with @quux
ok 47 - with %quux
ok 48 - right count
ok 49 - with name 0
ok 50 - with name 1
ok 51 - with name 2
ok 52 - right count
ok 53 - with name 0
ok 54 - with name 1
ok 55 - with name 2
ok 56 - package called_assign($T::bar)
ok 57 - package called_assign($T::baz)
ok 58 - package called_assign($T::quux, $T::bar)
ok 59 - package called_assign(@T::bar)
ok 60 - package called_assign(@T::baz)
ok 61 - package called_assign(@T::quux, @T::bar)
ok 62 - package called_assign(@T::flange)
ok 63 - package called_assign(%T::bar)
ok 64 - package called_assign(%T::baz)
ok 65 - package called_assign(%T::quux, %T::bar)
Dubious, test returned 5 (wstat 1280, 0x500)
Failed 7/72 subtests
Test Summary Report
-------------------
t\Devel-Caller.t (Wstat: 1280 Tests: 65 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 72 tests but ran 65.
Files=1, Tests=65, 2 wallclock secs ( 0.06 usr + 0.01 sys = 0.08 CPU)
Result: FAIL
One "maybe-hint": I do know nothing about Devel::Caller guts but the most common issue with 64bit Windows is not considering the fact that sizeof(*void) == 8 however sizeof(int) == 4 on 64bit MS Windows.
Thanks for any feedback.
--
kmx
While testing Devel::Caller on Strawberry 5.12.0-RC0 (64bit, Windows 7) I have experinced a crash during tests. 64bit strawberry perl is currently available as a beta here: http://strawberryperl.com/beta/
The trouble maker seems to be this test:
@expect = qw( %T::flange ); called_assign(%flange = (%foo, %bar));
here is prove -blv output:
t\Devel-Caller.t ..
1..72
ok 1 - use Devel::Caller;
ok 2 - caller_cv
ok 3 - caller_cv 0 is check
ok 4 - called_with 0 is $check
ok 5 - caller_cv 1 is baz
ok 6 - called_with 1 is $baz
ok 7 - caller_cv 2 is bar
ok 8 - called_with 2 is $bar
ok 9 - caller_cv 3 is foo
ok 10 - called_with 3 is $foo
ok 11 - right count
ok 12 - with lexical $foo
ok 13 - with lexical @foo
ok 14 - with lexical %foo
ok 15 - right count
ok 16 - with lexical name $foo
ok 17 - with lexical name @foo
ok 18 - with lexical name %foo
ok 19 - constant called_assign(undef)
ok 20 - constant called_assign(undef, $foo)
ok 21 - constant called_assign(undef, $foo)
ok 22 - lexical create called_assign($bar)
ok 23 - lexical create called_assign($baz)
ok 24 - lexical create called_assign($quux, $bar)
ok 25 - lexical create called_assign(@bar)
ok 26 - lexical create called_assign(@baz)
ok 27 - lexical create called_assign(@quux, @bar)
ok 28 - lexical create called_assign(@flange)
ok 29 - lexical create called_assign(%bar)
ok 30 - lexical create called_assign(%baz)
ok 31 - lexical create called_assign(%quux, %bar)
ok 32 - lexical create called_assign(%flange)
ok 33 - lexical prexist called_assign($bar)
ok 34 - lexical prexist called_assign($baz)
ok 35 - lexical prexist called_assign($quux, $bar)
ok 36 - lexical prexist called_assign(@bar)
ok 37 - lexical prexist called_assign(@baz)
ok 38 - lexical prexist called_assign(@quux, @bar)
ok 39 - lexical prexist called_assign(@flange)
ok 40 - lexical prexist called_assign(%bar)
ok 41 - lexical prexist called_assign(%baz)
ok 42 - lexical prexist called_assign(%quux, %bar)
ok 43 - lexical prexist called_assign(%flange)
ok 44 - right count
ok 45 - with $quux
ok 46 - with @quux
ok 47 - with %quux
ok 48 - right count
ok 49 - with name 0
ok 50 - with name 1
ok 51 - with name 2
ok 52 - right count
ok 53 - with name 0
ok 54 - with name 1
ok 55 - with name 2
ok 56 - package called_assign($T::bar)
ok 57 - package called_assign($T::baz)
ok 58 - package called_assign($T::quux, $T::bar)
ok 59 - package called_assign(@T::bar)
ok 60 - package called_assign(@T::baz)
ok 61 - package called_assign(@T::quux, @T::bar)
ok 62 - package called_assign(@T::flange)
ok 63 - package called_assign(%T::bar)
ok 64 - package called_assign(%T::baz)
ok 65 - package called_assign(%T::quux, %T::bar)
Dubious, test returned 5 (wstat 1280, 0x500)
Failed 7/72 subtests
Test Summary Report
-------------------
t\Devel-Caller.t (Wstat: 1280 Tests: 65 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 72 tests but ran 65.
Files=1, Tests=65, 2 wallclock secs ( 0.06 usr + 0.01 sys = 0.08 CPU)
Result: FAIL
One "maybe-hint": I do know nothing about Devel::Caller guts but the most common issue with 64bit Windows is not considering the fact that sizeof(*void) == 8 however sizeof(int) == 4 on 64bit MS Windows.
Thanks for any feedback.
--
kmx