| Age | Commit message (Collapse) | Author |
|
Forward-ported-from: d1e9749ca290673639a49d693a8fe5c6557cc2de
|
|
assertion failures.
Before this, it was possible for J2KEncoder::terminate_threads()
to finish without terminating all threads if the thread _running_
terminate_threads() was itself interrupt()ed.
This is because the thread_group::join_all() in terminate_threads()
is an interruption point, so it was possible it not to complete
but instead to throw interrupted_exception. Then the owning
J2KEncoder would be torn down but the threads would still be running,
causing use-after-frees.
This commit adds some boost::this_thread::disable_interruption
objects to ensure that the owning thread is not interrupted while
it is being destroyed.
Also tidy up code that does this stuff, assuming that it's safe
to not call thread::joinable but instead do
thread.interrupt();
try {
thread.join();
} catch (...) {}
|
|
|
|
with a lock on _servers_mutex; handlers to that signal may call
::servers() which tries to take a lock on the same mutex.
|
|
|
|
|
|
|
|
|
|
servers to send replies to both (#1190).
|
|
|
|
|
|
Just stop the threads and clear the server list when
stop() is called.
|
|
|
|
Support for this seems to vary wildly across DoM's build
targets. Stuff that builds on 16.04 won't build on 14.04,
for example. Seems to not be worth the hassle now.
This reverts commit 5a5324ed3a381a86dfe0a6e3932c1d58fdcd596f.
|
|
|
|
|
|
ServerDescription -> EncodeServerDescription.
|