Let uncaught errors in fibers terminate the process.
This commit is contained in:
parent
d07e9258d9
commit
db29e4730f
|
@ -327,7 +327,7 @@ final package class TaskFiber : Fiber {
|
||||||
@property State state() @trusted const nothrow { return super.state; }
|
@property State state() @trusted const nothrow { return super.state; }
|
||||||
|
|
||||||
private void run()
|
private void run()
|
||||||
{
|
nothrow {
|
||||||
import std.encoding : sanitize;
|
import std.encoding : sanitize;
|
||||||
import std.concurrency : Tid, thisTid;
|
import std.concurrency : Tid, thisTid;
|
||||||
import vibe.core.core : isEventLoopRunning, recycleFiber, taskScheduler, yield;
|
import vibe.core.core : isEventLoopRunning, recycleFiber, taskScheduler, yield;
|
||||||
|
@ -397,6 +397,15 @@ final package class TaskFiber : Fiber {
|
||||||
} catch(UncaughtException th) {
|
} catch(UncaughtException th) {
|
||||||
logCritical("CoreTaskFiber was terminated unexpectedly: %s", th.msg);
|
logCritical("CoreTaskFiber was terminated unexpectedly: %s", th.msg);
|
||||||
logDiagnostic("Full error: %s", th.toString().sanitize());
|
logDiagnostic("Full error: %s", th.toString().sanitize());
|
||||||
|
} catch (Throwable th) {
|
||||||
|
import std.stdio : stderr, writeln;
|
||||||
|
import core.stdc.stdlib : exit;
|
||||||
|
try stderr.writeln(th);
|
||||||
|
catch (Exception e) {
|
||||||
|
try stderr.writeln(th.msg);
|
||||||
|
catch (Exception e) {}
|
||||||
|
}
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue