diff options
author | Jim Apple <jbapple-impala@apache.org> | 2017-03-18 12:56:50 -0700 |
---|---|---|
committer | James E. King, III <jking@apache.org> | 2017-03-25 08:16:18 -0400 |
commit | 147c2849af9c28f2ce347b4005e022ac13db9dd8 (patch) | |
tree | 3253a41ec24827c1c556b22c4591550b72919b2b /.travis.yml | |
parent | 6c08ac72c6ce9faf66bf28ee75cbb87413daa6aa (diff) | |
download | thrift-147c2849af9c28f2ce347b4005e022ac13db9dd8.tar.gz |
THRIFT-2026: Eliminate some undefined behavior in C/C++
Clients: glib, C++
Patch: Jim Apple <jbapple-impala@apache.org>
This closes #1214
This patch fixes some undefined behavior were found using Clang's
UndefinedBehaviorSanitizer (UBSan). To check for undefined behavior,
run /build/docker/scripts/ubsan.sh. This is run during CI builds, as
well.
The examples of the types of undefined behavior fixed in this commit
are:
1. Enumerations exhibit undefined behavior when they have values
outside of a range dependent on the values of their enumerators, as
specified in C++14's chapter 7.2 ("Enumeration declarations"),
paragraph 8.
2. Left shift of negative values, used in zigzag encoding, is
undefined behavior. See 5.8 ("Shift operators"), paragraph 2 for
C++ and 6.5.7 ("Bitwise shift operators"), paragraph 4 for C99 and
C11.
Diffstat (limited to '.travis.yml')
-rw-r--r-- | .travis.yml | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml index 70293edef..10c6fd09b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -152,6 +152,12 @@ env: BUILD_ENV="-e CC=gcc -e CXX=g++" DISTRO=debian + # C and C++ undefined behavior. This wraps autotools.sh, but each binary crashes if + # undefined behavior occurs. Skips the known flaky tests. + - TEST_NAME="UBSan" + SCRIPT="ubsan.sh" + BUILD_ARG="--without-haskell --without-nodejs --without-perl --without-python" + matrix: include: # QA jobs for code analytics and metrics |