FreeBSD + Strings --> crash

Sat, 2 Nov 1996 20:13:21 +0100 (MET)


Hello folks,

perhaps somebody can help me with a strange error which occurs
when using Strings under FreeBSD.  (It does not occur on DJGPP,
EMX, or Linux.)

The error is triggered by the program

    Program Crash;

    Type
      WrkString = String ( 80 );

    Var
      S: WrkString;

    begin
      S:= 'A';
      if S = 'A' then
        writeln ( 'Hurra!' );
    end.

It compiles fine, the assembly code looks nice, but it gets a signal
"iot" (whatever that means) when running.  The error happens in the
RTS function _p_string() (see rts/rts-string.c):

    /* First arg is always a string or char */
    if (argument_mask & P_STR_FIRST_IS_CHAR)
      {
        c1   = va_arg (p, char);
        s1   = &c1;
        len1 = 1;
      }
    else
      {
        /* It's a string */
        s1   = va_arg (p, char *);
        len1 = va_arg (p, int);             /* <------ SIGIOT */
      }

When examining the variables with gdb, everything looks nice, too.
*p == 'A', etc.

A similar error happens when running the following variant:

    Program Crash;

    uses
      CPtr;

    Var
      C: Char value 'A';
      P: CharPtr;

    begin
      P:= @C;
      if P^ = 'A' then
        writeln ( 'Hurra!' );
    end.

It is essential that the type "CharPtr = ^Char" is exported by a
Unit, not declared in the program.

First, we get a warning about assignment of incompatible pointers for
"P:= @C" which is, of course, nonsense, but I can explain it with the
mechanism of forward references in pointer declarations.

Again, the assembler code looks fine, but when running the program,
I get a signal. :(

And again, the error does not occur with DJGPP, EMX, or Linux - only
with FreeBSD.

DOES ANYBODY HAVE AN IDEA?

Yours,

    Peter

      e-mail:  peter.gerwinski@uni-essen.de
home address:  D\"usseldorfer Str. 35, 45145 Essen, Germany
         WWW:  http://agnes.dida.physik.uni-essen.de/~peter/


Peter Gerwinski (peter@agnes.dida.physik.uni-essen.de)

HTML conversion by Lluís de Yzaguirre i Maura
Institut de Lingüística Aplicada - Universitat "Pompeu Fabra"
e-mail: de_yza@upf.es