Skip to content

Commit d5248ef

Browse files
committed
do not crash when inspecting remote pids
1 parent d2555f1 commit d5248ef

File tree

1 file changed

+27
-9
lines changed

1 file changed

+27
-9
lines changed

apps/debug_adapter/lib/debug_adapter/variables.ex

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,15 @@ defmodule ElixirLS.DebugAdapter.Variables do
2424
def child_type(var) when is_function(var), do: :named
2525

2626
def child_type(var) when is_pid(var) do
27-
case :erlang.process_info(var) do
28-
:undefined -> :indexed
29-
_results -> :named
27+
try do
28+
case :erlang.process_info(var) do
29+
:undefined -> :indexed
30+
_results -> :named
31+
end
32+
rescue
33+
ArgumentError ->
34+
# remote pid
35+
:indexed
3036
end
3137
end
3238

@@ -111,9 +117,15 @@ defmodule ElixirLS.DebugAdapter.Variables do
111117
end
112118

113119
def children(var, start, count) when is_pid(var) do
114-
case :erlang.process_info(var) do
115-
:undefined -> ["process is not alive"]
116-
results -> results
120+
try do
121+
case :erlang.process_info(var) do
122+
:undefined -> ["process is not alive"]
123+
results -> results
124+
end
125+
rescue
126+
ArgumentError ->
127+
# remote pid
128+
["remote process"]
117129
end
118130
|> children(start, count)
119131
end
@@ -159,9 +171,15 @@ defmodule ElixirLS.DebugAdapter.Variables do
159171
end
160172

161173
def num_children(var) when is_pid(var) do
162-
case :erlang.process_info(var) do
163-
:undefined -> 1
164-
results -> results |> Enum.count()
174+
try do
175+
case :erlang.process_info(var) do
176+
:undefined -> 1
177+
results -> results |> Enum.count()
178+
end
179+
rescue
180+
ArgumentError ->
181+
# remote pid
182+
1
165183
end
166184
end
167185

0 commit comments

Comments
 (0)