[comp.lang.perl] Problem with Perl 4.010 on Sys V 88K

pierson@encore.com (Dan L. Pierson) (06/18/91)

I've so far been unable to get Perl 4.0 to pass its test suite on our
Series 91 machines (Motorola 88K, 88Open BCS/OCS System V.3).  Perl
3.43 works just fine on the same machines.

The following test case causes a "panic: cmd_exec.":

    for (split(' ','a b c d e')) {
	    $foo .= $_;
    }

A -D14 trace is:

    EXECUTING...

    1   EXPR	(41e530)	r41b998	t0	a0	n41e4b0	cs0
    1   E! ASSIGN (41b998) 2 args:
    1   E! A: 1.LEXPR =>
    1   E! A: LARRAY (41cf20) 1 args:
    1   E! A: L: 1.NULL = ''
    1   E! A: LARRAY RETURNS ""
    1   E! A: 1.LEXPR = ''
    1   E! A: 2.EXPR =>
    1   E! A: LIST (41cec0) 1 args:
    1   E! A: L: 1.EXPR =>
    1   E! A: L: SPLIT (41e940) 3 args:
    1   E! A: L: S: 1.SINGLE = 'a b c d e'
    1   E! A: L: S: 2.NULL = ''
    1   E! A: L: S: 3.NULL = ''
    1   E! A: L: S: ITEM (41cde0) 1 args:
    1   E! A: L: S: I: 1.SINGLE = ' '
    1   E! A: L: S: ITEM RETURNS " "
    1   E! A: L: S: 2.SPAT /\s+/
    1   E! A: L: SPLIT RETURNS 5 ARGS ("a",...,"e")
    1   E! A: L: 1.EXPR = 'e'
    1   E! A: LIST RETURNS 5 ARGS ("a",...,"e")
    1   E! A: 2.EXPR = 'e'
    1   E! ASSIGN RETURNS ("5")
    1   WHILE	(41e4b0)	r41cee0	t41cec0	a41e4f0	n0	cs0
    1   W! (Pushing label #0 )
    0   W! t_ NULL	(41cec0)	r10065	t0	a41a7c8	n41a818	cs0
    panic: cmd_exec.

Some information from debugging:

    1. longjmp() is never called.

    2. cmd_exec calls itself once.  This call gets its cmdparam from
       cmd->ucmd.ccmd.cc_true which looks like this on entry to
       cmd_exec:

	cdb >*cmd
	0x41cec0 struct cmd {
	    c_next = 0x41a818;
	    c_expr = 0x10065;
	    c_head = 0;
	    c_short = 0x41e940;
	    c_stab = 0x1;
	    c_spat = 0x10000;
	    c_label = "^^@";
	    ucmd = union ucmd {
		acmd = struct acmd {
		    ac_stab = 0;
		    ac_expr = 0x41a7c8;
		} acmd;
		ccmd = struct ccmd {
		    cc_true = <null pointer>;
		    cc_alt = "";
		} ccmd;
		scmd = struct scmd {
		    sc_next = 0;
		    sc_offset = 65;
		    sc_max = -22584;
		} scmd;
	    } ucmd;
	    c_slen = 1;
	    c_flags = 57;
	    c_stash = <null pointer>;
	    c_filestab = 0x41a6d8;
	    c_line = 0;
	    c_type = '^@' (0);
	}

       It is (the bogus argument to?) this single recursive call that
       causes the panic.

Does anyone have a clue to what's wrong?
--

                                            dan

In real life: Dan Pierson, Encore Computer Corporation, Research
UUCP: {talcott,linus,necis,decvax}!encore!pierson
Internet: pierson@encore.com