<div dir="ltr">Hello,<div><br></div><div>I have following test program (on Windows):</div><div><br></div><div><div>D:\Balin\Algo_v6\v0.5>type my_test.erl</div><div>-module(my_test).</div><div>-export([start/0]).</div><div><br></div><div>start() -></div><div>  register(?MODULE,</div><div>    spawn(fun() -></div><div>      init(),</div><div>      local_loop()</div><div>    end)).</div><div><br></div><div>init() -></div><div>  spawn_link('<a href="mailto:feed@tws.nse.in">feed@tws.nse.in</a>',</div><div>    fun() -></div><div>      register(?MODULE, self()),</div><div>      remote_loop()</div><div>    end),</div><div><br></div><div>  spawn('<a href="mailto:feed@tws.nse.in">feed@tws.nse.in</a>',</div><div>    fun() -></div><div>      timer:sleep(timer:seconds(5)), % wait till the above process is registered<br></div><div>      ?MODULE ! hello,</div><div>      ?MODULE ! world,</div><div>      ?MODULE ! stop</div><div>    end).</div><div><br></div><div>remote_loop() -></div><div>  receive</div><div>    X -></div><div>     {?MODULE, '<a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a>'} ! X,</div><div>     remote_loop()</div><div>  end.</div><div><br></div><div>local_loop() -></div><div>  receive</div><div>    stop -></div><div>      io:format("stopped~n");</div><div>    X -></div><div>      io:format("~p~n", [X]),</div><div>      local_loop()</div><div>  end.</div><div><br></div><div>D:\Balin\Algo_v6\v0.5></div></div><div><br></div><div>Then, I start 2 nodes, as follows:</div><div><br></div><div><div>D:\Balin\Algo_v6\v0.5>start erl -name <a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a></div><div><br></div><div>D:\Balin\Algo_v6\v0.5>start erl -name <a href="mailto:feed@tws.nse.in">feed@tws.nse.in</a></div></div><div><br></div><div>On the '<a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a>' node, I run the program as follows:</div><div><br></div><div><div>Eshell V7.0  (abort with ^G)</div><div>(<a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a>)1> rpc:call('<a href="mailto:feed@tws.nse.in">feed@tws.nse.in</a>', erlang, whereis, [my_test]).</div><div>undefined</div><div>(<a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a>)2> my_test:start().</div><div>true</div><div>(<a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a>)3> hello</div><div>(<a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a>)3> world</div><div>(<a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a>)3> stopped</div><div>(<a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a>)3> rpc:call('<a href="mailto:feed@tws.nse.in">feed@tws.nse.in</a>', erlang, whereis, [my_test]).</div><div><6755.43.0></div><div>(<a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a>)4></div><div><br></div></div><div>The messaging works as I expected. However, the process registered as 'my_test' on the node '<a href="mailto:feed@tws.nse.in">feed@tws.nse.in</a>' does not terminate. I expected it to terminate since I started it using spawn_link/2 from the calling process on '<a href="mailto:algo@tws.nse.in">algo@tws.nse.in</a>' which terminates after receiving the 'stop' message.</div><div><br></div><div>It keeps running, as is observed on the node '<a href="mailto:feed@tws.nse.in">feed@tws.nse.in</a>':</div><div><br></div><div><div>Eshell V7.0  (abort with ^G)</div><div>(<a href="mailto:feed@tws.nse.in">feed@tws.nse.in</a>)1> whereis(my_test).</div><div><0.43.0></div><div>(<a href="mailto:feed@tws.nse.in">feed@tws.nse.in</a>)2></div></div><div><br></div><div>What is wrong with the setup done in the test program above that the linked process on another node does not terminate?</div><div><br></div><div>Please advise.</div><div><br></div><div>Thank you.</div><div><br></div><div>Avinash</div></div>