[ 
https://issues.apache.org/jira/browse/DISPATCH-1783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17465349#comment-17465349
 ] 

ASF GitHub Bot commented on DISPATCH-1783:
------------------------------------------

jiridanek commented on pull request #1469:
URL: https://github.com/apache/qpid-dispatch/pull/1469#issuecomment-1001168732


   ```
   test 75
         Start 75: c_unittests
   
   75: Test command: /usr/bin/python3 
"/__w/qpid-dispatch/qpid-dispatch/qpid-dispatch/build/tests/run.py" 
"/__w/qpid-dispatch/qpid-dispatch/qpid-dispatch/build/tests/c_unittests/c_unittests"
   75: Test timeout computed to be: 1200
   75: [doctest] doctest version is "2.4.6"
   75: [doctest] run with "--help" for options
   75: ==================
   75: WARNING: ThreadSanitizer: signal-unsafe call inside of a signal 
(pid=4759)
   75:     #0 operator new(unsigned long) <null> (libtsan.so.0+0x896fc)
   75:     #1 void std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::_M_construct<char const*>(char const*, char const*, 
std::forward_iterator_tag) /usr/include/c++/11/bits/basic_string.tcc:219 
(c_unittests+0x43d04d)
   75:     #2 std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) 
/usr/include/c++/11/bits/basic_string.h:539 (c_unittests+0x44675e)
   75:     #3 handleSignal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4366
 (c_unittests+0x44675e)
   75:     #4 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, 
bool, int, __sanitizer::__sanitizer_siginfo*, void*) <null> 
(libtsan.so.0+0x2e803)
   75:     #5 doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6486
 (c_unittests+0x458747)
   75:     #6 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6571
 (c_unittests+0x43b762)
   75: 
   75: SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal 
(/lib64/libtsan.so.0+0x896fc) in operator new(unsigned long)
   75: ==================
   75: ==================
   75: WARNING: ThreadSanitizer: signal-unsafe call inside of a signal 
(pid=4759)
   75:     #0 operator new[](unsigned long) <null> (libtsan.so.0+0x897fc)
   75:     #1 doctest::String::String(char const*, unsigned int) 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:3256
 (c_unittests+0x442d03)
   75:     #2 doctest::String::String(char const*) 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:3244
 (c_unittests+0x446823)
   75:     #3 reportFatal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4442
 (c_unittests+0x446823)
   75:     #4 handleSignal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4366
 (c_unittests+0x446823)
   75:     #5 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, 
bool, int, __sanitizer::__sanitizer_siginfo*, void*) <null> 
(libtsan.so.0+0x2e803)
   75:     #6 doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6486
 (c_unittests+0x458747)
   75:     #7 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6571
 (c_unittests+0x43b762)
   75: 
   75: SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal 
(/lib64/libtsan.so.0+0x897fc) in operator new[](unsigned long)
   75: ==================
   75: ==================
   75: WARNING: ThreadSanitizer: signal-unsafe call inside of a signal 
(pid=4759)
   75:     #0 operator delete[](void*) <null> (libtsan.so.0+0x88d78)
   75:     #1 doctest::String::~String() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:3239
 (c_unittests+0x446864)
   75:     #2 doctest::String::~String() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:3237
 (c_unittests+0x446864)
   75:     #3 doctest::TestCaseException::~TestCaseException() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:1732
 (c_unittests+0x446864)
   75:     #4 reportFatal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4442
 (c_unittests+0x446864)
   75:     #5 handleSignal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4366
 (c_unittests+0x446864)
   75:     #6 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, 
bool, int, __sanitizer::__sanitizer_siginfo*, void*) <null> 
(libtsan.so.0+0x2e803)
   75:     #7 doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6486
 (c_unittests+0x458747)
   75:     #8 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6571
 (c_unittests+0x43b762)
   75: 
   75: SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal 
(/lib64/libtsan.so.0+0x88d78) in operator delete[](void*)
   75: ==================
   75: 
===============================================================================
   75: 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/test_terminus.cpp:42:
   75: TEST CASE:  test_safe_snprintf
   75:   vsnprintf failure
   75: 
   75: 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/test_terminus.cpp:42:
 FATAL ERROR: test case CRASHED: SIGSEGV - Segmentation violation signal
   75: 
   75: 
===============================================================================
   75: 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/test_terminus.cpp:42:
   75: TEST CASE:  test_safe_snprintf
   75: 
   75: DEEPEST SUBCASE STACK REACHED (DIFFERENT FROM THE CURRENT ONE):
   75:   vsnprintf failure
   75: 
   75: 
===============================================================================
   75: [doctest] test cases:  7 |  6 passed | 1 failed | 1 skipped
   75: [doctest] assertions: 57 | 57 passed | 0 failed |
   75: [doctest] Status: FAILURE!
   75: ==================
   75: WARNING: ThreadSanitizer: signal-unsafe call inside of a signal 
(pid=4759)
   75:     #0 operator delete(void*) <null> (libtsan.so.0+0x88c98)
   75:     #1 __gnu_cxx::new_allocator<char>::deallocate(char*, unsigned long) 
/usr/include/c++/11/ext/new_allocator.h:145 (c_unittests+0x446ad2)
   75:     #2 std::allocator_traits<std::allocator<char> 
>::deallocate(std::allocator<char>&, char*, unsigned long) 
/usr/include/c++/11/bits/alloc_traits.h:496 (c_unittests+0x446ad2)
   75:     #3 std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::_M_destroy(unsigned long) 
/usr/include/c++/11/bits/basic_string.h:245 (c_unittests+0x446ad2)
   75:     #4 std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::_M_dispose() 
/usr/include/c++/11/bits/basic_string.h:240 (c_unittests+0x446ad2)
   75:     #5 std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::~basic_string() 
/usr/include/c++/11/bits/basic_string.h:671 (c_unittests+0x446ad2)
   75:     #6 handleSignal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4366
 (c_unittests+0x446ad2)
   75:     #7 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, 
bool, int, __sanitizer::__sanitizer_siginfo*, void*) <null> 
(libtsan.so.0+0x2e803)
   75:     #8 doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6486
 (c_unittests+0x458747)
   75:     #9 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6571
 (c_unittests+0x43b762)
   75: 
   75: SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal 
(/lib64/libtsan.so.0+0x88c98) in operator delete(void*)
   75: ==================
   75: ThreadSanitizer:DEADLYSIGNAL
   75: ==4759==ERROR: ThreadSanitizer: SEGV on unknown address 0x000000001297 
(pc 0x7f5971a10868 bp 0x1000010d4a00 sp 0x7ffff03b4e90 T4759)
   75: ==4759==The signal is caused by a WRITE memory access.
   75:     #0 __tsan_write1 <null> (libtsan.so.0+0x91868)
   75:     #1 void Stub::set<int (*)(char*, unsigned long, char const*, 
__va_list_tag*), int (*)(char*, unsigned long, char const*, ...)>(int 
(*)(char*, unsigned long, char const*, __va_list_tag*), int (*)(char*, unsigned 
long, char const*, ...)) 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/cpp-stub/cpp_stub.h:247
 (c_unittests+0x490ea4)
   75:     #2 _DOCTEST_ANON_FUNC_2 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/test_terminus.cpp:88
 (c_unittests+0x490ea4)
   75:     #3 doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6486
 (c_unittests+0x458747)
   75:     #4 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6571
 (c_unittests+0x43b762)
   75:     #5 __libc_start_call_main <null> (libc.so.6+0x2d55f)
   75:     #6 __libc_start_main_impl <null> (libc.so.6+0x2d60b)
   75:     #7 _start <null> (c_unittests+0x43c8e4)
   75: 
   75: ThreadSanitizer can not provide additional info.
   75: SUMMARY: ThreadSanitizer: SEGV (/lib64/libtsan.so.0+0x91868) in 
__tsan_write1
   75: ==4759==ABORTING
   37/38 Test #75: c_unittests .............................***Failed    3.09 
sec
   [doctest] doctest version is "2.4.6"
   [doctest] run with "--help" for options
   ==================
   WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=4759)
       #0 operator new(unsigned long) <null> (libtsan.so.0+0x896fc)
       #1 void std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::_M_construct<char const*>(char const*, char const*, 
std::forward_iterator_tag) /usr/include/c++/11/bits/basic_string.tcc:219 
(c_unittests+0x43d04d)
       #2 std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) 
/usr/include/c++/11/bits/basic_string.h:539 (c_unittests+0x44675e)
       #3 handleSignal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4366
 (c_unittests+0x44675e)
       #4 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, bool, 
int, __sanitizer::__sanitizer_siginfo*, void*) <null> (libtsan.so.0+0x2e803)
       #5 doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6486
 (c_unittests+0x458747)
       #6 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6571
 (c_unittests+0x43b762)
   
   SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal 
(/lib64/libtsan.so.0+0x896fc) in operator new(unsigned long)
   ==================
   ==================
   WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=4759)
       #0 operator new[](unsigned long) <null> (libtsan.so.0+0x897fc)
       #1 doctest::String::String(char const*, unsigned int) 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:3256
 (c_unittests+0x442d03)
       #2 doctest::String::String(char const*) 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:3244
 (c_unittests+0x446823)
       #3 reportFatal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4442
 (c_unittests+0x446823)
       #4 handleSignal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4366
 (c_unittests+0x446823)
       #5 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, bool, 
int, __sanitizer::__sanitizer_siginfo*, void*) <null> (libtsan.so.0+0x2e803)
       #6 doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6486
 (c_unittests+0x458747)
       #7 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6571
 (c_unittests+0x43b762)
   
   SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal 
(/lib64/libtsan.so.0+0x897fc) in operator new[](unsigned long)
   ==================
   ==================
   WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=4759)
       #0 operator delete[](void*) <null> (libtsan.so.0+0x88d78)
       #1 doctest::String::~String() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:3239
 (c_unittests+0x446864)
       #2 doctest::String::~String() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:3237
 (c_unittests+0x446864)
       #3 doctest::TestCaseException::~TestCaseException() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:1732
 (c_unittests+0x446864)
       #4 reportFatal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4442
 (c_unittests+0x446864)
       #5 handleSignal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4366
 (c_unittests+0x446864)
       #6 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, bool, 
int, __sanitizer::__sanitizer_siginfo*, void*) <null> (libtsan.so.0+0x2e803)
       #7 doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6486
 (c_unittests+0x458747)
       #8 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6571
 (c_unittests+0x43b762)
   
   SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal 
(/lib64/libtsan.so.0+0x88d78) in operator delete[](void*)
   ==================
   
===============================================================================
   
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/test_terminus.cpp:42:
   TEST CASE:  test_safe_snprintf
     vsnprintf failure
   
   
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/test_terminus.cpp:42:
 FATAL ERROR: test case CRASHED: SIGSEGV - Segmentation violation signal
   
   
===============================================================================
   
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/test_terminus.cpp:42:
   TEST CASE:  test_safe_snprintf
   
   DEEPEST SUBCASE STACK REACHED (DIFFERENT FROM THE CURRENT ONE):
     vsnprintf failure
   
   
===============================================================================
   [doctest] test cases:  7 |  6 passed | 1 failed | 1 skipped
   [doctest] assertions: 57 | 57 passed | 0 failed |
   [doctest] Status: FAILURE!
   ==================
   WARNING: ThreadSanitizer: signal-unsafe call inside of a signal (pid=4759)
       #0 operator delete(void*) <null> (libtsan.so.0+0x88c98)
       #1 __gnu_cxx::new_allocator<char>::deallocate(char*, unsigned long) 
/usr/include/c++/11/ext/new_allocator.h:145 (c_unittests+0x446ad2)
       #2 std::allocator_traits<std::allocator<char> 
>::deallocate(std::allocator<char>&, char*, unsigned long) 
/usr/include/c++/11/bits/alloc_traits.h:496 (c_unittests+0x446ad2)
       #3 std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::_M_destroy(unsigned long) 
/usr/include/c++/11/bits/basic_string.h:245 (c_unittests+0x446ad2)
       #4 std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::_M_dispose() 
/usr/include/c++/11/bits/basic_string.h:240 (c_unittests+0x446ad2)
       #5 std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::~basic_string() 
/usr/include/c++/11/bits/basic_string.h:671 (c_unittests+0x446ad2)
       #6 handleSignal 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:4366
 (c_unittests+0x446ad2)
       #7 __tsan::CallUserSignalHandler(__tsan::ThreadState*, bool, bool, bool, 
int, __sanitizer::__sanitizer_siginfo*, void*) <null> (libtsan.so.0+0x2e803)
       #8 doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6486
 (c_unittests+0x458747)
       #9 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6571
 (c_unittests+0x43b762)
   
   SUMMARY: ThreadSanitizer: signal-unsafe call inside of a signal 
(/lib64/libtsan.so.0+0x88c98) in operator delete(void*)
   ==================
   ThreadSanitizer:DEADLYSIGNAL
   ==4759==ERROR: ThreadSanitizer: SEGV on unknown address 0x000000001297 (pc 
0x7f5971a10868 bp 0x1000010d4a00 sp 0x7ffff03b4e90 T4759)
   ==4759==The signal is caused by a WRITE memory access.
       #0 __tsan_write1 <null> (libtsan.so.0+0x91868)
       #1 void Stub::set<int (*)(char*, unsigned long, char const*, 
__va_list_tag*), int (*)(char*, unsigned long, char const*, ...)>(int 
(*)(char*, unsigned long, char const*, __va_list_tag*), int (*)(char*, unsigned 
long, char const*, ...)) 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/cpp-stub/cpp_stub.h:247
 (c_unittests+0x490ea4)
       #2 _DOCTEST_ANON_FUNC_2 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/test_terminus.cpp:88
 (c_unittests+0x490ea4)
       #3 doctest::Context::run() 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6486
 (c_unittests+0x458747)
       #4 main 
/home/runner/work/qpid-dispatch/qpid-dispatch/qpid-dispatch/tests/c_unittests/doctest.h:6571
 (c_unittests+0x43b762)
       #5 __libc_start_call_main <null> (libc.so.6+0x2d55f)
       #6 __libc_start_main_impl <null> (libc.so.6+0x2d60b)
       #7 _start <null> (c_unittests+0x43c8e4)
   
   ThreadSanitizer can not provide additional info.
   SUMMARY: ThreadSanitizer: SEGV (/lib64/libtsan.so.0+0x91868) in __tsan_write1
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


> Add ability to use test doubles (mocks, fakes, ...) in C tests
> --------------------------------------------------------------
>
>                 Key: DISPATCH-1783
>                 URL: https://issues.apache.org/jira/browse/DISPATCH-1783
>             Project: Qpid Dispatch
>          Issue Type: Improvement
>          Components: Tests
>    Affects Versions: 1.14.0
>            Reporter: Jiri Daněk
>            Priority: Major
>
> During the work on https://github.com/apache/qpid-dispatch/pull/684, there 
> was at one point a version of the PR, which tested what happens if 
> {{vsnprintf}} called from {{safe_snprinf}} returns {{-1}}.
> This was done by replacing the {{vsnprintf}} with a mock (technically it's 
> probably a stub, or maybe fake, but let's ignore the proper terminology).
> There are various possibilities how to approach mocking in C. They are less 
> nice than in more dynamic languages such as Java, or even C++ (where it's 
> possible to subclass things). Nevertheless, it can be useful technique, and 
> it should be explored.
> CC [~cans]



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to