Tcl Source Code

View Ticket
Login
Ticket UUID: 1733467
Title: make test failures on IRIX
Type: Bug Version: obsolete: 8.5a6
Submitter: fridolin Created on: 2007-06-08 13:27:49
Subsystem: 48. Number Handling Assigned To: kennykb
Priority: 8 Severity:
Status: Closed Last Modified: 2008-03-30 12:04:39
Resolution: Fixed Closed By: kennykb
    Closed on: 2008-03-30 05:04:39
Description:
Here is the output of make test on IRIX/mips.
Tcl Version is 8.5a6.

all.tcl:        Total   20489   Passed  19468   Skipped 996     Failed  25
Sourced 136 Test Files.
Files with failing tests: clock.test mathop.test
Number of tests skipped for each constraint:
        1       !ieeeFloatingPoint
        2       95or98
        4       dontCopyLinks
        51      emptyTest
        2       hasIsoLocale
        29      knownBug
        1       largefileSupport
        100     localeRegexp
        11      longIs64bit
        14      macosxFileAttr
        13      memory
        40      nonPortable
        5       notNetworkFilesystem
        8       nt
        4       readonlyAttr
        1       testWinCPUID
        7       testaccessproc
        1       testexprparser && !ieeeFloatingPoint
        8       testopenfilechannelproc
        7       teststatproc
        121     testthread
        1       testwinclock
        21      testwordend
        3       threaded
        3       unknownFailure
        522     win
        5       xdev

Test files exiting with errors:  

  binary.test

  expr-old.test

  expr.test

expr-old.test
Test file error: child killed: segmentation violation
expr.test
Test file error: child killed: segmentation violation




==== mathop-1.12 compiled +: errors FAILED
==== Contents of test case:

        + nan 0
    
---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== mathop-1.12 FAILED



==== mathop-1.14 compiled +: errors FAILED
==== Contents of test case:

        + 0 nan
    
---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== mathop-1.14 FAILED



==== mathop-1.30 interpreted +: errors FAILED
==== Contents of test case:

        $op nan 0
    
---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== mathop-1.30 FAILED



==== mathop-1.32 interpreted +: errors FAILED
==== Contents of test case:

        $op 0 nan
    
---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== mathop-1.32 FAILED



==== mathop-2.12 compiled *: errors FAILED
==== Contents of test case:

        * nan 0
    
---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== mathop-2.12 FAILED



==== mathop-2.14 compiled *: errors FAILED
==== Contents of test case:

        * 0 nan
    
---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== mathop-2.14 FAILED



==== mathop-2.30 interpreted *: errors FAILED
==== Contents of test case:

        $op nan 0
    
---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== mathop-2.30 FAILED



==== mathop-2.32 interpreted *: errors FAILED
==== Contents of test case:

        $op 0 nan
    
---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== mathop-2.32 FAILED



==== mathop-3.21 compiled !: error FAILED
==== Contents of test case:

        ! NaN
    
---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== mathop-3.21 FAILED



==== mathop-3.22 interpreted !: error FAILED
==== Contents of test case:

        $op NaN
    
---- Test completed normally; Return code was: 0
---- Return code should have been one of: 1
==== mathop-3.22 FAILED



==== mathop-4.12 compiled ~: errors FAILED
==== Contents of test case:

        ~ NaN
    
---- Result was:
can't use floating-point value as operand of "~"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "~"
==== mathop-4.12 FAILED



==== mathop-4.24 interpreted ~: errors FAILED
==== Contents of test case:

        $op NaN
    
---- Result was:
can't use floating-point value as operand of "~"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "~"
==== mathop-4.24 FAILED



==== mathop-6.12 compiled &: errors FAILED
==== Contents of test case:

        & nan 0
    
---- Result was:
can't use floating-point value as operand of "&"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "&"
==== mathop-6.12 FAILED



==== mathop-6.14 compiled &: errors FAILED
==== Contents of test case:

        & 0 nan
    
---- Result was:
can't use floating-point value as operand of "&"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "&"
==== mathop-6.14 FAILED



==== mathop-6.30 interpreted &: errors FAILED
==== Contents of test case:

        $op nan 0
    
---- Result was:
can't use floating-point value as operand of "&"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "&"
==== mathop-6.30 FAILED



==== mathop-6.32 interpreted &: errors FAILED
==== Contents of test case:

        $op 0 nan
    
---- Result was:
can't use floating-point value as operand of "&"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "&"
==== mathop-6.32 FAILED



==== mathop-7.12 compiled |: errors FAILED
==== Contents of test case:

        | nan 0
    
---- Result was:
can't use floating-point value as operand of "|"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "|"
==== mathop-7.12 FAILED



==== mathop-7.14 compiled |: errors FAILED
==== Contents of test case:

        | 0 nan
    
---- Result was:
can't use floating-point value as operand of "|"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "|"
==== mathop-7.14 FAILED



==== mathop-7.30 interpreted |: errors FAILED
==== Contents of test case:

        $op nan 0
    
---- Result was:
can't use floating-point value as operand of "|"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "|"
==== mathop-7.30 FAILED



==== mathop-7.32 interpreted |: errors FAILED
==== Contents of test case:

        $op 0 nan
    
---- Result was:
can't use floating-point value as operand of "|"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "|"
==== mathop-7.32 FAILED



==== mathop-8.12 compiled ^: errors FAILED
==== Contents of test case:

        ^ nan 0
    
---- Result was:
can't use floating-point value as operand of "^"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "^"
==== mathop-8.12 FAILED



==== mathop-8.14 compiled ^: errors FAILED
==== Contents of test case:

        ^ 0 nan
    
---- Result was:
can't use floating-point value as operand of "^"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "^"
==== mathop-8.14 FAILED



==== mathop-8.30 interpreted ^: errors FAILED
==== Contents of test case:

        $op nan 0
    
---- Result was:
can't use floating-point value as operand of "^"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "^"
==== mathop-8.30 FAILED



==== mathop-8.32 interpreted ^: errors FAILED
==== Contents of test case:

        $op 0 nan
    
---- Result was:
can't use floating-point value as operand of "^"
---- Result should have been (exact matching):
can't use non-numeric floating-point value as operand of "^"
==== mathop-8.32 FAILED
User Comments: kennykb added on 2008-03-30 12:04:39:
Logged In: YES 
user_id=99768
Originator: NO

I think that the changes I committed today to use isnan()
when it is available in preference to the ((d) != (d)) hack
should resolve this issue.

fridolin added on 2007-06-25 16:42:10:

File Added - 234439: test.log

Logged In: YES 
user_id=13583
Originator: YES

I pulled the latest patches from CVS (-> CVS HEAD) and run `make test' again.
It's getting worse. I'll attach the file test.log.
File Added: test.log

fridolin added on 2007-06-11 22:29:20:
Logged In: YES 
user_id=13583
Originator: YES

Bad news: it -OPT:IEEE_NaN_inf=ON makes no difference.
I tried -O0 as well.

> Can you confirm that you're using the SGI 
> native 'cc' and not 'gcc'?
> Otherwise, I'm heading down a false path.


I am using the native cc.

kennykb added on 2007-06-11 20:59:54:
Logged In: YES 
user_id=99768
Originator: NO

I think that some spelunking on the 'Net may 
have led me to a solution.

Can you confirm that you're using the SGI 
native 'cc' and not 'gcc'?
Otherwise, I'm heading down a false path.

If you are using the native CC, I suspect 
that we've run into an
over-aggressive optimization.  
The native 'cc' looks at the usual
test for "Not a Number:"

     if ((x) != (x)) { /* Not a Number */ ... }

and optimizes it away completely (reasoning 
that every number equals itself).

This particular optimization causes trouble in a number of
places, and SGI has provided a compiler option to turn it
off.  Please attempt a build (from 'make distclean') with

env CC=cc CFLAGS=-OPT:IEEE_NaN_inf=ON path/to/configure etc...

in place of just

path/to/configure etc...

That should ask the compiler to "pretty please, give us IEEE
compliant arithmetic." 
(Reference: http://preview.tinyurl.com/2eo66u)

If this fixes the problem, then I'll put the CFLAGS into
tcl.m4; if it fails to fix the problem, then we'll need to
investigate further.

fridolin added on 2007-06-09 17:38:13:
Logged In: YES 
user_id=13583
Originator: YES

Here are the details about the clock.test failure:

==== clock-50.2 format / scan -2 as a local time FAILED
==== Contents of test case:

    if {[catch {
        clock scan  [clock format -2 -format %Y%m%d%H%M%S -timezone :localtime]  -format %Y%m%d%H%M%S -timezone :localtime
    } result]} {
        if { [regexp " too large" $result] } {
            set result -2
        }
    }
    set result

---- Result was:
-1
---- Result should have been (exact matching):
-2
==== clock-50.2 FAILED

fridolin added on 2007-06-09 17:26:50:
Logged In: YES 
user_id=13583
Originator: YES

here is the output

...[what looks good is cutted...but then]...
++++ binary-39.10 PASSED
---- binary-40.3 start
make: *** [test] Segmentation fault (core dumped)

$ dbx ./tcltest core
(dbx) where
>  0 Tcl_PrintDouble(interp = 0x30303030, value = 1.3980432860952889e-76, dst = 0x30303031) ["/T/tools/unix/build/tcl/tcl8.5a6/generic/tclUtil.c":2028, 0x5ff9d838]
   1 <Unknown>() [< unknown >, 0x30303030]


I hope this helps. Ask me if you need more.

kennykb added on 2007-06-08 23:38:33:
Logged In: YES 
user_id=99768
Originator: NO

I'm going to have a difficult time testing this one, not having an IRIX machine to test on.

Most troubling are the tests exiting with errors - there's a pointer smash in there somewhere.

Can you make a build with --enable-symbols, and then do

make TESTFLAGS='-file binary.test -verbose btefp -singleproc 1'

and then examine the core dump to at least get me a stack trace?  The output of the test should also be informative, since it'll indicate the precise test that has aborted.

Attachments: