[gnu.g++.lib.bug] Failed assert libg++ 1.34.

gordon%stats.ucl.ac.uk@NSS.CS.UCL.AC.UK (Gordon Joly Statistics UCL) (03/12/89)

On a SUN-3/160, running SunOS 3.4, g++1.34 (made with gcc 1.34),
"config.gcc sun3" for both, test10 of the test suite gives an error.

% test10
five random ACG integers:
1525072166 1954057046 3406008937 226879594 4107049426 
five random MLCG integers:
1341853672 83475514 936613571 888739672 2097844081 
Binomial r1( 100, 0.50, &gen1) ...
five samples:
Failed assertion result.d < 1.0 && result.d >= 0 at line 77 of `../g++-include/RNG.h'.
IOT trap

This bug has also turned up in at least one user program.
Gordon.

Surface mail: Dr. G.C.Joly, Department of Statistical Science,
      University College London, Gower Street, LONDON WC1E 6BT, U.K.
E-mail:  					   | Tel: +44 1 387 7050
 JANET (U.K. network) gordon@uk.ac.ucl.stats       |      extension 3636
       (Arpa/Internet form: gordon@stats.ucl.ac.uk)| FAX: +44 1 387 8057
Relays: ARPA @nss.cs.ucl.ac.uk                     |
        EAN: @ean-relay.ac.uk                      |
	CSNET: %nss.cs.ucl.ac.uk@relay.cs.net      |
        BITNET: %ukacrl.bitnet@cunyvm.cuny.edu, @ac.uk
        EARN: @ukacrl.bitnet, @AC.UK, @uk.ac.earn-relay
By uucp/Usenet: ....!uunet!mcvax!ukc!stats.ucl.ac.uk!gordon

dl@ROCKY.OSWEGO.EDU (Doug Lea) (03/12/89)

On Sun3's, the file RNG.cc *must* be compiled with the -ffloat-store 
option. A comment in Dirk Grunwald's RNG.cc code explains why.
My apologies for not mentioning this anywhere in the installation
instructions.

While I am at it, here are the other known bugs in libg++-1.34.0:

1. CursesWindow (test23) fails on Sun3's and Sun4's under X-windows,
but not under terminal emulation or remote logins.  I have not yet
discovered why.

2. I incorrectly modified etc/Patmain.cc. Here are the diffs:
R>diff -2rcN Patmain.cc~ Patmain.cc
*** Patmain.cc~	Thu Mar  9 06:51:52 1989
--- Patmain.cc	Fri Mar 10 06:39:50 1989
***************
*** 15,19 ****
     else {
        if ( ! freopen ( argv [ 1 ], "r", stdin ) ) {
!          perror ( argv [ 0 ] ), return;
        }
        Patricia_Trie Trie;
--- 15,19 ----
     else {
        if ( ! freopen ( argv [ 1 ], "r", stdin ) ) {
!          perror ( argv [ 0 ] ); return;
        }
        Patricia_Trie Trie;
***************
*** 26,30 ****
        fclose ( stdin );
        if ( ! freopen ( argv [ 2 ], "r", stdin ) ) {
!          perror ( argv [ 0 ] ), return;
        }
  
--- 26,30 ----
        fclose ( stdin );
        if ( ! freopen ( argv [ 2 ], "r", stdin ) ) {
!          perror ( argv [ 0 ] ); return;
        }

3. etc/gperf/stderr.cc contains improper intitializations. Here are the diffs: 

R>diff -2rcN stderr.cc~ stderr.cc
*** stderr.cc~	Fri Mar  3 06:11:38 1989
--- stderr.cc	Sat Mar 11 12:36:27 1989
***************
*** 23,29 ****
  #include "stderr.h"
  
! Stderr::Stderr (void): Program_Name ("") { }
  
! Stderr::Stderr (char *Prog_Name): Program_Name (Prog_Name) { }
  
  void 
--- 23,29 ----
  #include "stderr.h"
  
! Stderr::Stderr (void)  { Program_Name = ""; }
  
! Stderr::Stderr (char *Prog_Name)  { Program_Name = Prog_Name; }
  
  void