This repository was archived by the owner on Mar 1, 2022. It is now read-only.
File tree Expand file tree Collapse file tree 3 files changed +28
-11
lines changed Expand file tree Collapse file tree 3 files changed +28
-11
lines changed Original file line number Diff line number Diff line change @@ -106,7 +106,10 @@ mixin template DefaultComponentWrapper(bool withDtor = true)
106106 if (! _threads)
107107 synchronized (this )
108108 if (! _threads)
109+ {
109110 _threads = new TaskPool(max(minSize, min(maxSize, defaultPoolThreads)));
111+ _threads.isDaemon = true ;
112+ }
110113 return _threads;
111114 }
112115
Original file line number Diff line number Diff line change @@ -623,7 +623,10 @@ class WorkspaceD
623623 if (! _gthreads)
624624 synchronized (this )
625625 if (! _gthreads)
626+ {
626627 _gthreads = new TaskPool(max(2 , min(6 , defaultPoolThreads)));
628+ _gthreads.isDaemon = true ;
629+ }
627630 return _gthreads;
628631 }
629632}
Original file line number Diff line number Diff line change @@ -227,16 +227,28 @@ class DCDComponent : ComponentWrapper
227227 running = true ;
228228 serverThreads.create({
229229 mixin (traceTask);
230- if (quietServer)
231- foreach (block; serverPipes.stderr.byChunk(4096 ))
232- {
233- }
234- else
235- while (serverPipes.stderr.isOpen && ! serverPipes.stderr.eof)
236- {
237- auto line = serverPipes.stderr.readln();
238- trace(" Server: " , line); // evaluates lazily, so read before
239- }
230+ scope (exit)
231+ running = false ;
232+
233+ try
234+ {
235+ if (quietServer)
236+ foreach (block; serverPipes.stderr.byChunk(4096 ))
237+ {
238+ }
239+ else
240+ while (serverPipes.stderr.isOpen && ! serverPipes.stderr.eof)
241+ {
242+ auto line = serverPipes.stderr.readln();
243+ trace(" Server: " , line); // evaluates lazily, so read before
244+ }
245+ }
246+ catch (Exception e)
247+ {
248+ error(" Reading/clearing stderr from dcd-server crashed (-> killing dcd-server): " , e);
249+ serverPipes.pid.kill();
250+ }
251+
240252 auto code = serverPipes.pid.wait();
241253 info(" DCD-Server stopped with code " , code);
242254 if (code != 0 )
@@ -246,7 +258,6 @@ class DCDComponent : ComponentWrapper
246258 " type" : JSONValue(" crash" ),
247259 " component" : JSONValue(" dcd" )
248260 ]));
249- running = false ;
250261 }
251262 });
252263 }
You can’t perform that action at this time.
0 commit comments