In article <[EMAIL PROTECTED]> of Tue, 19 Mar 2002 
16:54:29 in , Gerrit P. Haase <[EMAIL PROTECTED]> writes
> Walter,
>Dienstag, 19. Mrz 2002 16:51:59, du schriebst:
>I did also remade cgrammer.o and then all works ok.  I guess some
>problem with timing because I used -j3 for up to three parallel make
>But I still get segmentation faults during the test run.
I think I was confused by your original report as a result of your usage 
of -j3. I think you may have hit a double free problem, I already fell 
over in win32 environments. It is bizarrely hidden in most environments.

Try the following:

D:\splint\splint-\lib> type extract.h
int vsprintf (void) /*@warn bufferoverflowhigh "Use vsnprintf instead"@*/;

D:\splint\splint-\lib> which splindel

D:\splint\splint-\lib> which splint

D:\splint\splint-\lib> dir c:\wfb\bin\splin*.exe

  Volume in drive C has no label
  Volume Serial Number is 321E-13FD
  Directory of C:\wfb\bin

SPLINDEL EXE     1,318,912  10/02/02  22:35 splindel.exe
SPLINT   EXE     1,769,472  13/03/02  14:39 Splint.exe
          2 file(s)      3,088,384 bytes
          0 dir(s)       16,870.80 MB free

splindel.exe is what was delivered. I built splint with different options
with the bug fix below.  I believe David Evans has a different fix on CVS.
Ignore the fact that the failure point varies.  The cause is the same
if you are hitting what I hit.

D:\splint\splint-\lib> splindel -nof -nolib +impconj extract.h
Splint --- 11 Feb 2002

Finished checking --- no warnings
*** Segmentation Violation
*** Location (not trusted): extract.h(2,1)
*** Last code point: C:\splint-\src\context.c(4233)
*** Previous code point: C:\splint-\src\context.c(4231)
*** Please report bug to [EMAIL PROTECTED]

D:\splint\splint-\lib> splint -nof -nolib +impconj extract.h
Splint --- 11 Feb 2002

Finished checking --- no warnings


D:\splint\splint-\src> diff -c warnClause.c.0 warnClause.c
*** warnClause.c.0      Tue Jan  8 21:20:10 2002
--- warnClause.c        Wed Mar 13 09:47:04 2002
*** 44,51 ****
--- 44,56 ----
   extern warnClause warnClause_create (lltok tok, flagSpec flag, cstring msg)
     warnClause res;
+ #if 1
     res = warnClause_createAux (lltok_stealLoc (tok), flag, msg);
     lltok_release (tok);
+ #else
+   lltok_release (tok);
+   res = warnClause_createAux (fileloc_undefined, flag, msg);
+ #endif
     return res;


The old code is in the #if 1 branch; the fix in #else.

Walter Briscoe

Reply via email to