Skip to content

Data race in Poco::Net::HTTPServerConnection::onServerStopped #2634

@jbulow

Description

@jbulow

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)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions