Sending messages to self inside receive leads to recursive mutex lock error.
import vibe.d;
shared static this() {
setLogLevel(LogLevel.debugV);
setPlainLogging(false);
auto t1 = runTask({
yield();
bool alive = true;
while(alive) {
receive(
(uint){
logDebug("uint message");
Task.getThis().send(true); /// fault
},
(bool){
logDebug("bool message");
alive = false;
}
);
}
logInfo("t1 terminated");
});
runTask({
yield();
t1.send(23u);
});
}
Result:
[02240F80:02240E80 dbg] uint message
[02240F80:02240E80 CRITICAL] CoreTaskFiber was terminated unexpectedly: Recursive mutex lock.