<div dir="ltr">You can use rpc for that:<div><br></div><div>rpc:call(node(RPid), erlang, process_info, [RPid, [dictionary, current_stacktrace]]).<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Sep 20, 2019 at 2:57 PM Roger Lipscombe <<a href="mailto:roger@differentpla.net">roger@differentpla.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Er, so I neglected to mention that the gen_server is remote (same<br>
host, different node), so process_info doesn't work :(<br>
<br>
On Fri, 20 Sep 2019 at 01:45, Max Lapshin <<a href="mailto:max.lapshin@gmail.com" target="_blank">max.lapshin@gmail.com</a>> wrote:<br>
><br>
> Copy paste from our video_frame.erl:<br>
><br>
><br>
> send_frame(Stream, #video_frame{content = Content, codec = Codec, flavor = Flavor, dts = DTS} = Frame, SourceTag) when is_pid(Stream) -><br>
>   Frame1 = case SourceTag of<br>
>     undefined -> Frame;<br>
>     _ -> Frame#video_frame{source = SourceTag}<br>
>   end,<br>
>   try gen_server:call(Stream, Frame1)<br>
>   catch<br>
>     exit:{normal, _} -><br>
>       {error, stopped};<br>
>     exit:{noproc, _} -><br>
>       {error, stopped};<br>
>     exit:{shutdown, _} -><br>
>       {error, stopped};<br>
>     exit:{timeout, _}:Stack -><br>
>       Dict = case process_info(Stream, dictionary) of<br>
>         {dictionary, Dict_} -> Dict_;<br>
>         undefined -> []<br>
>       end,<br>
>       RemoteStack = process_info(Stream, current_stacktrace),<br>
>       Name = case proplists:get_value(name, Dict, <<"dead stream">>) of<br>
>         N when is_binary(N) -> N;<br>
>         N when is_atom(N) -> N;<br>
>         N -> iolist_to_binary(io_lib:format("~p", [N]))<br>
>       end,<br>
>       Status = proplists:get_value(status, Dict),<br>
>       case Status of<br>
>         S when S == starting_transcoder -> ok;<br>
>         _ -> events:error("failed to send frame ~p,~p,~p,~p, source_tag=~p to ~s (~p) in status ~p\n~p\nremote stack:\n~p", [<br>
>                          Content, Codec, Flavor, round(DTS), Frame1#video_frame.source,<br>
>                          Name, Stream, Status, Stack, RemoteStack])<br>
>       end,<br>
>       % [io:format("~10.. s: ~p~n", [K,V]) || {K,V} <- process_info(Stream)]<br>
>       {error, timeout}<br>
>   end.<br>
><br>
><br>
><br>
> this code is helping us for years.  You should remove video specific stuff.<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><font face="'courier new', monospace">Danil Zagoskin | <a href="mailto:z@gosk.in" target="_blank">z@gosk.in</a></font></div></div></div>