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

Bug#819429: libstdc++-5-dev: Kodi test crashes in STL on armel and armhf



Package: libstdc++-5-dev
Version: 5.3.1-13
Control: affects -1 kodi

Dear Maintainer,

Kodi fails to build on armel and armhf due to a crashing test:
https://buildd.debian.org/status/fetch.php?pkg=kodi&arch=armhf&ver=16.0%2Bdfsg1-2&stamp=1458793597
...
[----------] 1 test from TestScraperUrl
[ RUN      ] TestScraperUrl.General
[       OK ] TestScraperUrl.General (0 ms)
[----------] 1 test from TestScraperUrl (0 ms total)

[----------] 3 tests from TestSortUtils
[ RUN      ] TestSortUtils.Sort_SortBy
/bin/bash: line 1: 15871 Segmentation fault      /«BUILDDIR»/kodi-16.0+dfsg1/$check_program
Makefile:608: recipe for target 'check' failed
make[1]: *** [check] Error 139
make[1]: Leaving directory '/«BUILDDIR»/kodi-16.0+dfsg1'
...

I have reproduced the issue on abel.debian.org with Address Sanitizer:
...
[----------] 1 test from TestScraperUrl
[ RUN      ] TestScraperUrl.General
[       OK ] TestScraperUrl.General (0 ms)
[----------] 1 test from TestScraperUrl (0 ms total)

[----------] 3 tests from TestSortUtils
[ RUN      ] TestSortUtils.Sort_SortBy
ASAN:SIGSEGV
=================================================================
==18199==ERROR: AddressSanitizer: SEGV on unknown address 0x00000000 (pc 0x0045dbac bp 0xac70f6b4 sp 0xbeb800d0 T0)
    #0 0x45dbab in std::pair<Field const, CVariant>::pair<Field&&, 0u>(std::tuple<Field&&>&, std::tuple<>&, std::_Index_tuple<0u>, std::_Index_tuple<>) /usr/include/c++/5/tuple:1172
    #1 0x45dbab in std::pair<Field const, CVariant>::pair<Field&&>(std::piecewise_construct_t, std::tuple<Field&&>, std::tuple<>) /usr/include/c++/5/tuple:1161
    #2 0x45dbab in void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<Field const, CVariant> > >::construct<std::pair<Field const, CVariant>, std::piecewise_construct_t const&, std::tuple<Field&&>, std::tuple<> >(std::pair<Field const, CVariant>*, std::piecewise_construct_t const&, std::tuple<Field&&>&&, std::tuple<>&&) /usr/include/c++/5/ext/new_allocator.h:120
    #3 0x45dbab in void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<Field const, CVariant> > > >::construct<std::pair<Field const, CVariant>, std::piecewise_construct_t const&, std::tuple<Field&&>, std::tuple<> >(std::allocator<std::_Rb_tree_node<std::pair<Field const, CVariant> > >&, std::pair<Field const, CVariant>*, std::piecewise_construct_t const&, std::tuple<Field&&>&&, std::tuple<>&&) /usr/include/c++/5/bits/alloc_traits.h:530
    #4 0x45dbab in void std::_Rb_tree<Field, std::pair<Field const, CVariant>, std::_Select1st<std::pair<Field const, CVariant> >, std::less<Field>, std::allocator<std::pair<Field const, CVariant> > >::_M_construct_node<std::piecewise_construct_t const&, std::tuple<Field&&>, std::tuple<> >(std::_Rb_tree_node<std::pair<Field const, CVariant> >*, std::piecewise_construct_t const&, std::tuple<Field&&>&&, std::tuple<>&&) /usr/include/c++/5/bits/stl_tree.h:529
    #5 0x45dbab in std::_Rb_tree_node<std::pair<Field const, CVariant> >* std::_Rb_tree<Field, std::pair<Field const, CVariant>, std::_Select1st<std::pair<Field const, CVariant> >, std::less<Field>, std::allocator<std::pair<Field const, CVariant> > >::_M_create_node<std::piecewise_construct_t const&, std::tuple<Field&&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<Field&&>&&, std::tuple<>&&) /usr/include/c++/5/bits/stl_tree.h:546
    #6 0x45dbab in std::_Rb_tree_iterator<std::pair<Field const, CVariant> > std::_Rb_tree<Field, std::pair<Field const, CVariant>, std::_Select1st<std::pair<Field const, CVariant> >, std::less<Field>, std::allocator<std::pair<Field const, CVariant> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<Field&&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<Field const, CVariant> >, std::piecewise_construct_t const&, std::tuple<Field&&>&&, std::tuple<>&&) /usr/include/c++/5/bits/stl_tree.h:2170
    #7 0xf200d7 in std::map<Field, CVariant, std::less<Field>, std::allocator<std::pair<Field const, CVariant> > >::operator[](Field&&) /usr/include/c++/5/bits/stl_map.h:502
    #8 0xf200d7 in TestSortUtils_Sort_SortBy_Test::TestBody() /home/rbalint/kodi-16.0+dfsg1/xbmc/utils/test/TestSortUtils.cpp:32
    #9 0xe2f443 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/rbalint/kodi-16.0+dfsg1/lib/gtest/src/gtest.cc:2078
    #10 0xe2f443 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/rbalint/kodi-16.0+dfsg1/lib/gtest/src/gtest.cc:2114
    #11 0xe277ff in testing::Test::Run() /home/rbalint/kodi-16.0+dfsg1/lib/gtest/src/gtest.cc:2151
    #12 0xe2799f in testing::TestInfo::Run() /home/rbalint/kodi-16.0+dfsg1/lib/gtest/src/gtest.cc:2326
    #13 0xe27aa3 in testing::TestCase::Run() /home/rbalint/kodi-16.0+dfsg1/lib/gtest/src/gtest.cc:2444
    #14 0xe27dd3 in testing::internal::UnitTestImpl::RunAllTests() /home/rbalint/kodi-16.0+dfsg1/lib/gtest/src/gtest.cc:4315
    #15 0xe281a3 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/rbalint/kodi-16.0+dfsg1/lib/gtest/src/gtest.cc:2078
    #16 0xe281a3 in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/rbalint/kodi-16.0+dfsg1/lib/gtest/src/gtest.cc:2114
    #17 0xe281a3 in testing::UnitTest::Run() /home/rbalint/kodi-16.0+dfsg1/lib/gtest/src/gtest.cc:3926
    #18 0x3efcef in RUN_ALL_TESTS() /usr/include/gtest/gtest.h:2288
    #19 0x3efcef in main /home/rbalint/kodi-16.0+dfsg1/xbmc/test/xbmc-test.cpp:52
    #20 0xb3a37beb in __libc_start_main (/lib/arm-linux-gnueabi/libc.so.6+0x16beb)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV /usr/include/c++/5/tuple:1172 std::pair<Field const, CVariant>::pair<Field&&, 0u>(std::tuple<Field&&>&, std::tuple<>&, std::_Index_tuple<0u>, std::_Index_tuple<>)
==18199==ABORTING

The test on other architectures does not fail. I'm assigning it to libstdc++-5-dev because it looks like an STL issue in handling the Field constant.

Thanks,
Balint


Reply to: