whyer created ZOOKEEPER-4733:
--------------------------------

             Summary:  non-return function error and asan error in CPPUNIT TESTs
                 Key: ZOOKEEPER-4733
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4733
             Project: ZooKeeper
          Issue Type: Bug
          Components: c client
    Affects Versions: 3.8.2
         Environment: gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
            Reporter: whyer


when enable Werror=return-type check in gcc, the following error occurs:
{quote}zookeeper/zookeeper-client/zookeeper-client-c/tests/ZooKeeperQuorumServer.cc:
 In static member function ‘static std::vector<ZooKeeperQuorumServer*> 
ZooKeeperQuorumServer::getCluster(uint32_t, 
ZooKeeperQuorumServer::tConfigPairs, std::__cxx11::string)’:
zookeeper/zookeeper-client/zookeeper-client-c/tests/ZooKeeperQuorumServer.cc:230:1:
 error: control reaches end of non-void function [-Werror=return-type]
 }{quote}

when enable asan option on cppunit test, the following error occurs:
{quote}1: 
Zookeeper_reconfig::testMigrationCycle=================================================================
1: ==415554==ERROR: AddressSanitizer: heap-buffer-overflow on address 
0x60d00000cf6f at pc 0x560905cbbd12 bp 0x7ffe32d10af0 sp 0x7ffe32d10ae8
1: READ of size 1 at 0x60d00000cf6f thread T0
1:     #0 0x560905cbbd11 in Zookeeper_reconfig::testMigrationCycle() 
zookeeper/zookeeper-client/zookeeper-client-c/tests/TestReconfig.cc:502
1:     #1 0x560905cc21a1 in CppUnit::TestCaller<Zookeeper_reconfig>::runTest() 
/usr/include/cppunit/TestCaller.h:166
1:     #2 0x7fb8248815b1 in CppUnit::TestCaseMethodFunctor::operator()() const 
(/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x235b1)
1:     #3 0x7fb824877eb2 in CppUnit::DefaultProtector::protect(CppUnit::Functor 
const&, CppUnit::ProtectorContext const&) 
(/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x19eb2)
1:     #4 0x7fb82487e7e1 in CppUnit::ProtectorChain::protect(CppUnit::Functor 
const&, CppUnit::ProtectorContext const&) 
(/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x207e1)
1:     #5 0x7fb824886e4f in CppUnit::TestResult::protect(CppUnit::Functor 
const&, CppUnit::Test*, std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&) 
(/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x28e4f)
1:     #6 0x7fb82488138f in CppUnit::TestCase::run(CppUnit::TestResult*) 
(/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x2338f)
1:     #7 0x7fb8248818e2 in 
CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) 
(/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x238e2)
1:     #8 0x7fb8248817fd in CppUnit::TestComposite::run(CppUnit::TestResult*) 
(/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x237fd)
1:     #9 0x7fb8248818e2 in 
CppUnit::TestComposite::doRunChildTests(CppUnit::TestResult*) 
(/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x238e2)
1:     #10 0x7fb8248817fd in CppUnit::TestComposite::run(CppUnit::TestResult*) 
(/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x237fd)
1:     #11 0x7fb824886d71 in CppUnit::TestResult::runTest(CppUnit::Test*) 
(/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x28d71)
1:     #12 0x7fb82488947d in CppUnit::TestRunner::run(CppUnit::TestResult&, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&) (/usr/lib/x86_64-linux-gnu/libcppunit-1.13.so.0+0x2b47d)
1:     #13 0x560905c918a5 in main 
zookeeper/zookeeper-client/zookeeper-client-c/tests/TestDriver.cc:152
1:     #14 0x7fb8230b42e0 in __libc_start_main 
(/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
1:     #15 0x560905c914c9 in _start 
(build/zookeeper/zookeeper-client/zookeeper-client-c/zktest+0x154c9)
1: 
1: 0x60d00000cf6f is located 1 bytes to the left of 138-byte region 
[0x60d00000cf70,0x60d00000cffa)
1: allocated by thread T0 here:
1:     #0 0x7fb824b5fbf0 in operator new(unsigned long) 
(/usr/lib/x86_64-linux-gnu/libasan.so.3+0xc2bf0)
1:     #1 0x7fb823a5f1f6  (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x1111f6)
1:     #2 0x7fb823a5bcb9 in std::ostream& std::ostream::_M_insert<unsigned 
long>(unsigned long) (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x10dcb9)
1:     #3 0x7ffe32d1090f  (<unknown module>)
1: 
1: SUMMARY: AddressSanitizer: heap-buffer-overflow 
zookeeper/zookeeper-client/zookeeper-client-c/tests/TestReconfig.cc:502 in 
Zookeeper_reconfig::testMigrationCycle()
1: Shadow bytes around the buggy address:
1:   0x0c1a7fff9990: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
1:   0x0c1a7fff99a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
1:   0x0c1a7fff99b0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
1:   0x0c1a7fff99c0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
1:   0x0c1a7fff99d0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
1: =>0x0c1a7fff99e0: fa fa fa fa fa fa fa fa fa fa fa fa fa[fa]00 00
1:   0x0c1a7fff99f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02
1:   0x0c1a7fff9a00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
1:   0x0c1a7fff9a10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
1:   0x0c1a7fff9a20: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
1:   0x0c1a7fff9a30: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
1: Shadow byte legend (one shadow byte represents 8 application bytes):
1:   Addressable:           00
1:   Partially addressable: 01 02 03 04 05 06 07 
1:   Heap left redzone:       fa
1:   Heap right redzone:      fb
1:   Freed heap region:       fd
1:   Stack left redzone:      f1
1:   Stack mid redzone:       f2
1:   Stack right redzone:     f3
1:   Stack partial redzone:   f4
1:   Stack after return:      f5
1:   Stack use after scope:   f8
1:   Global redzone:          f9
1:   Global init order:       f6
1:   Poisoned by user:        f7
1:   Container overflow:      fc
1:   Array cookie:            ac
1:   Intra object redzone:    bb
1:   ASan internal:           fe
1:   Left alloca redzone:     ca
1:   Right alloca redzone:    cb
1: ==415554==ABORTING
1/1 Test #1: zktest_runner ....................***Failed    1.42 sec{quote}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to