<div>
                    Your parent process (<0.137.0>) is exiting normally, which doesn't cause linked processes to exit.  If the final line in the parent was something like "exit(fail)", then I'd expect <0.138.0> to terminate as well.  The error handling section in <a href="http://www.erlang.org/doc/reference_manual/processes.html">http://www.erlang.org/doc/reference_manual/processes.html</a> describes this.</div><div><br></div><div>Cheers,</div><div><br></div><div>Steve</div>
                <div><div><br></div><div>-- </div><div>Steve Strong</div><div>Sent with <a href="http://www.sparrowmailapp.com/?sig">Sparrow</a></div><div><br></div></div>
                 
                <p style="color: #A0A0A8;">On Tuesday, 25 June 2013 at 16:26, tom kelly wrote:</p>
                <blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-left:0px;padding-left:10px;">
                    <span><div><div><div>Hi List,</div><div><br></div><div>I'm debugging a weird problem here on a customer site. We have an</div><div>application that accepts tcp connections then kicks off a gen_server</div><div>to implement some session logic, part of which is starting up a socket</div><div>handler, which is also a gen_server, that provides a customised</div><div>interface to the tcp connection. So after the init stage we have two</div><div>linked processes.</div><div><br></div><div>In my test environment both processes get tidied up correctly, when we</div><div>get a tcp_closed from the connection or when we tell the session</div><div>process to shut down. But on this customer site I'm seeing thousands</div><div>of zombie socket_handlers, and they're causing us to hit a</div><div>system_limit when we get new connections. I haven't managed to</div><div>reproduce this state in my test environment yet but suspect it's</div><div>happening in the init phase.</div><div><br></div><div>Not sure if I've reproduced the cause of my problem here but I have</div><div>this simple testcase that might help me if I can understand it. This</div><div>spawns a process that spawns a process, if the parent process lives a</div><div>while (comment in the 2nd sleep) then everything's as expected with</div><div>two linked processes, with the parent linked to the shell process. But</div><div>in this case if the parent terminates straight away the child will</div><div>survive as an unlinked zombie, even though it was started with</div><div>spawn_link, where I'd expect it to terminate too.</div><div><br></div><div>Is this a bug or are my expectations incorrect? And any explanation</div><div>much appreciated!</div><div><br></div><div><br></div><div>70></div><div>70> self().</div><div><0.126.0></div><div>71></div><div>71></div><div>71> spawn_link(fun() -> io:format("~n~nP1: ~p~n~n",[self()]),</div><div>                        spawn_link(fun() -> io:format("~n~nP2:</div><div>~p~n~n",[self()]),</div><div>                                            timer:sleep(300000)</div><div>                                   end)%,</div><div>                        %timer:sleep(300000)</div><div>               end).</div><div><br></div><div><br></div><div>P1: <0.137.0></div><div><br></div><div><0.137.0></div><div><br></div><div><br></div><div>P2: <0.138.0></div><div><br></div><div>72></div><div>72></div><div>72> process_info(erlang:list_to_pid("<0.137.0>"),links).</div><div>                           undefined</div><div>73></div><div>73></div><div>73> process_info(erlang:list_to_pid("<0.138.0>"),links).</div><div>{links,[]}</div><div>74></div><div>74></div><div>74></div><div><br></div><div><br></div><div>//TTom.</div><div>_______________________________________________</div><div>erlang-questions mailing list</div><div><a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a></div><div><a href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a></div></div></div></span>
                 
                 
                 
                 
                </blockquote>
                 
                <div>
                    <br>
                </div>