apache / celix

Apache Celix is a framework for C and C++14 to develop dynamic modular software applications using component and in-process service-oriented programming.
https://celix.apache.org/
Apache License 2.0
158 stars 85 forks source link

Address sanitizer error for celix_filter_create #672

Closed xuzhenbao closed 8 months ago

xuzhenbao commented 8 months ago

The following unit test case will triger an address sannitizer error.

TEST_F(FilterTestSuite, create_fail_missing_filter_operand) { celix_filter_t * filter= celix_filter_create("(&(test))"); ASSERT_TRUE(filter == NULL); }

Stack info:

RUN ] FilterTestSuite.create_fail_missing_filter_operand Filter Error: Invalid operator. AddressSanitizer:DEADLYSIGNAL

==54904==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000008 (pc 0x555aa432cc4e bp 0x7fff45cf2bb0 sp 0x7fff45cf2ba0 T0) ==54904==The signal is caused by a READ memory access. ==54904==Hint: address points to the zero page.

0 0x555aa432cc4e in celix_arrayList_size /home/xuzhenbao/code/my_celix/libs/utils/src/array_list.c:403

#1 0x555aa433e308 in celix_filter_compile /home/xuzhenbao/code/my_celix/libs/utils/src/filter.c:452
#2 0x555aa433fbe4 in celix_filter_create /home/xuzhenbao/code/my_celix/libs/utils/src/filter.c:660
#3 0x555aa42a3f95 in FilterTestSuite_create_fail_missing_filter_operand_Test::TestBody() /home/xuzhenbao/code/my_celix/libs/utils/gtest/src/FilterTestSuite.cc:422
#4 0x7f975d31d97b in void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/src/gtest.cc:2433
#5 0x7f975d316ea4 in void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/src/gtest.cc:2469
#6 0x7f975d2f4423 in testing::Test::Run() /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/src/gtest.cc:2508
#7 0x7f975d2f4d38 in testing::TestInfo::Run() /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/src/gtest.cc:2684
#8 0x7f975d2f53fd in testing::TestSuite::Run() /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/src/gtest.cc:2816
#9 0x7f975d300e34 in testing::internal::UnitTestImpl::RunAllTests() /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/src/gtest.cc:5338
#10 0x7f975d31eb46 in bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/src/gtest.cc:2433
#11 0x7f975d317f00 in bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/src/gtest.cc:2469
#12 0x7f975d2ff89f in testing::UnitTest::Run() /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/src/gtest.cc:4925
#13 0x7f975e41a224 in RUN_ALL_TESTS() /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/include/gtest/gtest.h:2473
#14 0x7f975e41a1a9 in main /home/conan/w/prod/BuildSingleReference/.conan/data/gtest/1.10.0/_/_/build/2ded574d9f60672cea82f5a44c86e89683f673b2/src/googletest/src/gtest_main.cc:45
PengZheng commented 8 months ago

Fix for this issue should also be backported to 2.x LTS branch, which we still don't have.