chromatic wrote:
On Monday 30 June 2008 13:00:37 Will Coleda wrote:
# New Ticket Created by Will Coleda
# Please include the string: [perl #56484]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=56484 >
Any time we can produce a segfault, that's bad. CC'ing rt to get a ticket.
On Mon, Jun 30, 2008 at 3:55 PM, Ron Blaschke <[EMAIL PROTECTED]> wrote:
Given a regular x86 (GNU/Linux) box, using GCC 4.2.3, should the
following produce a working Parrot, using 64-bit ints?
perl Configure.pl --intval="long long int" --opcode="long long int"
If fails for me on C<make> while building PGE.
../../parrot -o PGE.pbc --output-pbc PGE.pir
../../parrot ../../runtime/parrot/library/PGE/Perl6Grammar.pir
--output=PGE/builtins_gen.pir PGE/builtins.pg
make[1]: *** [PGE.pbc] Segmentation fault
make[1]: *** Deleting file `PGE.pbc'
The resulting Parrot is partially usable, though.
$ ./parrot examples/pasm/hello.pasm
Hello World
Ron, do you get any warning messages during Configure? I see:
Figuring out how to pack() Parrot's types...Configure.pl: Unable to find a
functional packtype for intvalsize.
'q' failed: Invalid type 'q' in pack at config/auto/pack.pm
line 62.
Configure.pl: Unable to find a functional packtype for opcode_t_size.
'q' failed: Invalid type 'q' in pack at config/auto/pack.pm
line 62.
I'm only seeing this warning during Configure.
Determining some sizes...
Hmm, I see your chosen INTVAL isn't the same size as your pointers. Parrot
should still compile and run, but you may see a ton of warnings.
.............................................done.
But I'm using a "long long" Perl build. Sorry, forgot to mention that.
$ perl -V:ivtype
ivtype='long long';
There are also plenty of build warnings, such as:
src/headers.c: In function ‘Parrot_destroy_header_pools’:
src/headers.c:912: warning: cast to pointer from integer of different size
I suspect that fixing those would fix the segfaults.
I'm getting those too. Some pieces don't seem to fit together.
On my system, miniparrot crashes; can you provide a backtrace?
Here's the one from the PGE segfault above.
(gdb) backtrace 10
#0 0xb7deba88 in compact_pool (interp=0x8052040, pool=0x8052b60) at
src/gc/resources.c:450
#1 0xb7debe0d in Parrot_go_collect (interp=0x8052040) at
src/gc/resources.c:564
#2 0xb7c6aeae in Parrot_dod_ms_run (interp=0x8052040, flags=1) at
src/gc/dod.c:1141
#3 0xb7c6afe6 in Parrot_do_dod_run (interp=0x8052040, flags=1) at
src/gc/dod.c:1194
#4 0xb7c6cdb0 in more_traceable_objects (interp=0x8052040,
pool=0x8072cd8) at src/gc/smallobject.c:163
#5 0xb7c6ce8a in gc_ms_get_free_object (interp=0x8052040,
pool=0x8072cd8) at src/gc/smallobject.c:245
#6 0xb7c703a7 in new_pmc_header (interp=0x8052040, flags=1024) at
src/headers.c:322
#7 0xb7cc05e2 in get_new_pmc_header (interp=0x8052040, base_type=34,
flags=1024) at src/pmc.c:246
#8 0xb7cc012a in pmc_new (interp=0x8052040, base_type=34) at src/pmc.c:71
#9 0xb7ed0591 in Parrot_PMCProxy_nci_parents (interp=0x8052040,
pmc=0x8212938)
Here's one running "parrot examples/shootout/ack.pir".
(gdb) backtrace 10
#0 0xb69c19b5 in memcpy () from /lib/tls/i686/cmov/libc.so.6
#1 0xb7d14b4b in compact_pool (interp=0x8052040, pool=0x8052b60) at
src/gc/resources.c:473
#2 0xb7d14e0d in Parrot_go_collect (interp=0x8052040) at
src/gc/resources.c:564
#3 0xb7b93eae in Parrot_dod_ms_run (interp=0x8052040, flags=1) at
src/gc/dod.c:1141
#4 0xb7b93fe6 in Parrot_do_dod_run (interp=0x8052040, flags=1) at
src/gc/dod.c:1194
#5 0xb7b95db0 in more_traceable_objects (interp=0x8052040,
pool=0x8072cd8) at src/gc/smallobject.c:163
#6 0xb7b95e8a in gc_ms_get_free_object (interp=0x8052040,
pool=0x8072cd8) at src/gc/smallobject.c:245
#7 0xb7b993a7 in new_pmc_header (interp=0x8052040, flags=1024) at
src/headers.c:322
#8 0xb7be95e2 in get_new_pmc_header (interp=0x8052040, base_type=20,
flags=1024) at src/pmc.c:246
#9 0xb7be912a in pmc_new (interp=0x8052040, base_type=20) at src/pmc.c:71
Ron