bug-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #59759] spmatrix test fails on x86_64


From: Patrick Alken
Subject: [bug #59759] spmatrix test fails on x86_64
Date: Wed, 23 Dec 2020 17:08:39 -0500 (EST)
User-agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0

URL:
  <https://savannah.gnu.org/bugs/?59759>

                 Summary: spmatrix test fails on x86_64
                 Project: GNU Scientific Library
            Submitted by: psa
            Submitted on: Wed 23 Dec 2020 10:08:37 PM UTC
                Category: Runtime error
                Severity: 3 - Normal
        Operating System: 
                  Status: None
             Assigned to: None
             Open/Closed: Open
                 Release: 
         Discussion Lock: Any

    _______________________________________________________

Details:

On Fri, Aug 28, 2020 at 9:47 PM Patrick Alken
<patrick.alken@colorado.edu> wrote:
>
> Hello, I just committed a fix to the git repository. Would you be able
> to test the git version to see if its resolved on your platform?

Hi Patrick.

Here's the result for the tip of master:

make  check-TESTS
make[2]: Entering directory '/home/jwalton/Build-Scripts/gsl-2.6/specfunc'
make[3]: Entering directory '/home/jwalton/Build-Scripts/gsl-2.6/specfunc'
FAIL: test
============================================================================
Testsuite summary for gsl 2.6+
============================================================================
# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0
============================================================================
See specfunc/test-suite.log
============================================================================

$ cat gsl-2.6/specfunc/test-suite.log
=======================================
   gsl 2.6+: specfunc/test-suite.log
=======================================

# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: test
==========

FAIL: res[60]+0.0 [2351]
  expected: 6.7753780053831863e+71
  obtained: 6.7753780053832010e+71
  fracdiff: 1.0856927230202910e-15
  value not within tolerance of expected value
  6.775378005383201023e+71
FAIL: res[100]+0.0 [2353]
  expected: 2.9579660004912027e+118
  obtained: 2.9579660004911946e+118
  fracdiff: 1.3629435007875587e-15
  value not within tolerance of expected value
  2.957966000491194605e+118
FAIL: gsl_sf_hermite_array_deriv(23, 100, 0.75) [2354]
FAIL: Hermite Functions [2498]
FAIL: gsl_sf_laguerre_n_e(1e6+1, 2.5, 2.5, &r) [2991]
  expected: -4.8017961545391276e+05
  obtained: -4.8017961546181823e+05 ± 3.6891004271829821e-02
(rel=7.68275e-08)
  fracdiff: 8.2317878690294596e-12
 tolerance: 3.6379788070917130e-12
  value not within tolerance of expected value
  -4.801796154618182336e+05  3.689100427182982062e-02
FAIL: Laguerre Polynomials [3030]
FAIL test (exit status: 1)

==========

On Fri, Aug 28, 2020 at 9:47 PM Patrick Alken
<patrick.alken@colorado.edu> wrote:
>
> Hello, I just committed a fix to the git repository. Would you be able
> to test the git version to see if it's resolved on your platform?

My bad... I should have built with 'make -k' to get back to the spmatrix
test...

Here is the result of master for spmatrix. Things have improved:

$ cat gsl-2.6/spmatrix/test-suite.log
=======================================
   gsl 2.6+: spmatrix/test-suite.log
=======================================

# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: test
==========

FAIL: gsl_spmatrix_complex_float_scale[53,107](COO) [21671]
FAIL: gsl_spmatrix_complex_float_scale[53,107](CSC) [28476]
FAIL: gsl_spmatrix_complex_float_scale[53,107](CSR) [35281]
FAIL: gsl_spmatrix_complex_float_scale[40,20](COO) [65775]
FAIL: gsl_spmatrix_complex_float_scale[40,20](CSC) [66416]
FAIL: gsl_spmatrix_complex_float_scale[40,20](CSR) [67057]
FAIL: gsl_spmatrix_complex_float_scale[30,30](COO) [76375]
FAIL: gsl_spmatrix_complex_float_scale[30,30](CSC) [78176]
FAIL: gsl_spmatrix_complex_float_scale[30,30](CSR) [79977]
FAIL test (exit status: 1)

I see the same results when I backport 76f5f97e3389 to the GSL 2.6 tarball.

Attached are the test-suite logs from a 'make -k' from master. All of
the test results should be present.

Jeff


==============

Hi Everyone/Patrick,

A quick note since I'm making a testing pass on GSL...

Ubuntu 18.04 LTS x86_64 (fully patched) fails to link out of the box
due to a missing -lm. The symptom is undefined references for symbols
like sincos.

It may be a good idea to add an Autoconf test for:

* -lm, to avoid the link error on Linux
* -Wl,--as-needed to discard unneeded libraries

-lm goes in LIBS, and -Wl,--as-needed goes in AM_CFLAGS when available.

Autoconf will probably be the best in this case since -lm may be
missing on the target platform. I'm not sure how AIX, BSDs, OS X and
Solaris are going to act. I have not gotten that far in testing.

Jeff


==============

Hi Everyone/Patrick,

A quick testing pass with CFLAGS that include '-fsanitize=undefined
-fno-sanitize-recover=all' shows some undefined behavior in the
library or test suite. Several of them are listed below.

Some of them, like "runtime error: left shift of 1 by 31 places cannot
be represented in type 'int'...", are easy to fix. Just use "1U << 31"
since unsigned types do not suffer overflow. Unsigned types can wrap,
but that's well defined behavior in C/C++.

Jeff

====================

$ cat gsl-2.6/sys/test-suite.log
...
pow_int.c:34:10: runtime error: negation of -2147483648 cannot be
represented in type 'int'; cast to an unsigned type to negate this
value to itself
FAIL test (exit status: 1)

====================

$ cat gsl-2.6/specfunc/test-suite.log
...
FAIL: res[60]+0.0 [2351]
  expected: 6.7753780053831863e+71
  obtained: 6.7753780053832010e+71
  fracdiff: 1.0856927230202910e-15
  value not within tolerance of expected value
  6.775378005383201023e+71
FAIL: res[100]+0.0 [2353]
  expected: 2.9579660004912027e+118
  obtained: 2.9579660004911946e+118
  fracdiff: 1.3629435007875587e-15
  value not within tolerance of expected value
  2.957966000491194605e+118
FAIL: gsl_sf_hermite_array_deriv(23, 100, 0.75) [2354]
hermite.c:470:34: runtime error: signed integer overflow: 100028 *
100028 cannot be represented in type 'int'

====================

$ cat gsl-2.6/rng/test-suite.log
...
random.c:126:9: runtime error: signed integer overflow:
1508052306957066566 + 7775806152332120189 cannot be represented in
type 'long int'
FAIL test (exit status: 1)

====================

$ cat gsl-2.6/randist/test-suite.log
...
test.c:861:45: runtime error: left shift of 1 by 31 places cannot be
represented in type 'int'
FAIL test (exit status: 1)

====================

$ cat gsl-2.6/multifit_nlinear/test-suite.log
...
trs = levenberg-marquardt
solver = cholesky
solver = mcholesky
solver = qr
solver = svd
trs = levenberg-marquardt+accel
solver = cholesky
solver = mcholesky
solver = qr
solver = svd
trs = dogleg
solver = mcholesky
nielsen.c:98:7: runtime error: left shift of 4611686018427387904 by 1
places cannot be represented in type 'long int'
FAIL test (exit status: 1)

==================

Hi Everyone/Patrick,

A quick testing pass with CFLAGS that include '-fsanitize=address'
shows some memory errors in the library or test suite.

It appears to be limited to matrix class and testing.

=====================================
$ cat gsl-2.6/matrix/test-suite.log
...
==7058==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x7f59e568ab40 in __interceptor_malloc
(/usr/lib/x86_64-linux-gnu/libasan.so.4+0xdeb40)
    #1 0x556e12fc4a63 in gsl_vector_complex_alloc
/home/jwalton/Build-Scripts/gsl-2.6/vector/init_source.c:26
    #2 0x556e12eff45d in test_complex_ops
/home/jwalton/Build-Scripts/gsl-2.6/matrix/test_complex_source.c:753
    #3 0x556e12ef4ab8 in main
/home/jwalton/Build-Scripts/gsl-2.6/matrix/test.c:187
    #4 0x7f59e4bd6b96 in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x21b96)

Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x7f59e568ab40 in __interceptor_malloc
(/usr/lib/x86_64-linux-gnu/libasan.so.4+0xdeb40)
    #1 0x556e12fc40d3 in gsl_vector_complex_long_double_alloc
/home/jwalton/Build-Scripts/gsl-2.6/vector/init_source.c:26
    #2 0x556e12ef92bf in test_complex_long_double_ops
/home/jwalton/Build-Scripts/gsl-2.6/matrix/test_complex_source.c:716
    #3 0x556e12ef4ad6 in main
/home/jwalton/Build-Scripts/gsl-2.6/matrix/test.c:189
    #4 0x7f59e4bd6b96 in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x21b96)
...


==================

Hi Everyone/Patrick,

I'm building GSL master on Ubuntu 18.04.5 LTS i686 (fully patched).
The rub is, it is real 32-bit iron. It's an old Pentium III machine.

This looks like a new failure that's only present on 32-bit machines:

$ cat gsl-2.6/linalg/test-suite.log
====================================
   gsl 2.6: linalg/test-suite.log
====================================

# TOTAL: 1
# PASS:  0
# SKIP:  0
# XFAIL: 0
# FAIL:  1
# XPASS: 0
# ERROR: 0

.. contents:: :depth: 2

FAIL: test
==========

FAIL: LU_decomp rect3: ( 80,100)[64,65]: 4.12655062968342833e-05
4.12655062973499298e-05
 (4.12655062968342833e-05 observed vs 4.12655062973499298e-05
expected) [5515924]
FAIL: cholesky_decomp unscaled random: (147,147)[92,130]:
1.06636434789185456e-07   1.0663643479347229e-07
 (1.06636434789185456e-07 observed vs 1.0663643479347229e-07 expected)
[12196119]
FAIL: cholesky_decomp unscaled random: (147,147)[130,92]:
1.06636434789185456e-07   1.0663643479347229e-07
 (1.06636434789185456e-07 observed vs 1.0663643479347229e-07 expected)
[12201667]
FAIL: cholesky_decomp scaled random: (147,147)[92,130]:
1.06636434797499932e-07   1.0663643479347229e-07
 (1.06636434797499932e-07 observed vs 1.0663643479347229e-07 expected)
[12217728]
FAIL: cholesky_decomp scaled random: (147,147)[130,92]:
1.06636434797499932e-07   1.0663643479347229e-07
 (1.06636434797499932e-07 observed vs 1.0663643479347229e-07 expected)
[12223276]

I can send over full logs, if needed/wanted. But I am guessing you can
probably duplicate it locally on a 32-bit machine or vm.

When I encounter 32-bit machine failures, I find it helpful to run
UBsan. UBsan can sometimes pinpoint where size assumptions are made,
like a long being 64-bits (an initialization will fail) or overflows
on calculations.

Jeff





    _______________________________________________________

File Attachments:


-------------------------------------------------------
Date: Wed 23 Dec 2020 10:08:37 PM UTC  Name: config.log.zip  Size: 10KiB   By:
psa

<http://savannah.gnu.org/bugs/download.php?file_id=50558>

    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?59759>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]