btrfs-progs/.travis.yml
David Sterba f43df8a863 btrfs-progs: ci: add sanitizer coverage
Add builds with ASAN and UBSAN for both gcc. Clang + asan fails at
some tests due to wrong asan runtime, clang + ubsan fails at
libbtrfsutil/btrfsutil_internal.h:71:20:

	memcpy(&tmp, &sh->type, sizeof(__u32));

which seems to be too strict.

    [TEST/cli]   008-subvolume-get-set-default
subvolume get-default: default id is not 256, but
libbtrfsutil/btrfsutil_internal.h:71:20: runtime error: member access within
misaligned address 0x7ffcc8017f67 for type 'const struct
btrfs_ioctl_search_header', which requires 8 byte alignment

0x7ffcc8017f67: note: pointer points here

 00 00 00 00 07  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 05  00 00 00 00 00 00 00 90  00 00 00
             ^

libbtrfsutil/btrfsutil_internal.h:64:20: runtime error: member access within
misaligned address 0x7ffcc8017f67 for type 'const struct
btrfs_ioctl_search_header', which requires 8 byte alignment

0x7ffcc8017f67: note: pointer points here

 00 00 00 00 07  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 05  00 00 00 00 00 00 00 90  00 00 00
             ^

libbtrfsutil/btrfsutil_internal.h:78:20: runtime error: member access within
misaligned address 0x7ffcc8017f67 for type 'const struct
btrfs_ioctl_search_header', which requires 8 byte alignment

0x7ffcc8017f67: note: pointer points here

 00 00 00 00 07  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 05  00 00 00 00 00 00 00 90  00 00 00

Signed-off-by: David Sterba <dsterba@suse.com>
2020-10-20 15:49:07 +02:00

97 lines
3.8 KiB
YAML

#
# Copyright (C) 2016 Roman Lebedev.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public
# License v2 as published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 021110-1307, USA.
#
sudo: required
language: c
matrix:
include:
- os: linux
compiler: gcc
- os: linux
compiler: gcc
env: D=asan
- os: linux
compiler: gcc
env: D=ubsan
- os: linux
compiler: clang
cache:
ccache: true
directories:
- tmp-cached-reiser
- tmp-cached-zstd
git:
depth: 1
dist: bionic
group: unstable
branches:
only:
- devel
- coverity_scan
- master
- release-test
services:
- docker
env:
global:
# The next declaration is the encrypted COVERITY_SCAN_TOKEN, created
# via the "travis encrypt" command using the project repo's public key
- secure: "aOqVfsh0m0iR3ggfuqhri4RHZK1LkQPDfNvPPQLN6VwJnz9QrI7TvLovTM1JwfX+nkyNhRq33+OahQb7PEHWPctFo6o42CcN837syF2fg8ZhTmcU1abJL29GUN/bH3xZXJJoUNJUW79Bp098GEcEmypxJ29Fxs5FQKT57O2FnnJXQLZhsDvSC1tuHtHEnCU1EGmZ6g4QI+eaS3zxKr343WCwRX6xolKHaLZX/UsYMbIMJ1YBaK2zCyOpaXOflQbloI1gcrUcoalIFuwPVbYnu2oXqzsuzHV0ekN+zMAECDNYrTr/OEA0bLR57WC0krLiAr+tA6Rq5E1D6JHg3WxDE7tbuFmrhxW23S9x6xw4+L5KuwNdsIZEdybn4q6zCkkHH3PgOFRF8taxxHKsfJ9fWxZM/kvQa5CNClDrZmfso9U8yWrYgL6fi3fIcuVLE29N2K0v9LkWlsK0REn5/uiEKO5rJ25ytpzCoUg9IRRgMPJaoPtZhSrK+ywZlJqg3f5eRqA7W1A4AEK5cOmWGFW2MOGmTtzhHG/xY0yaPYxgB7u2b7ji8BQdOn3p0ttmBFBxbDChb3LUH+d21iORrYVTG3IDziQTdBLCn/ZUypcLlLXLkkgZMQ9kLhArRmuqlTqPoR2+GNVjRP/uxwZXcszvEb0TATI11rieJW6TN1inWgY="
before_install:
- sudo apt-get update -qq
- sudo apt-get install -qq e2fslibs-dev gcc clang libacl1-dev libblkid-dev liblzo2-dev make pkg-config udev zlib1g-dev acl attr reiserfsprogs python3-setuptools
- echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-
- docker pull kdave/ci-musl-x86_64
- ci/build-dep-reiserfs
- ci/build-dep-zstd
- ci/build-default --disable-documentation --with-convert=ext2,reiserfs
addons:
coverity_scan:
project:
name: "kdave/btrfs-progs"
description: "btrfs-progs"
notification_email: dsterba@suse.cz
build_command_prepend: "./autogen.sh && ./configure --disable-documentation"
build_command: "make"
branch_pattern: coverity_scan
script:
# quick build tests
- "if ci/should-run-test; then docker run -it --env CC=$CC kdave/ci-musl-x86_64 ./test-build $TRAVIS_BRANCH --disable-documentation --disable-backtrace; fi"
- "if ci/should-run-test && ci/not-asan-build; then make TEST_LOG=dump library-test; fi"
# real tests
- "if ci/should-run-test; then make TEST_LOG=dump test-cli; fi"
- "if ci/should-run-test; then make TEST_LOG=dump test-mkfs; fi"
- "if ci/should-run-test; then make TEST_LOG=dump test-check; fi"
- "if ci/should-run-test; then make TEST_LOG=dump TEST_ENABLE_OVERRIDE=true TEST_ARGS_CHECK=--mode=lowmem test-check; fi"
- "if [ ci/should-run-test -a -f /sys/fs/btrfs/features/free_space_tree ]; then make TEST_LOG=dump TEST_ENABLE_OVERRIDE=true TEST_ARGS_MKFS=--runtime-features=free-space-tree test-mkfs; fi"
- "if ci/should-run-test; then make TEST_LOG=dump test-misc; fi"
- "if ci/should-run-test; then make TEST_LOG=dump test-fuzz; fi"
# long running tests
- "if [ $TRAVIS_BRANCH = release-test ]; then make TEST_LOG=dump test-convert; fi"