-
Notifications
You must be signed in to change notification settings - Fork 2.3k
Description
Expected behavior
No data race.
Actual behavior
Data race
Steps to reproduce the problem
Stop Poco HTTP server
POCO version
1.9.0
Compiler and version
clang-7
Operating system and version
ubuntu 18.04
Other relevant information
WARNING: ThreadSanitizer: data race (pid=17123)
Write of size 1 at 0x7b180006a950 by main thread (mutexes: write M164471):
#0 Poco::Net::HTTPServerConnection::onServerStopped(bool const&) /artifacts/external/poco/source/poco-1.9.0-all/Net/src/HTTPServerConnection.cpp:143:11 (libPocoNetd.so.60+0x13f3d5)
#1 Poco::Delegate<Poco::Net::HTTPServerConnection, bool const, false>::notify(void const*, bool const&) /artifacts/external/poco/source/poco-1.9.0-all/Foundation/include/Poco/Delegate.h:140:4 (libPocoNetd.so.60+0x1412e5)
#2 Poco::DefaultStrategy<bool const, Poco::AbstractDelegate >::notify(void const*, bool const&) /artifacts/external/poco/source/poco-1.9.0-all/Foundation/include/Poco/DefaultStrategy.h:61:11 (libPocoNetd.so.60+0x117
5e9)
#3 Poco::AbstractEvent<bool const, Poco::DefaultStrategy<bool const, Poco::AbstractDelegate >, Poco::AbstractDelegate, Poco::FastMutex>::notify(void const*, bool const&) /artifacts/external/poco/source/p
oco-1.9.0-all/Foundation/include/Poco/AbstractEvent.h:244:12 (libPocoNetd.so.60+0x11725f)
#4 Poco::AbstractEvent<bool const, Poco::DefaultStrategy<bool const, Poco::AbstractDelegate >, Poco::AbstractDelegate, Poco::FastMutex>::operator()(void const*, bool const&) /artifacts/external/poco/sour
ce/poco-1.9.0-all/Foundation/include/Poco/AbstractEvent.h:215:3 (libPocoNetd.so.60+0x116bb8)
#5 Poco::Net::HTTPServer::stopAll(bool) /artifacts/external/poco/source/poco-1.9.0-all/Net/src/HTTPServer.cpp:52:2 (libPocoNetd.so.60+0x116504)
.....
#13 Poco::Util::Application::run() /artifacts/external/poco/source/poco-1.9.0-all/Util/src/Application.cpp:334:8 (libPocoUtild.so.60+0x9b355)
#14 Poco::Util::ServerApplication::run() /artifacts/external/poco/source/poco-1.9.0-all/Util/src/ServerApplication.cpp:96:22 (libPocoUtild.so.60+0xccbc8)
#15 Poco::Util::ServerApplication::run(int, char**) /artifacts/external/poco/source/poco-1.9.0-all/Util/src/ServerApplication.cpp:611:9 (libPocoUtild.so.60+0xcceb4)
...
Previous read of size 1 at 0x7b180006a950 by thread T2:
#0 Poco::Net::HTTPServerConnection::run() /artifacts/external/poco/source/poco-1.9.0-all/Net/src/HTTPServerConnection.cpp:61:10 (libPocoNetd.so.60+0x13f860)
#1 Poco::Net::TCPServerConnection::start() /artifacts/external/poco/source/poco-1.9.0-all/Net/src/TCPServerConnection.cpp:43:3 (libPocoNetd.so.60+0x180054)
#2 Poco::Net::TCPServerDispatcher::run() /artifacts/external/poco/source/poco-1.9.0-all/Net/src/TCPServerDispatcher.cpp:118:18 (libPocoNetd.so.60+0x1aa797)
#3 Poco::PooledThread::run() /artifacts/external/poco/source/poco-1.9.0-all/Foundation/src/ThreadPool.cpp:199:14 (libPocoFoundationd.so.60+0x2d9c2a)
#4 Poco::(anonymous namespace)::RunnableHolder::run() /artifacts/external/poco/source/poco-1.9.0-all/Foundation/src/Thread.cpp:55:11 (libPocoFoundationd.so.60+0x2d4cea)
#5 Poco::ThreadImpl::runnableEntry(void*) /artifacts/external/poco/source/poco-1.9.0-all/Foundation/src/Thread_POSIX.cpp:345:27 (libPocoFoundationd.so.60+0x2d2ef0)