Many tests of Boost v1.54 fail

Bug #1276262 reported by Tony Reix
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
boost1.54 (Ubuntu)
New
Undecided
Unassigned

Bug Description

I'm now testing Boost v1.54 from Ubuntu sources.

I've done:

sudo apt-get update
sudo apt-get install libboost-dev
sudo apt-get install libboost-all-dev
sudo apt-get install dpkg-dev
sudo apt-get build-dep boost1.54
     apt-get source boost1.54
sudo apt-get build-dep boost1.54
cd boost1.54-1.54.0
sudo dpkg-buildpackage
cd status
../b2 2>&1 | tee ../../b2.TestAll.1.log

and I've got the following errors:

boost1.54-1.54.0/bin.v2/libs/tr1/test/run_random.test/gcc-4.8/debug/run_random.output - 201
boost1.54-1.54.0/bin.v2/libs/tr1/test/std_run_random.test/gcc-4.8/debug/std_run_random.output - 201
boost1.54-1.54.0/bin.v2/libs/context/test/test_context.test/gcc-4.8/debug/link-static/test_context.output - 139
boost1.54-1.54.0/bin.v2/libs/conversion/test/lexical_cast_inf_nan_test.test/gcc-4.8/debug/link-static/lexical_cast_inf_nan_test.output - 201
boost1.54-1.54.0/bin.v2/libs/conversion/test/lexical_cast_loopback_test.test/gcc-4.8/debug/link-static/lexical_cast_loopback_test.output - 201
boost1.54-1.54.0/bin.v2/libs/conversion/test/lexical_cast_float_types_test.test/gcc-4.8/debug/link-static/lexical_cast_float_types_test.output - 201
boost1.54-1.54.0/bin.v2/libs/filesystem/test/operations_test_static.test/gcc-4.8/debug/link-static/operations_test_static.output - 139
boost1.54-1.54.0/bin.v2/libs/coroutine/test/test_coroutine.test/gcc-4.8/debug/link-static/test_coroutine.output - 139
Looping : ../bin.v2/libs/flyweight/test/test_intermod_holder.test/gcc-4.8/debug/threading-multi/test_intermod_holder

Tests were blocked due to "test_intermod_holder" looping infinitely. I have to run the tests after this blocking test.

Results were compared to Boost results on page: http://beta.boost.org/development/tests/master/developer/summary.html .
Though some tests do fail on x86 platform, many tests should succeed and, for sure, should not core or run in an infinite loop.

So, these errors should be investigated and fixed.
First try to understand a core goes into libs C and C++.

About version 1.55, I also have many failures (test failed, core, infinite loop, plus bad memory access).

Tony

boost1.54-1.54.0/bin.v2/libs/tr1/test/run_random.test/gcc-4.8/debug/run_random.output :

Based on Boost DataBase, this test fails everywhere. Not a problem.

boost1.54-1.54.0/bin.v2/libs/tr1/test/std_run_random.test/gcc-4.8/debug/std_run_random.output:

Based on Boost DataBase, this test fails everywhere. Not a problem.

boost1.54-1.54.0/bin.v2/libs/context/test/test_context.test/gcc-4.8/debug/link-static/test_context.output:

Segmentation fault (core dumped)

boost1.54-1.54.0/bin.v2/libs/conversion/test/lexical_cast_inf_nan_test.test/gcc-4.8/debug/link-static/lexical_cast_inf_nan_test.output:

../libs/conversion/test/lexical_cast_inf_nan_test.cpp(73): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>("-inf") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(74): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>("-INF") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(82): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>("-infinity") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(83): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>("-INFINITY") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(91): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>("-inFINITY") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(92): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>("-INFINITY") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(97): error in "test_inf_nan_long_double": check is_neg_nan( lexical_cast<test_t>("-nan") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(98): error in "test_inf_nan_long_double": check is_neg_nan( lexical_cast<test_t>("-NAN") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(106): error in "test_inf_nan_long_double": check is_neg_nan( lexical_cast<test_t>("-nAn") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(107): error in "test_inf_nan_long_double": check is_neg_nan( lexical_cast<test_t>("-NaN") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(117): error in "test_inf_nan_long_double": check lexical_cast<std::string>( (boost::math::changesign)(std::numeric_limits<test_t >::infinity())) == "-inf" failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(123): error in "test_inf_nan_long_double": check lexical_cast<std::string>( (boost::math::changesign)(std::numeric_limits<test_t >::quiet_NaN())) == "-nan" failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(130): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>(L"-inf") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(131): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>(L"-INF") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(139): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>(L"-infinity") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(140): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>(L"-INFINITY") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(145): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>(L"-infINIty") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(146): error in "test_inf_nan_long_double": check is_neg_inf( lexical_cast<test_t>(L"-INFiniTY") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(154): error in "test_inf_nan_long_double": check is_neg_nan( lexical_cast<test_t>(L"-nan") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(155): error in "test_inf_nan_long_double": check is_neg_nan( lexical_cast<test_t>(L"-NAN") ) failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(165): error in "test_inf_nan_long_double": check lexical_cast<std::wstring>( (boost::math::changesign)(std::numeric_limits<test_t >::infinity())) == L"-inf" failed
../libs/conversion/test/lexical_cast_inf_nan_test.cpp(171): error in "test_inf_nan_long_double": check lexical_cast<std::wstring>( (boost::math::changesign)(std::numeric_limits<test_t >::quiet_NaN())) == L"-nan" failed

boost1.54-1.54.0/bin.v2/libs/conversion/test/lexical_cast_loopback_test.test/gcc-4.8/debug/link-static/lexical_cast_loopback_test.output :

../libs/conversion/test/lexical_cast_loopback_test.cpp(55): error in "test_round_conversion_double": check min_ == lexical_cast<T>(min_s) failed

These tests seem to fail on Windows and succeed on Linux.

boost1.54-1.54.0/bin.v2/libs/conversion/test/lexical_cast_float_types_test.test/gcc-4.8/debug/link-static/lexical_cast_float_types_test.output:

*** 9821 failures detected in test suite "Master Test Suite"

boost1.54-1.54.0/bin.v2/libs/filesystem/test/operations_test_static.test/gcc-4.8/debug/link-static/operations_test_static.output:

Segmentation fault (core dumped)

boost1.54-1.54.0/bin.v2/libs/coroutine/test/test_coroutine.test/gcc-4.8/debug/link-static/test_coroutine.output:

Segmentation fault (core dumped)

boost1.54-1.54.0/bin.v2/libs/flyweight/test/test_intermod_holder.test/gcc-4.8/debug/threading-multi/test_intermod_holder:

Runs in an infinite loop.

Revision history for this message
Tony Reix (tony-reix) wrote :

I forgot to say that this is on PPC/LE with alpha2 .

Revision history for this message
Tony Reix (tony-reix) wrote :
Download full text (4.8 KiB)

Here are the traces for one of the cores:

boost1.54-1.54.0/bin.v2/libs/filesystem/test/operations_test_static.test/gcc-4.8/debug/link-static/operations_test_static
Program received signal SIGSEGV, Segmentation fault.

__atomic_add_dispatch (__val=1, __mem=0x0) at /build/buildd/gcc-4.8-4.8.2/build/powerpc64le-linux-gnu/libstdc++-v3/include/ext/atomicity.h:98
98 /build/buildd/gcc-4.8-4.8.2/build/powerpc64le-linux-gnu/libstdc++-v3/include/ext/atomicity.h: No such file or directory.
1: x/i $pc
=> 0x3fffb7ee28ec <std::locale::locale(std::locale const&)+60>: lwz r10,0(r9)

__atomic_add_dispatch (__val=1, __mem=0x0) at /build/buildd/gcc-4.8-4.8.2/build/powerpc64le-linux-gnu/libstdc++-v3/include/ext/atomicity.h:98
98 /build/buildd/gcc-4.8-4.8.2/build/powerpc64le-linux-gnu/libstdc++-v3/include/ext/atomicity.h: No such file or directory.

(gdb) where
#0 __atomic_add_dispatch (__val=1, __mem=0x0) at /build/buildd/gcc-4.8-4.8.2/build/powerpc64le-linux-gnu/libstdc++-v3/include/ext/atomicity.h:98
#1 _M_add_reference (this=0x0) at /build/buildd/gcc-4.8-4.8.2/build/powerpc64le-linux-gnu/libstdc++-v3/include/bits/locale_classes.h:510
#2 std::locale::locale (this=0x100783d0 <boost::filesystem::path::codecvt()::posix_lazy_initialization>, __other=...) at ../../../../../src/libstdc++-v3/src/c++98/locale.cc:80
#3 0x00000000100492a8 in boost::filesystem::path::imbue (loc=...) at ../libs/filesystem/src/path.cpp:918
#4 0x00000000100491b0 in boost::filesystem::path::codecvt () at ../libs/filesystem/src/path.cpp:911
#5 0x000000001004aa3c in boost::filesystem::path::wstring (this=0x3ffffffff5c8) at ../boost/filesystem/path.hpp:386
#6 0x000000001004a540 in boost::filesystem::detail::unique_path (model=..., ec=0x0) at ../libs/filesystem/src/unique_path.cpp:113
#7 0x00000000100238c4 in boost::filesystem::unique_path (p=...) at ../boost/filesystem/operations.hpp:544
#8 0x00000000100200cc in __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at ../libs/filesystem/test/operations_test.cpp:118
#9 0x00000000100201fc in _GLOBAL__sub_I__Z8cpp_mainiPPc () at ../libs/filesystem/test/operations_test.cpp:2034
#10 0x000000001004d444 in __libc_csu_init ()
#11 0x00003fffb7c8e1ec in generic_start_main (main=0x1003173c <main(int, char**)>, argc=<optimized out>, argv=0x3ffffffffa68, auxvec=0x3ffffffffb10, init=0x1004d3b0 <__libc_csu_init>,
    rtld_fini=<optimized out>, stack_end=<optimized out>, fini=<optimized out>) at ../csu/libc-start.c:246
#12 0x00003fffb7c8e458 in __libc_start_main (argc=<optimized out>, argv=<optimized out>, ev=<optimized out>, auxvec=<optimized out>, rtld_fini=<optimized out>, stinfo=<optimized out>,
    stack_on_entry=<optimized out>) at ../sysdeps/unix/sysv/linux/powerpc/libc-start.c:93
#13 0x0000000000000000 in ?? ()

Breakpoint 1, boost::filesystem::path::imbue (loc=...) at ../libs/filesystem/src/path.cpp:918
918 std::locale temp(path_locale);

 p loc
$1 = (const std::locale &) @0x3ffffffff418: {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63,
  _M_impl = 0x100790f0, static _S_classic = 0x3fffb7f...

Read more...

Revision history for this message
Tony Reix (tony-reix) wrote :

After debugging "some" more, it looks like the issue is in:

BOOST : libs/filesystem/src/path.cpp

  std::locale path::imbue(const std::locale& loc)
  {
    std::locale temp(path_locale); <<<<<<<<<<<<<<<<<<<<<<< line 918
    path_locale = loc;
    codecvt_facet_ptr =
      &std::use_facet<std::codecvt<wchar_t, char, std::mbstate_t> >(path_locale);
    return temp;
  }

At line 918, C++ try to do some initialization. This seems to imply to use field _M_impl of path_locale, which is 0x0.
It seems that no initialization of path_locale is done and thus _M_impl stay 0x0.

p path_locale
$23 = {static none = 0, static ctype = 1, static numeric = 2, static collate = 4, static time = 8, static monetary = 16, static messages = 32, static all = 63, _M_impl = 0x0,
  static _S_classic = 0x3fffb7fae0b8 <(anonymous namespace)::c_locale_impl>, static _S_global = 0x3fffb7fae0b8 <(anonymous namespace)::c_locale_impl>, static _S_categories =
    0x3fffb7f92cb8 <__gnu_cxx::category_names>, static _S_once = 0}

So, the question is: why path_locale has not been initialized ? and why this happens in PPC/LE and not elsewhere ?

Since, at line 868, we have:

 std::locale path_locale; // initialized by path::codecvt() below
  const std::codecvt<wchar_t, char, std::mbstate_t>* codecvt_facet_ptr; // ditto

which does not seems to do any initialization (gdb don't stop there). however, the comment says that path_locale is initialiazed by line below, where gdb does not stop.

Revision history for this message
Dimitri John Ledkov (xnox) wrote :

Do you have and can provide a list of tests which pass on Ubuntu-amd64 (x86_64) but fail on Ubuntu-ppc64el (ppc/le) for further investigation?

Results as published on boost.org, may not match Ubuntu-amd64 baseline.

Revision history for this message
Tony Reix (tony-reix) wrote :

On my PC, running oneiric, version 11.10, on Xeon, with gcc 4.6.1, I also see errors when testing Boost v1.55.
EXIT STATUS are:
      1 : 11 (False results)
134 : 1 (Exception, aborted)
139 : 2 (Seg Fault)
200 : 10 (memory access violation)
201 : 8 (error detected)

I have to find a x86 machine I can install with a fresh Ubuntu. No time for doing that for now, but I'll do.

When comparing what I get on PPC/LE and my PC, about most important errors (seg fault, memory acces, exception aborted), I have:
- Errors on both environments:
   ES 134:
      ../bin.v2/libs/spirit/test/qi_match_manip1-p3.test/gcc-4.8/debug/phoenix_v3-on/qi_match_manip1-p3.output
   ES 139:
      ../bin.v2/libs/spirit/test/lex_lexertl2-p3.test/gcc-*/debug/phoenix_v3-on/lex_lexertl2-p3.output
     ../bin.v2/libs/filesystem/test/operations_test_static.test/gcc-*/debug/link-static/operations_test_static.output
   ES 200:
     ../bin.v2/libs/heap/test/binomial_heap_test.test/gcc-*/debug/threading-multi/binomial_heap_test.output
     ../bin.v2/libs/heap/test/pairing_heap_tests.test/gcc-*/debug/threading-multi/pairing_heap_tests.output
     ../bin.v2/libs/heap/test/skew_heap_test.test/gcc-*/debug/threading-multi/skew_heap_test.output"
     ../bin.v2/libs/heap/test/mutable_heap_test.test/gcc-*1/debug/threading-multi/mutable_heap_test.output"
     ../bin.v2/libs/heap/test/fibonacci_heap_test.test/gcc-*1/debug/threading-multi/fibonacci_heap_test.output"
     ../bin.v2/libs/heap/test/priority_queue_test.test/gcc-*/debug/threading-multi/priority_queue_test.output"

- Errors only on PPC/LE :
   ES 134: NONE
   ES 139:
      ../bin.v2/libs/context/test/test_context.test/gcc-4.8/debug/link-static/test_context.output
      ../bin.v2/libs/coroutine/test/test_coroutine.test/gcc-4.8/debug/link-static/test_coroutine.output
      ../bin.v2/libs/locale/test/test_boundary.test/gcc-4.8/debug/test_boundary.output
   ES 200:
    ../bin.v2/libs/heap/test/d_ary_heap_test.test/gcc-4.8/debug/threading-multi/d_ary_heap_test.output
    ../bin.v2/libs/test/test/prg_exec_fail2.test/gcc-4.8/debug/prg_exec_fail2.output

- Errors only on x86_64:
   ES 200:
     ../bin.v2/libs/heap/test/d_ary_heap_test.test/gcc-4.6.1/debug/threading-multi/d_ary_heap_test.output"

So, there are cores and memory access violations that are specific to PPC/LE.
And there are cores and memory access violations that are common to both environments, though they use different versions of GCC.

I am now building/testing on PPC/BE in order to compare. It uses same version of GCC.

Revision history for this message
Tony Reix (tony-reix) wrote :

I now have a Ubuntu-amd64 (x86_64) environment, where I am building/testing Boost 1.55 and then 1.54.

Revision history for this message
Tony Reix (tony-reix) wrote :
Download full text (3.9 KiB)

Results for Boost 1.55 on Ubuntu 14.04 on amd64 with gcc 4.8.2 (Ubuntu 4.8.2-15ubuntu3) :

(Linux version 3.13.0-8-generic (buildd@lamiak) (gcc version 4.8.2 (Ubuntu/Linaro 4.8.2-14ubuntu4) ) #27-Ubuntu SMP Fri Feb 7 02:01:37 UTC 2014)

4401 tests

Number of Memory Access Violation: 7
libs/heap/test/binomial_heap_test.test/gcc-4.8/debug/threading-multi/binomial_heap_test.output
libs/heap/test/priority_queue_test.test/gcc-4.8/debug/threading-multi/priority_queue_test.output
libs/heap/test/d_ary_heap_test.test/gcc-4.8/debug/threading-multi/d_ary_heap_test.output
libs/heap/test/fibonacci_heap_test.test/gcc-4.8/debug/threading-multi/fibonacci_heap_test.output
libs/heap/test/mutable_heap_test.test/gcc-4.8/debug/threading-multi/mutable_heap_test.output
libs/heap/test/skew_heap_test.test/gcc-4.8/debug/threading-multi/skew_heap_test.output
libs/heap/test/pairing_heap_tests.test/gcc-4.8/debug/threading-multi/pairing_heap_tests.output

Number of sub-tests failed: 18

Number of cores: 2
  ./boost1.55-1.55.0/bin.v2/libs/log/test/core.test/gcc-4.8/debug/threading-multi/core
  ./boost1.55-1.55.0/bin.v2/libs/phoenix/test/core.test/gcc-4.8/debug/core

Exit | Number
Status | of results
----------------------------
  0 4373
  1 9
134 1
139 3
200 10
201 4
----------------
Tot 4401

Details of errors:
139 libs/filesystem/test/operations_test_static.test/gcc-4.8/debug/link-static/operations_test_static.output
201 libs/ptr_container/test/serialization.test/gcc-4.8/debug/serialization.output
  1 libs/wave/test/build/testwave.test/gcc-4.8/debug/link-static/threading-multi/testwave.output
  1 libs/spirit/repository/test/qi_repo_keywords.test/gcc-4.8/debug/qi_repo_keywords.output
  1 libs/spirit/test/qi_int1-p3.test/gcc-4.8/debug/phoenix_v3-on/qi_int1-p3.output
139 libs/spirit/test/lex_lexertl2-p3.test/gcc-4.8/debug/phoenix_v3-on/lex_lexertl2-p3.output
134 libs/spirit/test/qi_match_manip1-p3.test/gcc-4.8/debug/phoenix_v3-on/qi_match_manip1-p3.output
  1 libs/spirit/test/karma_real1-p3.test/gcc-4.8/debug/phoenix_v3-on/karma_real1-p3.output
  1 libs/spirit/test/qi_regression_stream_eof-p3.test/gcc-4.8/debug/phoenix_v3-on/qi_regression_stream_eof-p3.output
  1 libs/spirit/test/karma_real2-p3.test/gcc-4.8/debug/phoenix_v3-on/karma_real2-p3.output
  1 libs/spirit/test/karma_alternative1-p3.test/gcc-4.8/debug/phoenix_v3-on/karma_alternative1-p3.output
201 libs/test/test/minimal_test.test/gcc-4.8/debug/minimal_test.output
200 libs/test/test/prg_exec_fail2.test/gcc-4.8/debug/prg_exec_fail2.output
200 libs/test/test/prg_exec_fail1.test/gcc-4.8/debug/prg_exec_fail1.output
  1 libs/test/test/prg_exec_fail4.test/gcc-4.8/debug/prg_exec_fail4.output
200 libs/test/test/prg_exec_fail3.test/gcc-4.8/debug/prg_exec_fail3.output
201 libs/tr1/test/run_random.test/gcc-4.8/debug/run_random.output
201 libs/tr1/test/std_run_random.test/gcc-4.8/debug/std_run_random.output
139 libs/locale/test/test_boundary.test/gcc-4.8/debug/test_boundary.output
  1 libs/locale/test/test_formatting.test/gcc-4.8/debug/test_formatting.output
200 libs/heap/test/binomial_heap_test.test/gcc-4.8/debug/threading-multi/binomial_heap_te...

Read more...

Revision history for this message
Tony Reix (tony-reix) wrote :
Download full text (16.4 KiB)

Here is the same report about Boost 1.55 on Ubuntu 14.04 PPC/LE .

4214 tests

libs/math/test/test_jacobi.test/gcc-4.8/debug/link-static/test_jacobi.output
libs/heap/test/d_ary_heap_test.test/gcc-4.8/debug/threading-multi/d_ary_heap_test.output
libs/heap/test/skew_heap_test.test/gcc-4.8/debug/threading-multi/skew_heap_test.output
libs/heap/test/pairing_heap_tests.test/gcc-4.8/debug/threading-multi/pairing_heap_tests.output
libs/heap/test/fibonacci_heap_test.test/gcc-4.8/debug/threading-multi/fibonacci_heap_test.output
libs/heap/test/mutable_heap_test.test/gcc-4.8/debug/threading-multi/mutable_heap_test.output
libs/heap/test/priority_queue_test.test/gcc-4.8/debug/threading-multi/priority_queue_test.output
libs/heap/test/binomial_heap_test.test/gcc-4.8/debug/threading-multi/binomial_heap_test.output
Number of Memory Access Violation: 8

  0 4045
  1 28
134 1
139 5
200 9
201 115
---------
Tot 4204

Number of sub-failures: 59818

Cores:
libs/log/test/core.test/gcc-4.8/debug/build-no/threading-multi/core
libs/phoenix/test/core.test/gcc-4.8/debug/core

201 libs/tr1/test/run_random.test/gcc-4.8/debug/run_random.output
201 libs/tr1/test/std_run_random.test/gcc-4.8/debug/std_run_random.output
139 libs/context/test/test_context.test/gcc-4.8/debug/link-static/test_context.output
200 libs/test/test/prg_exec_fail1.test/gcc-4.8/debug/prg_exec_fail1.output
201 libs/test/test/test_tools_test.test/gcc-4.8/debug/test_tools_test.output
  1 libs/test/test/prg_exec_fail4.test/gcc-4.8/debug/prg_exec_fail4.output
200 libs/test/test/prg_exec_fail3.test/gcc-4.8/debug/prg_exec_fail3.output
201 libs/test/test/minimal_test.test/gcc-4.8/debug/minimal_test.output
201 libs/ptr_container/test/serialization.test/gcc-4.8/debug/serialization.output
201 libs/conversion/test/lexical_cast_inf_nan_test.test/gcc-4.8/debug/link-static/lexical_cast_inf_nan_test.output
201 libs/conversion/test/lexical_cast_loopback_test.test/gcc-4.8/debug/link-static/lexical_cast_loopback_test.output
201 libs/conversion/test/lexical_cast_float_types_test.test/gcc-4.8/debug/link-static/lexical_cast_float_types_test.output
201 libs/geometry/test/algorithms/expand.test/gcc-4.8/debug/expand.output
201 libs/geometry/test/algorithms/area.test/gcc-4.8/debug/area.output
201 libs/geometry/test/algorithms/difference.test/gcc-4.8/debug/difference.output
201 libs/geometry/test/algorithms/union.test/gcc-4.8/debug/union.output
201 libs/geometry/test/algorithms/overlay/traverse.test/gcc-4.8/debug/traverse.output
201 libs/geometry/test/algorithms/overlay/self_intersection_points.test/gcc-4.8/debug/self_intersection_points.output
201 libs/geometry/test/algorithms/overlay/get_turns.test/gcc-4.8/debug/get_turns.output
201 libs/geometry/test/algorithms/overlay/ccw_traverse.test/gcc-4.8/debug/ccw_traverse.output
201 libs/geometry/test/algorithms/intersection.test/gcc-4.8/debug/intersection.output
201 libs/geometry/test/algorithms/within.test/gcc-4.8/debug/within.output
201 libs/geometry/test/algorithms/centroid.test/gcc-4.8/debug/centroid.output
201 libs/geometry/test/multi/algorithms/multi_difference.test/gcc-4.8/debug/multi_difference.output
201 libs/geom...

Revision history for this message
Tony Reix (tony-reix) wrote :
Download full text (13.1 KiB)

Here is the list of v1.55 errors that appear on PPC64LE and not on Intel64:

- Memory Access Violation:
          libs/math/test/test_jacobi.test/gcc-4.8/debug/link-static/test_jacobi.output

- Cores:
          libs/log/test/core.test/gcc-4.8/debug/build-no/threading-multi/core
          libs/phoenix/test/core.test/gcc-4.8/debug/core
139 libs/context/test/test_context.test/gcc-4.8/debug/link-static/test_context.output
139 libs/coroutine/test/test_coroutine.test/gcc-4.8/debug/link-static/test_coroutine.output

- Other errors:
1 libs/multiprecision/test/test_arithmetic_ab_1.test/gcc-4.8/debug/test_arithmetic_ab_1.output
1 libs/multiprecision/test/test_arithmetic_backend_concept.test/gcc-4.8/debug/test_arithmetic_backend_concept.output
1 libs/multiprecision/test/test_arithmetic_cpp_dec_float_2.test/gcc-4.8/debug/test_arithmetic_cpp_dec_float_2.output
1 libs/multiprecision/test/test_arithmetic_cpp_dec_float_3.test/gcc-4.8/debug/test_arithmetic_cpp_dec_float_3.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_10.test/gcc-4.8/debug/test_arithmetic_cpp_int_10.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_11.test/gcc-4.8/debug/test_arithmetic_cpp_int_11.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_12.test/gcc-4.8/debug/test_arithmetic_cpp_int_12.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_13.test/gcc-4.8/debug/test_arithmetic_cpp_int_13.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_16.test/gcc-4.8/debug/test_arithmetic_cpp_int_16.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_1.test/gcc-4.8/debug/test_arithmetic_cpp_int_1.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_2.test/gcc-4.8/debug/test_arithmetic_cpp_int_2.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_4.test/gcc-4.8/debug/test_arithmetic_cpp_int_4.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_5.test/gcc-4.8/debug/test_arithmetic_cpp_int_5.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_7.test/gcc-4.8/debug/test_arithmetic_cpp_int_7.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_8.test/gcc-4.8/debug/test_arithmetic_cpp_int_8.output
1 libs/multiprecision/test/test_arithmetic_cpp_int_9.test/gcc-4.8/debug/test_arithmetic_cpp_int_9.output
1 libs/multiprecision/test/test_arithmetic_dbg_adptr2.test/gcc-4.8/debug/test_arithmetic_dbg_adptr2.output
1 libs/multiprecision/test/test_arithmetic_logged_2.test/gcc-4.8/debug/test_arithmetic_logged_2.output
1 libs/spirit/test/qi_regression_numeric_alternatives-p3.test/gcc-4.8/debug/phoenix_v3-on/qi_regression_numeric_alternatives-p3.output

201 libs/conversion/test/lexical_cast_float_types_test.test/gcc-4.8/debug/link-static/lexical_cast_float_types_test.output
201 libs/conversion/test/lexical_cast_inf_nan_test.test/gcc-4.8/debug/link-static/lexical_cast_inf_nan_test.output
201 libs/conversion/test/lexical_cast_loopback_test.test/gcc-4.8/debug/link-static/lexical_cast_loopback_test.output
201 libs/geometry/test/algorithms/area.test/gcc-4.8/debug/area.output
201 libs/geometry/test/algorithms/centroid.test/gcc-4.8/debug/centroid.output
201 libs/geometry/test/algorithms/difference.test/gcc-4.8/debug/difference.output
201 libs/geometry/test...

Revision history for this message
Tony Reix (tony-reix) wrote :

I forgot to talk again about the tests running an infinite loop on PPC64, that never appear on AMD64:

Here are infinite loops on PPC64-BE (I provide the last trace appearing on the screen. The blocking test is: test_tr1* that I killed) :

gcc.link ../bin.v2/libs/math/test/test_tr1.test/gcc-4.8.2/debug/link-static/test_tr1
gcc.link ../bin.v2/libs/math/test/test_tr1_long_double.test/gcc-4.8.2/debug/link-static/test_tr1_long_double
gcc.link ../bin.v2/libs/math/test/test_tr1_c.test/gcc-4.8.2/debug/link-static/test_tr1_c
gcc.link ../bin.v2/libs/math/test/test_tr1_c_long_double.test/gcc-4.8.2/debug/link-static/test_tr1_c_long_double
./bin.v2/libs/math/test/test_bessel_y.test/gcc-4.8.2/debug/link-static/test_bessel_y

Here are infinite loops on PPC64-LE:

gcc.link ../bin.v2/libs/math/test/test_ellint_1.test/gcc-4.8/debug/link-static/test_ellint_1
gcc.link ../bin.v2/libs/math/test/test_ellint_2.test/gcc-4.8/debug/link-static/test_ellint_2
gcc.link ../bin.v2/libs/math/test/test_ellint_2.test/gcc-4.8/debug/link-static/test_ellint_3

Anyway, it also seems that there are MANY tests failures about the Math library on PPC64.

Revision history for this message
Tony Reix (tony-reix) wrote :
Download full text (14.2 KiB)

Here are the results of testing Boost 1.55 on Fedora 19 on PPC/BE.

4380 tests

libs/heap/test/pairing_heap_tests.test/gcc-4.8.2/debug/threading-multi/pairing_heap_tests.output
libs/heap/test/mutable_heap_test.test/gcc-4.8.2/debug/threading-multi/mutable_heap_test.output
libs/heap/test/d_ary_heap_test.test/gcc-4.8.2/debug/threading-multi/d_ary_heap_test.output
libs/heap/test/fibonacci_heap_test.test/gcc-4.8.2/debug/threading-multi/fibonacci_heap_test.output
libs/heap/test/skew_heap_test.test/gcc-4.8.2/debug/threading-multi/skew_heap_test.output
libs/heap/test/priority_queue_test.test/gcc-4.8.2/debug/threading-multi/priority_queue_test.output
libs/heap/test/binomial_heap_test.test/gcc-4.8.2/debug/threading-multi/binomial_heap_test.output
libs/math/test/test_jacobi.test/gcc-4.8.2/debug/link-static/test_jacobi.output
Number of Memory Access Violation: 8

Possible Exit Status: 0 1 134 137 139 200 201

  0 4243
  1 15
134 1
137 9
139 4
200 9
201 98
---------
Tot 4380
Err 137
%Pass 96.87
Dif 1

Number of sub-failures: 47171

Cores:
./libs/phoenix/test/core.test/gcc-4.8.2/debug/core
./libs/log/test/core.test/gcc-4.8.2/debug/build-no/threading-multi/core

  1 libs/spirit/repository/test/qi_repo_keywords.test/gcc-4.8.2/debug/qi_repo_keywords.output
  1 libs/spirit/test/karma_binary1-p3.test/gcc-4.8.2/debug/phoenix_v3-on/karma_binary1-p3.output
  1 libs/spirit/test/qi_regression_numeric_alternatives-p3.test/gcc-4.8.2/debug/phoenix_v3-on/qi_regression_numeric_alternatives-p3.output
  1 libs/spirit/test/qi_binary-p3.test/gcc-4.8.2/debug/phoenix_v3-on/qi_binary-p3.output
  1 libs/spirit/test/karma_alternative1-p3.test/gcc-4.8.2/debug/phoenix_v3-on/karma_alternative1-p3.output
134 libs/spirit/test/qi_match_manip1-p3.test/gcc-4.8.2/debug/phoenix_v3-on/qi_match_manip1-p3.output
  1 libs/spirit/test/karma_binary3-p3.test/gcc-4.8.2/debug/phoenix_v3-on/karma_binary3-p3.output
  1 libs/spirit/test/qi_regression_stream_eof-p3.test/gcc-4.8.2/debug/phoenix_v3-on/qi_regression_stream_eof-p3.output
  1 libs/spirit/test/qi_int1-p3.test/gcc-4.8.2/debug/phoenix_v3-on/qi_int1-p3.output
  1 libs/spirit/test/karma_binary2-p3.test/gcc-4.8.2/debug/phoenix_v3-on/karma_binary2-p3.output
  1 libs/spirit/test/karma_real2-p3.test/gcc-4.8.2/debug/phoenix_v3-on/karma_real2-p3.output
  1 libs/spirit/test/karma_real1-p3.test/gcc-4.8.2/debug/phoenix_v3-on/karma_real1-p3.output
139 libs/spirit/test/lex_lexertl2-p3.test/gcc-4.8.2/debug/phoenix_v3-on/lex_lexertl2-p3.output
200 libs/heap/test/pairing_heap_tests.test/gcc-4.8.2/debug/threading-multi/pairing_heap_tests.output
200 libs/heap/test/mutable_heap_test.test/gcc-4.8.2/debug/threading-multi/mutable_heap_test.output
200 libs/heap/test/d_ary_heap_test.test/gcc-4.8.2/debug/threading-multi/d_ary_heap_test.output
200 libs/heap/test/fibonacci_heap_test.test/gcc-4.8.2/debug/threading-multi/fibonacci_heap_test.output
200 libs/heap/test/skew_heap_test.test/gcc-4.8.2/debug/threading-multi/skew_heap_test.output
200 libs/heap/test/priority_queue_test.test/gcc-4.8.2/debug/threading-multi/priority_queue_test.output
200 libs/heap/test/binomial_heap_test.test/gcc-4.8.2/debug/threading-multi/binomial_heap_test.output
139 libs/c...

Revision history for this message
Tony Reix (tony-reix) wrote :
Download full text (4.7 KiB)

There are errors specific to Fedora PPC64/BE vs Ubuntu PPC64/LE, and vice-versa.

Errors specific to Fedora PPC64/BE (none of these errors appears in Ubuntu AMD64):
* 1 libs/locale/test/test_boundary.test/gcc-4.8.2/debug/test_boundary.output
* 1 libs/spirit/test/karma_binary1-p3.test/gcc-4.8.2/debug/phoenix_v3-on/karma_binary1-p3.output
* 1 libs/spirit/test/karma_binary2-p3.test/gcc-4.8.2/debug/phoenix_v3-on/karma_binary2-p3.output
* 1 libs/spirit/test/karma_binary3-p3.test/gcc-4.8.2/debug/phoenix_v3-on/karma_binary3-p3.output
* 1 libs/spirit/test/qi_binary-p3.test/gcc-4.8.2/debug/phoenix_v3-on/qi_binary-p3.output
*201 libs/math/test/complex_test.test/gcc-4.8.2/debug/link-static/complex_test.output
*201 libs/math/test/octonion_test.test/gcc-4.8.2/debug/link-static/octonion_test.output
*201 libs/math/test/test_long_double_support.test/gcc-4.8.2/debug/link-static/test_long_double_support.output

Errors specific to Ubuntu PPC64/LE (none of these errors appears in Ubuntu AMD64):
* 1 libs/multiprecision/test/test_arithmetic_ab_1.test/gcc-4.8/debug/test_arithmetic_ab_1.output
* 1 libs/multiprecision/test/test_arithmetic_backend_concept.test/gcc-4.8/debug/test_arithmetic_backend_concept.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_dec_float_2.test/gcc-4.8/debug/test_arithmetic_cpp_dec_float_2.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_dec_float_3.test/gcc-4.8/debug/test_arithmetic_cpp_dec_float_3.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_10.test/gcc-4.8/debug/test_arithmetic_cpp_int_10.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_11.test/gcc-4.8/debug/test_arithmetic_cpp_int_11.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_12.test/gcc-4.8/debug/test_arithmetic_cpp_int_12.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_13.test/gcc-4.8/debug/test_arithmetic_cpp_int_13.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_16.test/gcc-4.8/debug/test_arithmetic_cpp_int_16.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_1.test/gcc-4.8/debug/test_arithmetic_cpp_int_1.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_2.test/gcc-4.8/debug/test_arithmetic_cpp_int_2.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_4.test/gcc-4.8/debug/test_arithmetic_cpp_int_4.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_5.test/gcc-4.8/debug/test_arithmetic_cpp_int_5.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_7.test/gcc-4.8/debug/test_arithmetic_cpp_int_7.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_8.test/gcc-4.8/debug/test_arithmetic_cpp_int_8.output
* 1 libs/multiprecision/test/test_arithmetic_cpp_int_9.test/gcc-4.8/debug/test_arithmetic_cpp_int_9.output
* 1 libs/multiprecision/test/test_arithmetic_dbg_adptr2.test/gcc-4.8/debug/test_arithmetic_dbg_adptr2.output
* 1 libs/multiprecision/test/test_arithmetic_logged_2.test/gcc-4.8/debug/test_arithmetic_logged_2.output
*139 libs/locale/test/test_boundary.test/gcc-4.8/debug/test_boundary.output
*201 libs/conversion/test/lexical_cast_inf_nan_test.test/gcc-4.8/debug/link-static/lexical_cast_inf_nan_test...

Read more...

Revision history for this message
Tony Reix (tony-reix) wrote :

There are few PPC assembler files in Boost (v1.55) :
./libs/context/src/asm/jump_ppc64_sysv_elf_gas.S
./libs/context/src/asm/jump_ppc32_sysv_elf_gas.S
./libs/context/src/asm/make_ppc64_sysv_elf_gas.S
./libs/context/src/asm/make_ppc32_sysv_elf_gas.S

And I've not found any PPC assembler code included in C++ files. Only Intel assembler optimizations.

That means to says that assembler code in Boost should not be the root cause of the issues I've found. Moreover, though there are more issues on Ubuntu PPC64/LE than on Fedora PPC64/BE, there are issues on PPC64/BE, which has a stable ABI compared to the recently changed ABI on PPC64/LE .

Understanding and fixing errors common to both PPC64 BE and LE would help, as a first attempt.

Revision history for this message
Peter Bergner (pbergner) wrote :

How does this compare to the test results on BE?

Revision history for this message
Tony Reix (tony-reix) wrote :

This is described in comment #12 :
   https://bugs.launchpad.net/ubuntu/+source/boost1.54/+bug/1276262/comments/12
(However, I've just found that core (error 139) on PPC64/LE also appears on AMD64: my mistake).

Boost 1.55 on PPC64 shows more and different issues on LE than on BE. However, same faulty code may generate different errors according to the testing environment.
I'm still investigating. make/jump_ppc32_sysv_elf_gas.S seems to be the root cause for all PPC64 BE & LE cores. Trying to figure out what is the root cause in this assembler code. Maybe some PPC64 fixes were produced but are not available on versions 1.54 and 1.55 of Boost. I'll look at most recent versions of Boost.

Revision history for this message
Tony Reix (tony-reix) wrote :

Revision 86799 of :
./libs/context/src/asm/jump_ppc64_sysv_elf_gas.S
./libs/context/src/asm/make_ppc64_sysv_elf_gas.S
is exactly identical to the version delivered with Boost v1.55 .

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.