vibe-core/source/vibe/core
Sönke Ludwig e769a9b1ca Avoid lazy evaluation of log arguments while the loggers are locked. Fixes rejectedsoftware/vibe.d#1717.
The deadlock happened because a function that waits for a worker task to finish was passed to the log functions. Evaluated lazily, it got called while the logger's mutex was locked, meaning that any log call from within that thread would cause a deadlock.

This change also has another, possibly important, implication - arguments are evaluated only once instead of possibly multiple times if multiple loggers are registered. This could very well make a lot of existing (wrong) code more robust (e.g. logInfo("%s", i++)).
2017-03-23 17:55:51 +01:00
..
args.d Add vibe.core.runApplication. See rejectedsoftware/vibe.d#1417. 2016-08-30 12:30:49 +02:00
concurrency.d Fix accessibility issue for std.concurrency.send. 2017-01-30 09:43:43 +01:00
connectionpool.d Add compatibility overload for ConnectionPool.this. 2017-02-01 10:27:08 +01:00
core.d Add runTask overloads to make lambda argument inference work. 2017-02-23 16:39:42 +01:00
file.d Fix createTempFile on Windows. 2017-03-09 16:09:46 +01:00
log.d Avoid lazy evaluation of log arguments while the loggers are locked. Fixes rejectedsoftware/vibe.d#1717. 2017-03-23 17:55:51 +01:00
net.d Don't store local/remote address for UDP connections. 2017-03-10 23:00:43 +01:00
path.d Improve Path compatibility with the original implementation. 2017-03-10 19:53:07 +01:00
stream.d Add stream proxy types to allow user code to store generic streams. 2017-01-31 16:48:04 +01:00
sync.d Improve the sync module. 2017-02-22 17:42:20 +01:00
task.d Fix nothrow inference for runTask. 2017-02-23 15:49:59 +01:00
taskpool.d Use thread wait primitives for worker thread shutdown. 2017-02-23 14:43:22 +01:00