Trace bug?

Robert Virding <[email protected]>
Newsgroups gmane.comp.lang.erlang.bugs
Message-ID <CAH_GQaOLp4Y_CWnm-uc5xoyJcKCBqKz_0y0H6rjNBCFqE1pB5g@mail.gmail.com>
We have discovered strange behaviour when tracing message sends. We turn on
tracing message send for a process. In R16 and 17 it seems like there is no
trace message when sending to a registered process name, while sending to a
pid generates a trace message as it should. In R15 however you get a trace
message both sending to a registered name and hen sending to a pid. Is this
a bug or is it a new undocumented feature?

As an example I include simple program in which worker sends a message to a
registered server and the server replies by sending the worker pid. Here
are outputs when running in 17:

Erlang/OTP 17 [erts-6.0] [source-07b8f44] [64-bit] [smp:4:4]
[async-threads:10] [hipe] [kernel-poll:false] [dtrace]

Eshell V6.0  (abort with ^G)
1> c(trace_procs).
{ok,trace_procs}
2> trace_procs:start().
trace_procs 7 Server: '<0.39.0>'
trace_procs 10 Worker: '<0.40.0>'
trace_procs 34 Message: '{trace,<0.39.0>,send,answer,<0.40.0>}'
trace_procs 34 Message: '{trace,<0.39.0>,send,answer,<0.40.0>}'
trace_procs 34 Message: '{trace,<0.39.0>,send,answer,<0.40.0>}'
trace_procs 34 Message: '{trace,<0.39.0>,send,answer,<0.40.0>}'
trace_procs 34 Message: '{trace,<0.39.0>,send,answer,<0.40.0>}'

and in R15:

Erlang R15B03 (erts-5.9.3.1) [source] [64-bit] [smp:4:4] [async-threads:0]
[hipe] [kernel-poll:false]

Eshell V5.9.3.1  (abort with ^G)
1> c(trace_procs).
{ok,trace_procs}
2> trace_procs:start().
trace_procs 7 Server: '<0.38.0>'
trace_procs 10 Worker: '<0.39.0>'
trace_procs 34 Message: '{trace,<0.39.0>,send,{request,<0.39.0>},server}'
trace_procs 34 Message: '{trace,<0.38.0>,send,answer,<0.39.0>}'
trace_procs 34 Message: '{trace,<0.39.0>,send,{request,<0.39.0>},server}'
trace_procs 34 Message: '{trace,<0.38.0>,send,answer,<0.39.0>}'
trace_procs 34 Message: '{trace,<0.39.0>,send,{request,<0.39.0>},server}'
trace_procs 34 Message: '{trace,<0.38.0>,send,answer,<0.39.0>}'
trace_procs 34 Message: '{trace,<0.39.0>,send,{request,<0.39.0>},server}'

What gives?

Robert

_______________________________________________
erlang-bugs mailing list
[email protected]
http://erlang.org/mailman/listinfo/erlang-bugs
trace_procs.erl (text/x-erlang, 896 B)
-module(trace_procs).

-export([start/0]).

start() ->
    Server = spawn_link(fun() -> server() end),
    io:format("~p ~p Server: '~p' ~n", [?MODULE, ?LINE, Server]),
    register(server, Server),
    Worker = spawn_link(fun() -> worker() end),
    io:format("~p ~p Worker: '~p' ~n", [?MODULE, ?LINE, Worker]),
    erlang:trace(Worker, true, [send]),
    erlang:trace(Server, true, [send]),
    trace_procs().

worker() ->
    timer:sleep(2000),
    %% whereis(server) ! {request, self()},
    server ! {request, self()},
    receive
        _Answer ->
            worker()
    end.

server() ->
    receive
        {request, Pid} ->
            Pid ! answer,
            server()
    end.

trace_procs() ->
    receive
        {trace, _Sender, send, _Data, _Recipient} = Message ->
            io:format("~p ~p Message: '~p' ~n", [?MODULE, ?LINE, Message]),
            trace_procs()
    end.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.