<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">I recently test the sbroker in erlang 21, but the skip_down_match test is always failed, I check out the code and make a prototype of the code:</div><div dir="ltr">```</div><div dir="ltr"><div dir="ltr">-module(a).</div><div dir="ltr"><br></div><div dir="ltr">-export([start/0]).</div><div dir="ltr"><br></div><div dir="ltr">start() -></div><div dir="ltr">    Pid = spawn(fun() -> t() end),</div><div dir="ltr">    register(t_name, Pid),</div><div dir="ltr">    spawn(fun() -> t1() end),</div><div dir="ltr">    timer:sleep(1000).</div><div dir="ltr"><br></div><div dir="ltr">t1() -></div><div dir="ltr">    {_, _MRef} = spawn_monitor(fun() -></div><div dir="ltr">                                       Pid = whereis(t_name),</div><div dir="ltr">                                       Pid ! {pid, self()},</div><div dir="ltr">                                       exit(normal)</div><div dir="ltr">                               end).</div><div dir="ltr">t() -></div><div dir="ltr">    receive</div><div dir="ltr">        {pid, Pid} -></div><div dir="ltr">            Ref = monitor(process, Pid),</div><div dir="ltr">            case demonitor(Ref, [flush, info]) of</div><div dir="ltr">                true -></div><div dir="ltr">                    io:format("result is true");</div><div dir="ltr">                false -></div><div dir="ltr">                    io:format("result is false")</div><div dir="ltr">            end</div><div dir="ltr">    end.</div><div><br></div></div><div dir="ltr">```</div><div>I run it like this:</div><div>```</div><div>$ /usr/local/otp_src_21.1.4/bin/erlc a.erl</div><div>$ /usr/local/otp_src_21.1.4/bin/erl -s a start -s init stop -noinput</div><div>result is true<br></div><div>$ rm a.beam</div><div>$ /usr/local/otp_src_20.3.8.15/bin/erlc a.erl</div><div>$ /usr/local/otp_src_20.3.8.15/bin/erl -s a start -s init stop -noinput</div><div>result is false<br></div><div>```</div><div>The same code, in erlang 21, the output is `result is true`, but in erlang 20, the output is `result is false`, that is why the test fail.</div><div><br></div><div>I just wonder why the same code but different version, why the result is different?</div><div>Is the behaviour changed with the monitor/2 function?</div></div></div></div></div></div></div></div></div></div>