Source: linbox
Version: 1.4.2-4
Severity: normal

Hi,

Building the package with address sanitizer enabled triggers a buffer
overflow in the test-rank-md testcase and memory leaks in the
test-regression test case.

This can be reproduced by using DEB_BUILD_OPTIONS="sanitize=+address"

Log:

> PASS: test-commentator
> PASS: test-det
> PASS: test-frobenius
> PASS: test-rational-solver
> PASS: test-rational-solver-adaptive
> PASS: test-rank-u32
> PASS: test-rank-Int
> /bin/bash ../libtool  --tag=CXX   --mode=link g++  -g -O2 
> -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. -fsanitize=address 
> -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security ../linbox/liblinbox.la -fsanitize=address 
> -Wl,-z,relro -Wl,-z,now -fopenmp -o test-rank-md test-rank-md.o -lntl -lmpfr  
> -liml   -fopenmp -lblas -llapack -lgivaro -lgmpxx -lgmp  -fsanitize=address 
> -Wl,-z,relro -Wl,-z,now -fopenmp 
> libtool: link: g++ -g -O2 -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. 
> -fsanitize=address -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now 
> -fopenmp -o .libs/test-rank-md test-rank-md.o -fopenmp -fsanitize=address 
> -Wl,-z -Wl,relro -Wl,-z -Wl,now -fopenmp  ../linbox/.libs/liblinbox.so -lntl 
> -lmpfr -liml -lblas -llapack -lgivaro -lgmpxx -lgmp -fopenmp
> PASS: test-cra
> FAIL: test-rank-md
> /bin/bash ../libtool  --tag=CXX   --mode=link g++  -g -O2 
> -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. -fsanitize=address 
> -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security ../linbox/liblinbox.la -fsanitize=address 
> -Wl,-z,relro -Wl,-z,now -fopenmp -o test-ntl-lzz_pex test-ntl-lzz_pex.o -lntl 
> -lmpfr  -liml   -fopenmp -lblas -llapack -lgivaro -lgmpxx -lgmp  
> -fsanitize=address -Wl,-z,relro -Wl,-z,now -fopenmp 
> libtool: link: g++ -g -O2 -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. 
> -fsanitize=address -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now 
> -fopenmp -o .libs/test-ntl-lzz_pex test-ntl-lzz_pex.o -fopenmp 
> -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now -fopenmp  
> ../linbox/.libs/liblinbox.so -lntl -lmpfr -liml -lblas -llapack -lgivaro 
> -lgmpxx -lgmp -fopenmp
> /bin/bash ../libtool  --tag=CXX   --mode=link g++  -g -O2 
> -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. -fsanitize=address 
> -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security ../linbox/liblinbox.la -fsanitize=address 
> -Wl,-z,relro -Wl,-z,now -fopenmp -o test-charpoly test-charpoly.o -lntl 
> -lmpfr  -liml   -fopenmp -lblas -llapack -lgivaro -lgmpxx -lgmp  
> -fsanitize=address -Wl,-z,relro -Wl,-z,now -fopenmp 
> PASS: test-ntl-lzz_pex
> libtool: link: g++ -g -O2 -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. 
> -fsanitize=address -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now 
> -fopenmp -o .libs/test-charpoly test-charpoly.o -fopenmp -fsanitize=address 
> -Wl,-z -Wl,relro -Wl,-z -Wl,now -fopenmp  ../linbox/.libs/liblinbox.so -lntl 
> -lmpfr -liml -lblas -llapack -lgivaro -lgmpxx -lgmp -fopenmp
> PASS: test-charpoly
> /bin/bash ../libtool  --tag=CXX   --mode=link g++  -g -O2 
> -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. -fsanitize=address 
> -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security ../linbox/liblinbox.la -fsanitize=address 
> -Wl,-z,relro -Wl,-z,now -fopenmp -o test-toeplitz-det test-toeplitz-det.o 
> -lntl -lmpfr  -liml   -fopenmp -lblas -llapack -lgivaro -lgmpxx -lgmp  
> -fsanitize=address -Wl,-z,relro -Wl,-z,now -fopenmp 
> libtool: link: g++ -g -O2 -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. 
> -fsanitize=address -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now 
> -fopenmp -o .libs/test-toeplitz-det test-toeplitz-det.o -fopenmp 
> -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now -fopenmp  
> ../linbox/.libs/liblinbox.so -lntl -lmpfr -liml -lblas -llapack -lgivaro 
> -lgmpxx -lgmp -fopenmp
> PASS: test-toeplitz-det
> /bin/bash ../libtool  --tag=CXX   --mode=link g++  -g -O2 
> -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. -fsanitize=address 
> -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security ../linbox/liblinbox.la -fsanitize=address 
> -Wl,-z,relro -Wl,-z,now -fopenmp -o test-blas-matrix test-blas-matrix.o -lntl 
> -lmpfr  -liml   -fopenmp -lblas -llapack -lgivaro -lgmpxx -lgmp  
> -fsanitize=address -Wl,-z,relro -Wl,-z,now -fopenmp 
> libtool: link: g++ -g -O2 -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. 
> -fsanitize=address -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now 
> -fopenmp -o .libs/test-blas-matrix test-blas-matrix.o -fopenmp 
> -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now -fopenmp  
> ../linbox/.libs/liblinbox.so -lntl -lmpfr -liml -lblas -llapack -lgivaro 
> -lgmpxx -lgmp -fopenmp
> PASS: test-blas-matrix
> /bin/bash ../libtool  --tag=CXX   --mode=link g++  -g -O2 
> -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. -fsanitize=address 
> -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security ../linbox/liblinbox.la -fsanitize=address 
> -Wl,-z,relro -Wl,-z,now -fopenmp -o test-regression test-regression.o -lntl 
> -lmpfr  -liml   -fopenmp -lblas -llapack -lgivaro -lgmpxx -lgmp  
> -fsanitize=address -Wl,-z,relro -Wl,-z,now -fopenmp 
> libtool: link: g++ -g -O2 -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. 
> -fsanitize=address -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now 
> -fopenmp -o .libs/test-regression test-regression.o -fopenmp 
> -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now -fopenmp  
> ../linbox/.libs/liblinbox.so -lntl -lmpfr -liml -lblas -llapack -lgivaro 
> -lgmpxx -lgmp -fopenmp
> FAIL: test-regression
> /bin/bash ../libtool  --tag=CXX   --mode=link g++  -g -O2 
> -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. -fsanitize=address 
> -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security ../linbox/liblinbox.la -fsanitize=address 
> -Wl,-z,relro -Wl,-z,now -fopenmp -o test-solve test-solve.o -lntl -lmpfr  
> -liml   -fopenmp -lblas -llapack -lgivaro -lgmpxx -lgmp  -fsanitize=address 
> -Wl,-z,relro -Wl,-z,now -fopenmp 
> libtool: link: g++ -g -O2 -fdebug-prefix-map=/tmp/linbox/linbox-1.4.2=. 
> -fsanitize=address -fno-omit-frame-pointer -fstack-protector-strong -Wformat 
> -Werror=format-security -fsanitize=address -Wl,-z -Wl,relro -Wl,-z -Wl,now 
> -fopenmp -o .libs/test-solve test-solve.o -fopenmp -fsanitize=address -Wl,-z 
> -Wl,relro -Wl,-z -Wl,now -fopenmp  ../linbox/.libs/liblinbox.so -lntl -lmpfr 
> -liml -lblas -llapack -lgivaro -lgmpxx -lgmp -fopenmp
> PASS: test-solve
> ========================================
>    LinBox 1.4.2: tests/test-suite.log
> ========================================
> 
> # TOTAL: 15
> # PASS:  13
> # SKIP:  0
> # XFAIL: 0
> # FAIL:  2
> # XPASS: 0
> # ERROR: 0
> 
> .. contents:: :depth: 2
> 
> FAIL: test-rank-md
> ==================
> 
> =================================================================
> ==30055==ERROR: AddressSanitizer: heap-buffer-overflow on address 
> 0x60f00000f000 at pc 0x565091814c09 bp 0x7ffe133b3230 sp 0x7ffe133b3228
> READ of size 8 at 0x60f00000f000 thread T0
>     #0 0x565091814c08 in std::vector<double, std::allocator<double> >::size() 
> const /usr/include/c++/6/bits/stl_vector.h:656
>     #1 0x565091814c08 in LinBox::SparseMatrix<Givaro::Modular<double, 
> double>, LinBox::SparseMatrixFormat::CSR>::IndexedBegin() const 
> ../linbox/matrix/sparsematrix/sparse-csr-matrix.h:1388
>     #2 0x565091814c08 in void LinBox::BlasMatrix<Givaro::Modular<double, 
> double>, std::vector<double, std::allocator<double> > 
> >::createBlasMatrix<LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR> 
> >(LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR> const&, 
> LinBox::MatrixContainerCategory::Container) 
> ../linbox/matrix/densematrix/blas-matrix.inl:116
>     #3 0x5650918d9e4a in LinBox::BlasMatrix<Givaro::Modular<double, double>, 
> std::vector<double, std::allocator<double> > 
> >::BlasMatrix<LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR> 
> >(LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR> const&) 
> ../linbox/matrix/densematrix/blas-matrix.inl:325
>     #4 0x5650918d9e4a in unsigned long& 
> LinBox::rank<LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR> >(unsigned long&, 
> LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR> const&, LinBox::RingCategories::ModularTag 
> const&, LinBox::BlasEliminationTraits const&) ../linbox/solutions/rank.inl:444
>     #5 0x5650918d9e4a in unsigned long& 
> LinBox::rank<LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR>, LinBox::BlasEliminationTraits>(unsigned 
> long&, LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR> const&, LinBox::BlasEliminationTraits 
> const&) ../linbox/solutions/rank.h:112
>     #6 0x5650918d9e4a in bool 
> testRankMethods<LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR> 
> >(LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR>::Field const&, unsigned long, unsigned long, 
> unsigned int, double) tests/test-rank.h:137
>     #7 0x5650917d6003 in bool testSparseRank<Givaro::Modular<double, double> 
> >(Givaro::Modular<double, double> const&, unsigned long const&, unsigned 
> long, unsigned long const&, double const&) tests/test-rank.h:335
>     #8 0x5650917d6003 in main tests/test-rank-md.C:69
>     #9 0x7f77eff902b0 in __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)
>     #10 0x5650917d6299 in _start 
> (/tmp/linbox/linbox-1.4.2/tests/.libs/test-rank-md+0x21299)
> 
> 0x60f00000f000 is located 0 bytes to the right of 176-byte region 
> [0x60f00000ef50,0x60f00000f000)
> allocated by thread T0 here:
>     #0 0x7f77f2da4bc0 in operator new(unsigned long) 
> (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc2bc0)
>     #1 0x5650918d8a9c in __gnu_cxx::new_allocator<unsigned 
> long>::allocate(unsigned long, void const*) 
> /usr/include/c++/6/ext/new_allocator.h:104
>     #2 0x5650918d8a9c in std::allocator_traits<std::allocator<unsigned long> 
> >::allocate(std::allocator<unsigned long>&, unsigned long) 
> /usr/include/c++/6/bits/alloc_traits.h:436
>     #3 0x5650918d8a9c in std::_Vector_base<unsigned long, 
> std::allocator<unsigned long> >::_M_allocate(unsigned long) 
> /usr/include/c++/6/bits/stl_vector.h:170
>     #4 0x5650918d8a9c in std::_Vector_base<unsigned long, 
> std::allocator<unsigned long> >::_M_create_storage(unsigned long) 
> /usr/include/c++/6/bits/stl_vector.h:185
>     #5 0x5650918d8a9c in std::_Vector_base<unsigned long, 
> std::allocator<unsigned long> >::_Vector_base(unsigned long, 
> std::allocator<unsigned long> const&) /usr/include/c++/6/bits/stl_vector.h:136
>     #6 0x5650918d8a9c in std::vector<unsigned long, std::allocator<unsigned 
> long> >::vector(unsigned long, unsigned long const&, std::allocator<unsigned 
> long> const&) /usr/include/c++/6/bits/stl_vector.h:293
>     #7 0x5650918d8a9c in LinBox::SparseMatrix<Givaro::Modular<double, 
> double>, 
> LinBox::SparseMatrixFormat::CSR>::SparseMatrix<LinBox::RandomSparseStream<Givaro::Modular<double,
>  double>, std::vector<std::pair<unsigned long, double>, 
> std::allocator<std::pair<unsigned long, double> > >, 
> Givaro::ModularRandIter<Givaro::Modular<double, double> >, 
> LinBox::VectorCategories::SparseSequenceVectorTag> >(Givaro::Modular<double, 
> double> const&, LinBox::RandomSparseStream<Givaro::Modular<double, double>, 
> std::vector<std::pair<unsigned long, double>, 
> std::allocator<std::pair<unsigned long, double> > >, 
> Givaro::ModularRandIter<Givaro::Modular<double, double> >, 
> LinBox::VectorCategories::SparseSequenceVectorTag>&) 
> ../linbox/matrix/sparsematrix/sparse-csr-matrix.h:304
>     #8 0x5650918d8a9c in bool 
> testRankMethods<LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR> 
> >(LinBox::SparseMatrix<Givaro::Modular<double, double>, 
> LinBox::SparseMatrixFormat::CSR>::Field const&, unsigned long, unsigned long, 
> unsigned int, double) tests/test-rank.h:93
>     #9 0x5650917d6003 in bool testSparseRank<Givaro::Modular<double, double> 
> >(Givaro::Modular<double, double> const&, unsigned long const&, unsigned 
> long, unsigned long const&, double const&) tests/test-rank.h:335
>     #10 0x5650917d6003 in main tests/test-rank-md.C:69
>     #11 0x7f77eff902b0 in __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)
> 
> SUMMARY: AddressSanitizer: heap-buffer-overflow 
> /usr/include/c++/6/bits/stl_vector.h:656 in std::vector<double, 
> std::allocator<double> >::size() const
> Shadow bytes around the buggy address:
>   0x0c1e7fff9db0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
>   0x0c1e7fff9dc0: fd fd fd fa fa fa fa fa fa fa fa fa fd fd fd fd
>   0x0c1e7fff9dd0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
>   0x0c1e7fff9de0: fd fa fa fa fa fa fa fa fa fa 00 00 00 00 00 00
>   0x0c1e7fff9df0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> =>0x0c1e7fff9e00:[fa]fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
>   0x0c1e7fff9e10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
>   0x0c1e7fff9e20: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
>   0x0c1e7fff9e30: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
>   0x0c1e7fff9e40: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
>   0x0c1e7fff9e50: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
> Shadow byte legend (one shadow byte represents 8 application bytes):
>   Addressable:           00
>   Partially addressable: 01 02 03 04 05 06 07 
>   Heap left redzone:       fa
>   Heap right redzone:      fb
>   Freed heap region:       fd
>   Stack left redzone:      f1
>   Stack mid redzone:       f2
>   Stack right redzone:     f3
>   Stack partial redzone:   f4
>   Stack after return:      f5
>   Stack use after scope:   f8
>   Global redzone:          f9
>   Global init order:       f6
>   Poisoned by user:        f7
>   Container overflow:      fc
>   Array cookie:            ac
>   Intra object redzone:    bb
>   ASan internal:           fe
>   Left alloca redzone:     ca
>   Right alloca redzone:    cb
> ==30055==ABORTING
> FAIL test-rank-md (exit status: 1)
> 
> FAIL: test-regression
> =====================
> 
> 
> =================================================================
> ==30601==ERROR: LeakSanitizer: detected memory leaks
> 
> Direct leak of 120 byte(s) in 1 object(s) allocated from:
>     #0 0x7ff37cbecd40 in operator new[](unsigned long) 
> (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc2d40)
>     #1 0x5577a445e5ed in testSolveSparseSage() tests/test-regression.C:74
>     #2 0x5577a44359b4 in main tests/test-regression.C:122
>     #3 0x7ff379dd82b0 in __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)
> 
> Direct leak of 12 byte(s) in 1 object(s) allocated from:
>     #0 0x7ff37cbecd40 in operator new[](unsigned long) 
> (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc2d40)
>     #1 0x5577a445e705 in testSolveSparseSage() tests/test-regression.C:84
>     #2 0x5577a44359b4 in main tests/test-regression.C:122
>     #3 0x7ff379dd82b0 in __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)
> 
> Indirect leak of 72 byte(s) in 3 object(s) allocated from:
>     #0 0x7ff37cbecd40 in operator new[](unsigned long) 
> (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc2d40)
>     #1 0x5577a445e632 in testSolveSparseSage() tests/test-regression.C:78
>     #2 0x5577a44359b4 in main tests/test-regression.C:122
>     #3 0x7ff379dd82b0 in __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)
> 
> Indirect leak of 36 byte(s) in 3 object(s) allocated from:
>     #0 0x7ff37cbecd40 in operator new[](unsigned long) 
> (/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc2d40)
>     #1 0x5577a445e60c in testSolveSparseSage() tests/test-regression.C:77
>     #2 0x5577a44359b4 in main tests/test-regression.C:122
>     #3 0x7ff379dd82b0 in __libc_start_main 
> (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)
> 
> SUMMARY: AddressSanitizer: 240 byte(s) leaked in 8 allocation(s).
> FAIL test-regression (exit status: 1)
> 
> ============================================================================
> Testsuite summary for LinBox 1.4.2
> ============================================================================
> # TOTAL: 15
> # PASS:  13
> # SKIP:  0
> # XFAIL: 0
> # FAIL:  2
> # XPASS: 0
> # ERROR: 0
> ============================================================================
> See tests/test-suite.log
> Please report to linbox-...@googlegroups.com
> ============================================================================

Thanks,
James

Attachment: signature.asc
Description: OpenPGP digital signature

-- 
debian-science-maintainers mailing list
debian-science-maintainers@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-science-maintainers

Reply via email to