Ah, this explains why I wasn't able to duplicate the bug on the SPARC box Sun loaned to us. It's a brand-new box, with the latest Perl, etc.

Is there a way we could get one of our Cage Cleaners access to the box you're testing on? Or duplicate the configuration? I'll check with Robert to see if we can get you access to the loaner Sun box (if we still have it).

Allison

Andy Dougherty wrote:
On Tue, 9 Jan 2007, Will Coleda via RT wrote:

The test file mentioned in the original report no longer exists: the structure of punie has changed somewhat in the last 11 months.

Can you please retest, and if you still have a problem, please open a new ticket.

I have no problem with closing the ticket, as I doubt the problem was
ever specific to punie anyway -- it's just punie and pge tended to
trigger it.

I'll pass along the results of my attempts to re-test, not because it
helps much, but just because it illustrates the sorts of frustrations I
kept running into whenever I tried to do anything with parrot.

For starters, it no longer even builds for me.  The build dies with

    perl5.6 tools/build/vtable_extend.pl
    "./include/parrot/parrot.h", line 150: missing operand
    "./include/parrot/parrot.h", line 168: missing operand
    "config/gen/platform/generic/math.h", line 11: missing operand
    "./include/parrot/platform_interface.h", line 17: missing operand
    "./include/parrot/exceptions.h", line 155: syntax error before or at: 
Parrot_jump_buff
    "./include/parrot/exceptions.h", line 155: cannot recover from previous 
errors
    cc: acomp failed for src/ops/core_ops.c
    src/ops/core_ops.c
    *** Error code 2
    make: Fatal error: Command failed for target `src/ops/core_ops.o'

After poking around quite a while, I think this is a perl-5.6 problem.
Earlier in the process, Configure.pl reported:

    Determining whether make is installed...
    step inter::make died during execution: Unknown open() mode '>&' at 
lib/Parrot/Configure/Step.pm line 584.

    at Configure.pl line 540

Although Configure.pl happily kept chugging away, even though it should
have detected that there was a fatal problem of some sort and bailed
out.  In similar situations, perl5's Configure script dies with a message

    I can't compile the test program.
    You have a BIG problem.  Shall I abort Configure? [y]

Without excessive looking through the 5.6.x, 5.8.x, and parrot ChangeLogs, it looks like Configure.pl is now using a form of the 3-arg open that doesn't work in 5.6.

So I thought I'd clean up and retry with 5.8.8.

    $ make distclean
    mksh: Fatal error in reader: Loop detected when expanding macro value
    `$(PERL) -e 'chdir shift @ARGV; system q{$(MAKE)}, @ARGV; exit $$? >> 8;''

Sigh.  I didn't even bother to try to fix this one.  Time to remove the
whole directory and unpack a fresh distribution.  Retry with perl-5.8.8.

Nope, that fails 10 minutes later with

    src/inter_call.c
    "./include/parrot/sub.h", line 90: warning: integer overflow detected: op 
"<<"
    "src/inter_call.c", line 255: void function cannot return value
    "src/inter_call.c", line 285: void function cannot return value
    "src/inter_call.c", line 1077: warning: statement not reached
    cc: acomp failed for src/inter_call.c
    *** Error code 2
    make: Fatal error: Command failed for target `src/inter_call.o'

Guessing that the following is probably what was intendend (though the
"documentation" of all the relevant function calls makes this less than
obvious):

--- parrot-current/src/inter_call.c     Mon Jan  8 19:15:19 2007
+++ parrot-andy/src/inter_call.c        Tue Jan  9 11:06:05 2007
@@ -251,8 +251,10 @@
             else
                 UVal_pmc(st->val) = va_arg(*ap, PMC*);
- if (st->src.sig & PARROT_ARG_FLATTEN)
-                return make_flattened(interp, st, UVal_pmc(st->val));
+            if (st->src.sig & PARROT_ARG_FLATTEN) {
+               make_flattened(interp, st, UVal_pmc(st->val));
+               return;
+           }
             break;
     }
     st->src.mode |= CALL_STATE_NEXT_ARG;
@@ -281,8 +283,10 @@
             UVal_pmc(st->val) = constant ? st->src.ctx->constants[idx]->u.key
                 : CTX_REG_PMC(st->src.ctx, idx);
- if (st->src.sig & PARROT_ARG_FLATTEN)
-                return make_flattened(interp, st, UVal_pmc(st->val));
+            if (st->src.sig & PARROT_ARG_FLATTEN) {
+               make_flattened(interp, st, UVal_pmc(st->val));
+               return;
+           }
             break;
     }
     st->src.mode |= CALL_STATE_NEXT_ARG;

I then proceed to type 'make' again.  Eventually, it dies with

../../parrot pgc.pir  --output=PGE/builtins_gen.pir PGE/builtins.pg
set_string_keyed() not implemented in class 'Integer'
current instr.: 'parrot;PGE::P6Regex;parse_subrule' pc 8442 
(compilers/pge/PGE/P6Regex.pir:678)
called from Sub 'parrot;PGE::OPTable;parse' pc 2252 
(compilers/pge/PGE/OPTable.pir:519)
called from Sub 'parrot;PGE::Grammar;regex' pc 6554 
(compilers/pge/PGE/P6Regex.pir:143)
called from Sub 'parrot;PGE::P6Regex;compile_p6regex' pc 6463 
(compilers/pge/PGE/P6Regex.pir:95)
called from Sub 'parrot;PGE::P6Grammar::Compiler;__onload' pc 45 
(runtime/parrot/library/PGE/P6Grammar.pir:80)
called from Sub 'main' pc 3 (pgc.pir:48)
*** Error code 1
make: Fatal error: Command failed for target `PGE.pbc'
Current working directory /home/doughera/src/parrot/parrot-andy/compilers/pge
*** Error code 1
make: Fatal error: Command failed for target `compilers.dummy'

Not surprisingly, punie doesn't work:

    $ cd languages/punie; make
    ../../parrot ../../compilers/pge/pgc.pir --output=lib/punie_grammar_gen.pir 
lib/punie.pg
    Couldn't find file 'PGE.pbc'
    current instr.: 'parrot;PGE::P6Grammar::Compiler;__onload' pc 22 
(runtime/parrot/library/PGE/P6Grammar.pir:71)
    called from Sub 'main' pc 3 (../../compilers/pge/pgc.pir:48)
    *** Error code 1
    make: Fatal error: Command failed for target `lib/PunieGrammar.pbc'

All of which looks vaguely similar to the last time I tried to get
anywhere with parrot, though I could have guessed wrong in the patch
above.

So anyway, go ahead and close the ticket.

Reply via email to