From 42c31ab4bfcd74d7139f90ea1b03a35048cacef6 Mon Sep 17 00:00:00 2001 From: Siri Hansen Date: Tue, 26 Mar 2013 14:40:36 +0100 Subject: [cover] Ensure no process leak when stopping cover on dead node When cover:stop(Node) was called on a non-existing node, a process waiting for cover data from the node would hang forever. This has been corrected. --- lib/tools/src/cover.erl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'lib/tools/src') diff --git a/lib/tools/src/cover.erl b/lib/tools/src/cover.erl index dfcfc3675f..c2c627abe0 100644 --- a/lib/tools/src/cover.erl +++ b/lib/tools/src/cover.erl @@ -1139,9 +1139,14 @@ remote_collect(Module,Nodes,Stop) -> do_collection(Node, Module, Stop) -> CollectorPid = spawn(fun collector_proc/0), - remote_call(Node,{remote,collect,Module,CollectorPid, self()}), - if Stop -> remote_call(Node,{remote,stop}); - true -> ok + case remote_call(Node,{remote,collect,Module,CollectorPid, self()}) of + {error,node_dead} -> + CollectorPid ! done, + ok; + ok when Stop -> + remote_call(Node,{remote,stop}); + ok -> + ok end. %% Process which receives chunks of data from remote nodes - either when -- cgit v1.2.3