diff options
author | Martin Willi <martin@revosec.ch> | 2015-02-24 16:00:38 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2015-02-24 16:00:38 +0100 |
commit | d0d85683563e9f296e47e1c1859f49065ca49890 (patch) | |
tree | 970d1d1db94963e3cb9798875f59930597bfdae0 /conf | |
parent | 2113f482712b441ba4516cbad26d328a5be15d28 (diff) | |
download | strongswan-d0d85683563e9f296e47e1c1859f49065ca49890.tar.bz2 strongswan-d0d85683563e9f296e47e1c1859f49065ca49890.tar.xz |
host-resolver: Do not cancel threads waiting for new queries during cleanup
While it is currently unclear why it happens, canceling threads waiting in the
new_query condvar does not work as expected. The behavior is not fully
reproducible: Either cancel(), join() or destroying the condvar hangs.
The issue has been seen in the http-fetcher unit tests, where the stream service
triggers the use of the resolver for "localhost" hosts. It is reproducible with
any cleanup following a host_create_from_dns() use on a Ubuntu 14.04 x64 system.
Further, the issue is related to the use of libunwind, as only builds with
--enable-unwind-backtraces are affected.
As we broadcast() the new_query condvar before destruction, a hard cancel() of
these threads is actually not required. Instead we let these threads clean up
themselves after receiving the condvar signal.
Diffstat (limited to 'conf')
0 files changed, 0 insertions, 0 deletions