QttpServer icon indicating copy to clipboard operation
QttpServer copied to clipboard

Threading: Race condition and crash on QttpResponse::close

Open ctenter-scs opened this issue 7 years ago • 0 comments

Sometimes the server can run into a race condition while processing events, which leads to a memory access violation and causes the program to crash.

The main thread receives events from qt and calls the default event handler. This eventually leads to a call to uv_write() on QttpResponse::close().

The second thread is started in HttpServer::startServer and runs a libuv event loop.

The issue seems to come from the uv_write() call in the main thread. According to the libuv devs, this call is not safe and should be moved to the event thread using uv_async_send: https://groups.google.com/forum/#!topic/libuv/iHzv3x-VOr4

ctenter-scs avatar Apr 17 '18 15:04 ctenter-scs