Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-41475

UBSan: getMemResidentPer(): value is outside representable values of unsigned long

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Major
    • None
    • Cheshire-Cat
    • couchbase-bucket
    • None
    • Triaged
    • 1
    • Unknown

    Description

      As seen in CV for unrelated code change (http://review.couchbase.org/c/kv_engine/+/135704):

       Running [0050/0158]: stats vkey callback tests...(189 ms) OK
       Running [0051/0158]: warmup stats...../kv_engine/engines/ep/src/vb_count_visitor.h:97:42: runtime error: 1.84467e+21 is outside the range of representable values of type 'unsigned long'
           #0 0x7f91f287445e in VBucketCountVisitor::getMemResidentPer() kv_engine/engines/ep/src/vb_count_visitor.h:97:42
           #1 0x7f91f2e19a05 in KVBucket::getAggregatedVBucketStats(StatCollector&) kv_engine/engines/ep/src/kv_bucket.cc:1195:39
           #2 0x7f91f2c54243 in EventuallyPersistentEngine::doEngineStats(StatCollector&) kv_engine/engines/ep/src/ep_engine.cc:2798:15
           #3 0x7f91f2c4d356 in EventuallyPersistentEngine::getStats(void const*, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)> const&) kv_engine/engines/ep/src/ep_engine.cc:4566:16
           #4 0x7f91f2c4cbe7 in EventuallyPersistentEngine::get_stats(gsl::not_null<void const*>, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)> const&) kv_engine/engines/ep/src/ep_engine.cc:403:33
           #5 0x94d6ce in ENGINE_ERROR_CODE std::__invoke_impl<ENGINE_ERROR_CODE, ENGINE_ERROR_CODE (EngineIface::*&)(gsl::not_null<void const*>, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)> const&), EngineIface*&, gsl::not_null<void const*>&, std::basic_string_view<char, std::char_traits<char> >&, std::basic_string_view<char, std::char_traits<char> >&, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)>&>(std::__invoke_memfun_deref, ENGINE_ERROR_CODE (EngineIface::*&)(gsl::not_null<void const*>, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)> const&), EngineIface*&, gsl::not_null<void const*>&, std::basic_string_view<char, std::char_traits<char> >&, std::basic_string_view<char, std::char_traits<char> >&, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:73:14
           #6 0x94d346 in ENGINE_ERROR_CODE std::_Bind<ENGINE_ERROR_CODE (EngineIface::* (EngineIface*, gsl::not_null<void const*>, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)>))(gsl::not_null<void const*>, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)> const&)>::__call<ENGINE_ERROR_CODE, 0ul, 1ul, 2ul, 3ul, 4ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul>) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/functional:467:11
           #7 0x94d0f9 in ENGINE_ERROR_CODE std::_Bind<ENGINE_ERROR_CODE (EngineIface::* (EngineIface*, gsl::not_null<void const*>, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)>))(gsl::not_null<void const*>, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)> const&)>::operator()<ENGINE_ERROR_CODE>() /usr/bin/../lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/functional:549:17
           #8 0x92f531 in call_engine_and_handle_EWOULDBLOCK(MockCookie*, std::function<ENGINE_ERROR_CODE ()> const&) kv_engine/programs/engine_testapp/mock_engine.cc:61:19
           #9 0x932745 in MockEngine::get_stats(gsl::not_null<void const*>, std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, std::function<void (std::basic_string_view<char, std::char_traits<char> >, std::basic_string_view<char, std::char_traits<char> >, gsl::not_null<void const*>)> const&) kv_engine/programs/engine_testapp/mock_engine.cc:320:12
           #10 0x73e3fa in std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > get_stat<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(EngineIface*, char const*, char const*) kv_engine/engines/ep/tests/ep_test_apis.cc:1498:16
           #11 0x738cf5 in get_str_stat[abi:cxx11](EngineIface*, char const*, char const*) kv_engine/engines/ep/tests/ep_test_apis.cc:1548:12
           #12 0x73ed50 in get_bool_stat(EngineIface*, char const*, char const*) kv_engine/engines/ep/tests/ep_test_apis.cc:1554:20
           #13 0x74085b in wait_for_warmup_complete(EngineIface*) kv_engine/engines/ep/tests/ep_test_apis.cc:1713:10
           #14 0x8039b6 in test_warmup_stats(EngineIface*) kv_engine/engines/ep/tests/ep_testsuite.cc:3606:5
           #15 0x76bcac in execute_test(test, char const*, char const*) kv_engine/programs/engine_testapp/engine_testapp.cc:378:19
           #16 0x76a42b in main kv_engine/programs/engine_testapp/engine_testapp.cc:629:37
           #17 0x7f91ea64182f in __libc_start_main /build/glibc-LK5gWL/glibc-2.23/csu/../csu/libc-start.c:291
           #18 0x668f88 in _start (/home/couchbase/jenkins/workspace/ine.ASan-UBSan.DJR_silent_master/build/kv_engine/ep_testsuite+0x668f88)
       
       SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../kv_engine/engines/ep/src/vb_count_visitor.h:97:42 in 
      

      Logs: http://cv.jenkins.couchbase.com/job/kv_engine.ASan-UBSan.DJR_silent/job/master/949/consoleFull#-2025629021531cd01c-6372-43ba-87e9-b642784df0f9

      Error is reported in the following code:

          size_t getMemResidentPer() {
              size_t numResident = numItems - nonResident;
              return (numItems != 0) ? (size_t)(numResident * 100.0) / (numItems)
                                     : 100;
          }
      

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              drigby Dave Rigby (Inactive)
              drigby Dave Rigby (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes

                  PagerDuty