[parrot-tickets] [Parrot] #254: t/native_pbc/number.t: New failure on some platforms

Reini Urban rurban at x-ray.at
Mon Feb 2 12:56:19 UTC 2009


2009/2/1 Parrot <parrot-tickets at lists.parrot.org>:
> #254: t/native_pbc/number.t:  New failure on some platforms
> ---------------------+------------------------------------------------------
>  Reporter:  jkeenan  |       Owner:  rurban
>     Type:  bug      |      Status:  assigned
>  Priority:  normal   |   Milestone:
> Component:  core     |     Version:
>  Severity:  high     |    Keywords:
>     Lang:           |       Patch:
>  Platform:  darwin   |
> ---------------------+------------------------------------------------------
>
> Comment(by Infinoid):
>  Replying to [comment:9 jkeenan]:
>  > rurban, myself and others worked out some of these problems on IRC
>  yesterday, so that the tests are now passing on Darwin/PPC.  Could we get
>  some test results from x86_64 or from compilation with ICC?
>
>  Gcc on x86-64 fails:
>
>  {{{
>  t/native_pbc/number....1/3
>  #   Failed test 'i386 double float 32 bit opcode_t'
>  #   at t/native_pbc/number.t line 88.
>  # Exited with error code: [SIGNAL 11]
>  # Received:
>  # PackFile_unpack segment 'BYTECODE_t/op/number_1.pasm' directory length
>  188 length in file 188 needed 186 for unpack
>  # PackFile_unpack segment 'FIXUP_t/op/number_1.pasm' directory length 0
>  length in file 0 needed 4 for unpack
>  # PackFile_unpack segment 'CONSTANT_t/op/number_1.pasm' directory length 1
>  length in file 1 needed 10610 for unpack
>  # PackFile_unpack segment 'PIC_idx_t/op/number_1.pasm' directory length 0
>  length in file 0 needed 4 for unpack
>  # PackFile_unpack segment 'BYTECODE_t/op/number_1.pasm_DB' directory
>  length 0 length in file 0 needed 4 for unpack

I've found the root-cause for the x86-64 problem loading 32-bit pbc's.
This is with any compiler, gcc, sunpro cc or intel ICC on 64-bit.

The problem is the ALIGN_16 macro, but even with staring at it for hours,
it doesn't make sense to my why it fails on 64bit and works on 32bit.

Attached is my interim patch with lots of debugging code if someone on
64bit wants
to debug it. I didn't test this yet on 64-bit.

  $ make pdump; ./pdump t/native_pbc/integer_1.pbc

is the failing test. The cursor is not aligned properly with the
current ALIGN_16
roundup macro.
Maybe someone has an easy explanation.
-- 
Reini Urban
http://phpwiki.org/              http://murbreak.at/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tt254-packfile-align.patch
Type: application/octet-stream
Size: 10436 bytes
Desc: not available
Url : http://lists.parrot.org/pipermail/parrot-dev/attachments/20090202/6e7f0797/attachment.obj 


More information about the parrot-dev mailing list