Commit graph

272 commits

Author SHA1 Message Date
Thomas Braun
9ea3e19121 .travis/cmake: Rework clang sanitizer invocation
- Switch to clang-7
- Adapt PATH so that llvm-symbolizer can be found for useful stacktraces
- Adapt compile flags
  "-O0" ensures much faster compile times
  "-fno-sanitize-recover=all
  -fsanitize-recover=unsigned-integer-overflow" this fails the build on
  all issues except unsigned integer overflows. Not failing in this case
  is required in combination with the sanitizer suppression file as only
  recoverable errors can be suppressed.

The UBSAN suppression file ignores errors from stl_bvector.h (which
holds std::vector<bool>).

Clang reports that error as

SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20 in

      Start 34: test-deserialization_all
28/88 Test #71: test-testsuites_default .............***Failed    0.32 sec
/usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20: runtime error: unsigned integer overflow: 0 - 1 cannot be represented in type 'unsigned int'
    #0 0x628f72 in std::_Bit_iterator_base::_M_bump_down() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:158:20
    #1 0x628d16 in std::_Bit_iterator::operator--() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:251:7
    #2 0x634aac in std::vector<bool, std::allocator<bool> >::pop_back() /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_bvector.h:1010:7
    #3 0x61eff0 in bool nlohmann::detail::parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >::sax_parse_internal<nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> > >(nlohmann::detail::json_sax_dom_parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >*) /home/firma/devel/json/include/nlohmann/detail/input/parser.hpp:439:28
    #4 0x604864 in nlohmann::detail::parser<nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer> >::parse(bool, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&) /home/firma/devel/json/include/nlohmann/detail/input/parser.hpp:116:13
    #5 0x5f8079 in nlohmann::operator>>(std::istream&, nlohmann::basic_json<std::map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::adl_serializer>&) /home/firma/devel/json/include/nlohmann/json.hpp:6356:42
    #6 0x5e1d92 in _DOCTEST_ANON_FUNC_21() /home/firma/devel/json/test/src/unit-testsuites.cpp:343:9
    #7 0x7207fe in doctest::Context::run() /home/firma/devel/json/test/thirdparty/doctest/doctest.h:5938:21
    #8 0x72681a in main /home/firma/devel/json/test/thirdparty/doctest/doctest.h:6016:71
    #9 0x7f75d22362e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
    #10 0x4c28b9 in _start (/home/firma/devel/json/build/test/test-testsuites+0x4c28b9)

The pop_back() in parser.hpp

      assert(not states.empty());
  ->  states.pop_back();

triggers the UBSAN report. But the assertion above ensure that we only
call pop_back() on an non-empty vector, therefore this is a STL library
bug and thus must be ignored for us.
2019-09-03 13:22:03 +02:00
Thomas Braun
a4eaaa56d1 .travis.yml: Add gcc 9 and compile with experimental C++20 support 2019-08-26 12:38:36 +02:00
Niels Lohmann
02b3494711
🔥 removing unstable macOS builds on Traivs 2019-03-16 08:28:44 +01:00
Niels Lohmann
670f42b561
🔥 removing Xcode 6.4 builder 2019-03-11 22:59:22 +01:00
Niels Lohmann
c11bead2ae
👷 removing more retired Travis images 2019-03-11 21:22:30 +01:00
Niels Lohmann
16d9cdce45
📝 updated documentation of CI 2019-03-11 15:19:50 +01:00
Niels Lohmann
e3729ba0a5
💚 fix compiler selection 2019-03-11 07:44:40 +01:00
Niels Lohmann
e5c7fd488d
👷 trying new Travis workers 2019-03-10 22:56:14 +01:00
Henry Fredrick Schreiner
7a37ba0c02 Adding 4.8 test to travis 2018-09-27 22:31:39 +02:00
Niels Lohmann
4e2f35d4c2
👷 adding Xcode 10 worker
See https://blog.travis-ci.com/2018-09-13-xcode-10-is-now-available?utm_source=twitter&utm_medium=web&utm_campaign=xcode10_gm
2018-09-18 19:22:30 +02:00
Niels Lohmann
ba4a19d4af
👷 added more CI workers 2018-08-01 20:59:58 +02:00
Niels Lohmann
043eff5ba8
👷 added more CI workers 2018-07-31 21:18:33 +02:00
Niels Lohmann
c02a3155d4
👷 added Xcode 9.3 builder
See https://blog.travis-ci.com/2018-04-09-say-bonjour-to-xcode-93-and-macos-high-sierra.
2018-04-10 08:39:28 +02:00
Kevin Tonon
a35d414c39 Update CMake to latest on Travis 2018-04-03 08:28:07 -04:00
Théo DELRIEU
41db7cd818
Make the coveralls job use the multiple header version 2018-02-12 10:23:33 +01:00
Niels Lohmann
74675dd69c
back to the original version 2018-02-09 22:40:52 +01:00
Niels Lohmann
ab05df3a48
🔨 another try 2018-02-09 22:27:08 +01:00
Niels Lohmann
b455154cc9
🔨 another try 2018-02-09 22:18:51 +01:00
Niels Lohmann
1e8f4d6ab3
🔨 more trying 2018-02-09 22:11:05 +01:00
Niels Lohmann
316634e129
🔨 added quotes around parameters 2018-02-09 21:54:32 +01:00
Niels Lohmann
0111f3187e
🔨 working on #953 2018-02-09 21:30:15 +01:00
Niels Lohmann
3a887dc9fe
👷 fixed coveralls 2018-02-02 07:56:30 +01:00
Niels Lohmann
5c2a0a511e
👷 fixed coveralls 2018-02-02 07:31:57 +01:00
Niels Lohmann
b779666916
👷 re-added homebrew tests 2018-02-02 00:20:04 +01:00
Niels Lohmann
a8fcfd9880
👷 fixed travis file 2018-02-01 22:34:14 +01:00
Niels Lohmann
0258484626
🔖 set version to 3.1.0
- updated documentation wrt. new repository layout
- temporarily switched off Homebrew --HEAD building (can only be switched on after release)
- set copyright date to 2018
2018-02-01 22:20:26 +01:00
Niels Lohmann
355c1e946b
👷 added task to check amalgamation #906
- Builds and runs test cases from individual sources rather than from amalgamation.
- Checks whether amalgamation would create the same single-header file as checked in.
2018-01-23 18:00:12 +01:00
Niels Lohmann
06cddd371b
🔨 removed failing amalgamation test 2018-01-14 17:22:42 +01:00
Niels Lohmann
411c16cbb2
📝 overworked documentation wrt. amalgamation #906 2018-01-14 13:08:28 +01:00
Niels Lohmann
7c2d4f1852
👷 added Xcode 9.1 and 9.2 2017-12-06 22:32:03 +01:00
Niels Lohmann
73d1b55aba
🔧 executing tests in parallel 2017-10-05 19:43:39 +02:00
Niels Lohmann
c204ac82e0
🔨 adjusted Coverity script to work without Makefile 2017-10-05 07:13:59 +02:00
Niels Lohmann
1b3df3a63f
🔨 trying to use Coveralls with CMake #698 2017-10-04 22:18:21 +02:00
Niels Lohmann
b41b13047c
👷 removed unneccessary test 2017-08-27 11:30:36 +02:00
Niels Lohmann
0e94ba8857
👷 using the same compilers 2017-08-26 08:56:34 +02:00
Niels Lohmann
4f5c345817
👷 run sanitizer another time to check if it works 2017-08-26 08:20:37 +02:00
Niels Lohmann
8608f42187
👷 trying to use libstdc++
https://github.com/travis-ci/apt-source-whitelist/issues/372#issuecomment-320547215
2017-08-25 22:49:18 +02:00
Niels Lohmann
268f5a3d0a
👷 added option to switch off exceptions 2017-08-25 21:29:27 +02:00
Niels Lohmann
839681ff9f
👷 using Ninja 2017-08-25 21:01:07 +02:00
Niels Lohmann
05b97c473a
👷 added flags for Valgrind and Clang sanitizer 2017-08-25 20:12:21 +02:00
Niels Lohmann
e45eaf6e30
Revert "👷 using libc++ with Clang"
This reverts commit 41b2c69bdb.
2017-08-23 08:39:19 +02:00
Niels Lohmann
41b2c69bdb
👷 using libc++ with Clang 2017-08-22 22:04:38 +02:00
Niels Lohmann
cd53790993
👷 using Clang 5.0 2017-08-21 20:03:24 +02:00
Niels Lohmann
ba5d37ba4b
👷 added Clang 5.0 (see https://docs.travis-ci.com/user/languages/cpp/#clang) 2017-08-21 17:27:35 +02:00
Niels Lohmann
f5a53de845
👷 running sanitizer job in parallel 2017-08-16 09:21:20 +02:00
Niels Lohmann
21726d8d8f
👷 run sanitizer after tests 2017-08-16 08:11:02 +02:00
Niels Lohmann
df572aca79
👷 set sanitizer to clang4 2017-08-16 07:42:57 +02:00
Niels Lohmann
fdff42bc3d
👷 forgot to install Cmake on OSX 2017-08-15 20:30:01 +02:00
Niels Lohmann
569c00eb18
👷 changed c++17 to c++1z 2017-08-10 23:41:12 +02:00
Niels Lohmann
bade3b3e6c
👷 cleanup 2017-08-10 21:17:40 +02:00