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

Jiri Daněk commented on PROTON-2294:
------------------------------------

Here's the output in GitHub Actions

https://github.com/jiridanek/qpid-proton/runs/1378890673#step:13:46

{noformat}
       Start  3: c-proactor-test

3: Test command: /opt/hostedtoolcache/Python/3.6.12/x64/bin/python 
"/home/runner/work/qpid-proton/qpid-proton/scripts/env.py" "--" 
"/home/runner/work/qpid-proton/qpid-proton/BLD/c/tests/c-proactor-test"
3: Test timeout computed to be: 1500
3: Error locking mutex: Invalid argument
{noformat}

CC [~cliffjansen]

> pthread_mutex_lock failing with EINVAL in proactor tests
> --------------------------------------------------------
>
>                 Key: PROTON-2294
>                 URL: https://issues.apache.org/jira/browse/PROTON-2294
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: proton-c
>    Affects Versions: proton-c-0.33.0
>            Reporter: Jiri Daněk
>            Priority: Major
>
> Functions {{pthread_mutex_lock}} and {{pthread_mutex_unlock}} return a status 
> code. The status is not checked in Proton code, and any errors are therefore 
> ignored.
> According to notes on https://reviews.llvm.org/D18132?id=50550, which is the 
> CL that implements the  {{ReportTypeMutexInvalidAccess}} TSan check, ignoring 
> the status there is standard practice. Hence the need for the ASan check.
> The TSan warnings that were suppressed in {{# PROTON-2292 & PROTON-1496: 
> false suspected collision between set/free}} only highlight a nonzero return 
> code from the aforementioned functions. This can be demonstrated if return 
> code check is inserted. 
> The TSan warnings are not concerned with potentialities (the way Coverity 
> works), it reports the warnings as it sees the program to execute, and the 
> undefined behavior is happening. There can be false positives, but this is 
> probably not it.
> In c-proactor-test/proactor_disconnect test, {{pthread_mutex_lock}} returns 
> 22, which is EINVAL.
> {code}
> static inline void lock(pmutex *m) {
>     int err = pthread_mutex_lock(m);
>     if (err != 0) {
>         fprintf(stderr, "Error locking mutex: %s\n", strerror(err));
>         exit(1);
>     }
> }
> static inline void unlock(pmutex *m) {
>     int err = pthread_mutex_unlock(m);
>     if (err != 0) {
>         fprintf(stderr, "Error unlocking mutex: %s\n", strerror(err));
>         exit(1);
>     }
> }
> {code}
> {noformat}
> /home/jdanek/repos/qpid/qpid-proton/cmake-build-debugwithtsan/c/tests/c-proactor-test
>  -r xml -d yes --order lex
> Testing started at 9:53 AM ...
> ==================
> WARNING: ThreadSanitizer: use of an invalid mutex (e.g. uninitialized or 
> destroyed) (pid=27191)
>     #0 pthread_mutex_lock <null> (libtsan.so.0+0x4284b)
>     #1 lock 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll-internal.h:329 
> (libqpid-proton-proactor.so.1+0xbb27)
>     #2 pni_timer_set 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll_timer.c:248 
> (libqpid-proton-proactor.so.1+0xbb27)
>     #3 pni_timer_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll_timer.c:144 
> (libqpid-proton-proactor.so.1+0xbe3a)
>     #4 pconnection_final_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:797 
> (libqpid-proton-proactor.so.1+0xc1a0)
>     #5 pconnection_cleanup 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:814 
> (libqpid-proton-proactor.so.1+0xc2f7)
>     #6 pconnection_forced_shutdown 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:855 
> (libqpid-proton-proactor.so.1+0x14c9d)
>     #7 pn_proactor_free 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1994 
> (libqpid-proton-proactor.so.1+0x14c9d)
>     #8 pn_test::auto_free<pn_proactor_t, &pn_proactor_free>::~auto_free() 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/././pn_test.hpp:53 
> (c-proactor-test+0x4355aa)
>     #9 pn_test::proactor::~proactor() 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/./pn_test_proactor.hpp:38 
> (c-proactor-test+0x415149)
>     #10 ____C_A_T_C_H____T_E_S_T____26 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/proactor_test.cpp:677 
> (c-proactor-test+0x4329e1)
>     #11 Catch::FreeFunctionTestCase::invoke() const 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:7415 
> (c-proactor-test+0x454059)
>     #12 Catch::TestCase::invoke() const 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:8413 
> (c-proactor-test+0x454059)
>     #13 Catch::RunContext::invokeActiveTestCase() 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:6941 
> (c-proactor-test+0x454059)
>     #14 Catch::RunContext::runCurrentTest(std::__cxx11::basic_string<char, 
> std::char_traits<char>, std::allocator<char> >&, 
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> 
> >&) /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:6911 
> (c-proactor-test+0x454059)
>     #15 Catch::RunContext::runTest(Catch::TestCase const&) 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:6706 
> (c-proactor-test+0x454059)
>     #16 Catch::runTests(Catch::Ptr<Catch::Config> const&) 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:7086 
> (c-proactor-test+0x454059)
>     #17 Catch::Session::runInternal() 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:7258 
> (c-proactor-test+0x40d93c)
>     #18 Catch::Session::run() 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:7217 
> (c-proactor-test+0x40d93c)
>     #19 Catch::Session::run(int, char const* const*) 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:7182 
> (c-proactor-test+0x40d93c)
>     #20 main 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:11469 
> (c-proactor-test+0x40d93c)
>   Location is heap block of size 1152 at 0x7b6400000500 allocated by main 
> thread:
>     #0 calloc <null> (libtsan.so.0+0x2f905)
>     #1 pn_proactor 
> /home/jdanek/repos/qpid/qpid-proton/c/src/proactor/epoll.c:1942 
> (libqpid-proton-proactor.so.1+0xca64)
>     #2 pn_test::proactor::proactor(pn_test::handler*) 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/pn_test_proactor.cpp:45 
> (c-proactor-test+0x4139c9)
>     #3 ____C_A_T_C_H____T_E_S_T____26 
> /home/jdanek/repos/qpid/qpid-proton/c/tests/proactor_test.cpp:677 
> (c-proactor-test+0x42fe5a)
>     #4 Catch::FreeFunctionTestCase::invoke() const 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:7415 
> (c-proactor-test+0x454059)
>     #5 Catch::TestCase::invoke() const 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:8413 
> (c-proactor-test+0x454059)
>     #6 Catch::RunContext::invokeActiveTestCase() 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:6941 
> (c-proactor-test+0x454059)
>     #7 Catch::RunContext::runCurrentTest(std::__cxx11::basic_string<char, 
> std::char_traits<char>, std::allocator<char> >&, 
> std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> 
> >&) /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:6911 
> (c-proactor-test+0x454059)
>     #8 Catch::RunContext::runTest(Catch::TestCase const&) 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:6706 
> (c-proactor-test+0x454059)
>     #9 Catch::runTests(Catch::Ptr<Catch::Config> const&) 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:7086 
> (c-proactor-test+0x454059)
>     #10 Catch::Session::runInternal() 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:7258 
> (c-proactor-test+0x40d93c)
>     #11 Catch::Session::run() 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:7217 
> (c-proactor-test+0x40d93c)
>     #12 Catch::Session::run(int, char const* const*) 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:7182 
> (c-proactor-test+0x40d93c)
>     #13 main 
> /home/jdanek/repos/qpid/qpid-proton/tests/include/catch.hpp:11469 
> (c-proactor-test+0x40d93c)
>   Mutex M0 (0x7b64000005c0) created at:
>     [failed to restore the stack]
> SUMMARY: ThreadSanitizer: use of an invalid mutex (e.g. uninitialized or 
> destroyed) 
> (/nix/store/zhbhxp4jgalycwffildy2bwcgmrsmayk-gcc-9.2.0-lib/lib/libtsan.so.0+0x4284b)
>  in pthread_mutex_lock
> ==================
> Error locking mutex: Invalid argument
> ThreadSanitizer: reported 1 warnings
> Process finished with exit code 66
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to