New issue
Advanced search Search tips

Issue 901704 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Nov 7
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug



Sign in to add a comment

ASan/UBSan failure in vm_host_tools unit tests on amd64-generic-asan

Project Member Reported by sa...@chromium.org, Nov 5

Issue description

Subnet-related code/tests are shifting an int by 32, which is undefined behaviour.

https://cros-goldeneye.corp.google.com/chromeos/healthmonitoring/buildDetails?buildbucketId=8930755155292912032
https://luci-logdog.appspot.com/logs/chromeos/buildbucket/cr-buildbucket.appspot.com/8930755155292912032/+/steps/UnitTest/0/stdout

vm_host_tools-0.0.1-r200: /build/amd64-generic/tmp/portage/chromeos-base/vm_host_tools-0.0.1-r200/work/vm_host_tools-0.0.1/common-mk/platform2_test.py --action=post_test --sysroot=/build/amd64-generic -- 
vm_host_tools-0.0.1-r200: ERROR: ld.so: object 'libsandbox.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
vm_host_tools-0.0.1-r200: >>> Completed testing chromeos-base/vm_host_tools-0.0.1-r200
vm_host_tools-0.0.1-r200:  * Running stacked hooks for post_src_test
vm_host_tools-0.0.1-r200:  *    asan_check ...
vm_host_tools-0.0.1-r200:  * ERROR: chromeos-base/vm_host_tools-0.0.1-r200::chromiumos failed (test phase):
vm_host_tools-0.0.1-r200:  *   asan error not caught
vm_host_tools-0.0.1-r200:  * 
vm_host_tools-0.0.1-r200:  * Call stack:
vm_host_tools-0.0.1-r200:  *        ebuild.sh, line  133:  Called post_src_test
vm_host_tools-0.0.1-r200:  *      environment, line 3862:  Called cros_stack_hooks 'post_src_test'
vm_host_tools-0.0.1-r200:  *   profile.bashrc, line   86:  Called cros_post_src_test_asan_check
vm_host_tools-0.0.1-r200:  *   profile.bashrc, line  209:  Called die
vm_host_tools-0.0.1-r200:  * The specific snippet of code:
vm_host_tools-0.0.1-r200:  *   	rmdir "${T}/asan_logs" 2>/dev/null || die "asan error not caught"
vm_host_tools-0.0.1-r200:  * 
vm_host_tools-0.0.1-r200:  * If you need support, post the output of `emerge --info '=chromeos-base/vm_host_tools-0.0.1-r200::chromiumos'`,
vm_host_tools-0.0.1-r200:  * the complete build log and the output of `emerge -pqv '=chromeos-base/vm_host_tools-0.0.1-r200::chromiumos'`.
vm_host_tools-0.0.1-r200: 
vm_host_tools-0.0.1-r200:  * ASAN error detected:
vm_host_tools-0.0.1-r200:  * ../../../../../../../tmp/portage/chromeos-base/vm_host_tools-0.0.1-r200/work/vm_host_tools-0.0.1/vm_tools/concierge/subnet_test.cc:76:3: runtime error: shift exponent 32 is too large for 32-bit type 'unsigned int'
vm_host_tools-0.0.1-r200:  *     #0 0x56333b22aa98 in vm_tools::concierge::PrefixTest_Netmask_Test::TestBody() /build/amd64-generic/var/cache/portage/chromeos-base/vm_host_tools/out/Default/../../../../../../../tmp/portage/chromeos-base/vm_host_tools-0.0.1-r200/work/vm_host_tools-0.0.1/vm_tools/concierge/subnet_test.cc:76:3
vm_host_tools-0.0.1-r200:  *     #1 0x7f092ca52e83 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2402:10
vm_host_tools-0.0.1-r200:  *     #2 0x7f092ca52e83 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2438:0
vm_host_tools-0.0.1-r200:  *     #3 0x7f092ca39520 in testing::Test::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2474:5
vm_host_tools-0.0.1-r200:  *     #4 0x7f092ca3a47f in testing::TestInfo::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2656:11
vm_host_tools-0.0.1-r200:  *     #5 0x7f092ca3ab06 in testing::TestCase::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2774:28
vm_host_tools-0.0.1-r200:  *     #6 0x7f092ca436c6 in testing::internal::UnitTestImpl::RunAllTests() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:4649:43
vm_host_tools-0.0.1-r200:  *     #7 0x7f092ca539a3 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2402:10
vm_host_tools-0.0.1-r200:  *     #8 0x7f092ca539a3 in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2438:0
vm_host_tools-0.0.1-r200:  *     #9 0x7f092ca4328c in testing::UnitTest::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:4257:10
vm_host_tools-0.0.1-r200:  *     #10 0x56333b2cc375 in RUN_ALL_TESTS() /build/amd64-generic/var/cache/portage/chromeos-base/vm_host_tools/out/Default/../../../../../../../usr/include/gtest/gtest.h:2233:46
vm_host_tools-0.0.1-r200:  *     #11 0x56333b2cc375 in main /build/amd64-generic/var/cache/portage/chromeos-base/vm_host_tools/out/Default/../../../../../../../tmp/portage/chromeos-base/vm_host_tools-0.0.1-r200/work/vm_host_tools-0.0.1/common-mk/testrunner.cc:16:0
vm_host_tools-0.0.1-r200:  *     #12 0x7f092a54d735 in __libc_start_main /var/tmp/portage/cross-x86_64-cros-linux-gnu/glibc-2.23-r21/work/glibc-2.23/csu/../csu/libc-start.c:289:0
vm_host_tools-0.0.1-r200:  *     #13 0x56333b133708 in _start ??:0:0
vm_host_tools-0.0.1-r200:  * 
vm_host_tools-0.0.1-r200:  * SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../../../../../../../tmp/portage/chromeos-base/vm_host_tools-0.0.1-r200/work/vm_host_tools-0.0.1/vm_tools/concierge/subnet_test.cc:76:3 in
vm_host_tools-0.0.1-r200:  * ../../../../../../../tmp/portage/chromeos-base/vm_host_tools-0.0.1-r200/work/vm_host_tools-0.0.1/vm_tools/concierge/subnet.cc:42:10: runtime error: shift exponent 32 is too large for 32-bit type 'unsigned int'
vm_host_tools-0.0.1-r200:  *     #0 0x56333b2aee17 in vm_tools::concierge::Subnet::Netmask() const /build/amd64-generic/var/cache/portage/chromeos-base/vm_host_tools/out/Default/../../../../../../../tmp/portage/chromeos-base/vm_host_tools-0.0.1-r200/work/vm_host_tools-0.0.1/vm_tools/concierge/subnet.cc:42:10
vm_host_tools-0.0.1-r200:  *     #1 0x56333b22a7c2 in vm_tools::concierge::PrefixTest_Netmask_Test::TestBody() /build/amd64-generic/var/cache/portage/chromeos-base/vm_host_tools/out/Default/../../../../../../../tmp/portage/chromeos-base/vm_host_tools-0.0.1-r200/work/vm_host_tools-0.0.1/vm_tools/concierge/subnet_test.cc:76:3
vm_host_tools-0.0.1-r200:  *     #2 0x7f092ca52e83 in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2402:10
vm_host_tools-0.0.1-r200:  *     #3 0x7f092ca52e83 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2438:0
vm_host_tools-0.0.1-r200:  *     #4 0x7f092ca39520 in testing::Test::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2474:5
vm_host_tools-0.0.1-r200:  *     #5 0x7f092ca3a47f in testing::TestInfo::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2656:11
vm_host_tools-0.0.1-r200:  *     #6 0x7f092ca3ab06 in testing::TestCase::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2774:28
vm_host_tools-0.0.1-r200:  *     #7 0x7f092ca436c6 in testing::internal::UnitTestImpl::RunAllTests() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:4649:43
vm_host_tools-0.0.1-r200:  *     #8 0x7f092ca539a3 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2402:10
vm_host_tools-0.0.1-r200:  *     #9 0x7f092ca539a3 in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:2438:0
vm_host_tools-0.0.1-r200:  *     #10 0x7f092ca4328c in testing::UnitTest::Run() /build/amd64-generic/tmp/portage/dev-cpp/gtest-1.8.0-r1/work/googletest-release-1.8.0/googletest-abi_x86_64.amd64/./src/gtest.cc:4257:10
vm_host_tools-0.0.1-r200:  *     #11 0x56333b2cc375 in RUN_ALL_TESTS() /build/amd64-generic/var/cache/portage/chromeos-base/vm_host_tools/out/Default/../../../../../../../usr/include/gtest/gtest.h:2233:46
vm_host_tools-0.0.1-r200:  *     #12 0x56333b2cc375 in main /build/amd64-generic/var/cache/portage/chromeos-base/vm_host_tools/out/Default/../../../../../../../tmp/portage/chromeos-base/vm_host_tools-0.0.1-r200/work/vm_host_tools-0.0.1/common-mk/testrunner.cc:16:0
vm_host_tools-0.0.1-r200:  *     #13 0x7f092a54d735 in __libc_start_main /var/tmp/portage/cross-x86_64-cros-linux-gnu/glibc-2.23-r21/work/glibc-2.23/csu/../csu/libc-start.c:289:0
vm_host_tools-0.0.1-r200:  *     #14 0x56333b133708 in _start ??:0:0
vm_host_tools-0.0.1-r200:  * 
vm_host_tools-0.0.1-r200:  * SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../../../../../../../tmp/portage/chromeos-base/vm_host_tools-0.0.1-r200/work/vm_host_tools-0.0.1/vm_tools/concierge/subnet.cc:42:10 in
 
Owner: chirantan@chromium.org
Cc: cmt...@chromium.org llozano@chromium.org manojgupta@chromium.org
 Issue 902594  has been merged into this issue.
Project Member

Comment 3 by bugdroid1@chromium.org, Nov 7

The following revision refers to this bug:
  https://chromium.googlesource.com/chromiumos/platform2/+/7e4aa42ea2601ea42417c2efe75388c43b001ef2

commit 7e4aa42ea2601ea42417c2efe75388c43b001ef2
Author: Chirantan Ekbote <chirantan@chromium.org>
Date: Wed Nov 07 14:34:33 2018

vm_tools: concierge: Fix ASAN build failure

Shifting a 32-bit value by 32 is undefined behavior.  Fix it by marking
the constant as a 64-bit value before shifting and then masking off the
top 32 bits.

BUG= chromium:901704 
TEST=run the test

Change-Id: I65885789e694e0c0b20c4132ba33bd599b21501f
Signed-off-by: Chirantan Ekbote <chirantan@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1318277
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Reviewed-by: Mike Frysinger <vapier@chromium.org>

[modify] https://crrev.com/7e4aa42ea2601ea42417c2efe75388c43b001ef2/vm_tools/concierge/subnet_test.cc
[modify] https://crrev.com/7e4aa42ea2601ea42417c2efe75388c43b001ef2/vm_tools/concierge/subnet.cc

Status: Fixed (was: Untriaged)

Sign in to add a comment