dec-2001 libstdc++ outstanding

Loren James Rittle rittle@latour.rsch.comm.mot.com
Mon Jan 7 23:40:00 GMT 2002


>2001-12-13
>	New FreeBSD failures (somewhat) debugged
>	http://gcc.gnu.org/ml/libstdc++/2001-12/msg00228.html

There are two independent problems; the first of which affects
platforms beyond FreeBSD.  I've done little on the first problem
beyond the discussion thread since I'm not convinced it is a real
failure (i.e. the new test case seems too tight).

(1) FAIL: 27_io/istream_extractor_arith.cc execution test

is seen on many platforms at the moment.  It has something to do with
FP limits, expectations from the C library routines and what should
cause an overflow.  I confess that I'm out of my league since I avoid
FP math like the plague.  However, using published limits to guess
when low-level C library routines *must* overflow seems less than
ideal.  It seems like a red herring that the test is failing.  Either
that or we need to allow the libstdc++-v3 implementation to learn not
only the system header published limits for a port but also the real
limits on the C library implementation.

Note that ``18_support/numeric_limits.cc execution test'' is still
failing for, what might be, a related reason on i386-unknown-freebsd*.
Last time I undertook the effort, a manual review of the generated C++
limits header looked compatible with the system's C limit header.  The
failure has to do with more bits of precision being available in some
cases beyond that promised by the C limits header.

(2) FAIL: 26_numerics/complex_inserters_extractors.cc execution test
    Assertion failed: (iss.good()), function test_good,
    file 26_numerics/complex_inserters_extractors.cc, line 46.

    FAIL: 27_io/istream_sentry.cc execution test
    Assertion failed: (i == 3), function test02,
    file 27_io/istream_sentry.cc, line 79.

are only seen on *-unknown-freebsd5.0 (both alpha and i386) not
i386-unknown-freebsd4.*.

On i386-unknown-freebsd5.0, both of these tests started failing on Sep
15, 2001 against mainline.  Sep 14, 2001 did not bootstrap.  They
passed on Sep 13, 2001.

On alpha-unknown-freebsd5.0, both of these tests started failing
between Oct 25, 2001 and Nov 13, 2001 (no other successful bootstraps
were recorded between those dates) against the 3.0.X branch.

Un/fortunately, based on libstdc++-v3/ChangeLog entries, I see no
single patch that could have caused these failures.  Since the
machines in question are actually running beta OS code that is updated
randomly without the version number being updated, if I had to guess
based upon wtmp records, I'd say that Sep 14 didn't bootstrap because
the i386 machine was being upgraded that day.

Both of these tests fail due to a variation of this straightforward
construct:

float x;
std::istringstream iss([...]);
iss >> x;
VERIFY( iss.good() );

Impossible to debug with gdb 4.18 on i386.  Flow control very hard to
follow with gdb 4.18 on alpha.  Here is what I learned on alpha:
std::istringstream::operation>>() fails since _M_streambuf_state was 4
(_S_failbit).  I have no idea how that is possible, but that is what I
saw.  Any clues from any of the above information? before I attempt to
build mainline gdb in those environments.

Regards,
Loren



More information about the Libstdc++ mailing list