File 0272-Fix-seq_trace-erl_tracer-bug.patch of Package erlang

From fd3ea59cd3fcd388b6a9c9a1be25a671c0a5a2e3 Mon Sep 17 00:00:00 2001
From: Lukas Larsson <lukas@erlang.org>
Date: Fri, 6 Apr 2018 16:38:40 +0200
Subject: [PATCH 2/2] Fix seq_trace erl_tracer bug

---
 erts/emulator/beam/erl_trace.c      |  2 +-
 erts/emulator/test/tracer_SUITE.erl | 24 ++++++++++++++++++++++--
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/erts/emulator/beam/erl_trace.c b/erts/emulator/beam/erl_trace.c
index 018894f685..1e833539b3 100644
--- a/erts/emulator/beam/erl_trace.c
+++ b/erts/emulator/beam/erl_trace.c
@@ -2593,7 +2593,7 @@ erts_term_to_tracer(Eterm prefix, Eterm t)
                     state = tp[3];
                 }
             } else {
-                if (arityval(tp[0]) == 2 && is_atom(tp[2])) {
+                if (arityval(tp[0]) == 2 && is_atom(tp[1])) {
                     module = tp[1];
                     state = tp[2];
                 }
diff --git a/erts/emulator/test/tracer_SUITE.erl b/erts/emulator/test/tracer_SUITE.erl
index ab7d047bc3..e1362ef07a 100644
--- a/erts/emulator/test/tracer_SUITE.erl
+++ b/erts/emulator/test/tracer_SUITE.erl
@@ -30,7 +30,8 @@
 -export([load/1, unload/1, reload/1, invalid_tracers/1]).
 -export([send/1, recv/1, call/1, call_return/1, spawn/1, exit/1,
          link/1, unlink/1, getting_linked/1, getting_unlinked/1,
-         register/1, unregister/1, in/1, out/1, gc_start/1, gc_end/1]).
+         register/1, unregister/1, in/1, out/1, gc_start/1, gc_end/1,
+         seq_trace/1]).
 
 suite() -> [{ct_hooks,[ts_install_cth]},
             {timetrap, {minutes, 1}}].
@@ -41,7 +42,8 @@ all() ->
 groups() ->
     [{ basic, [], [send, recv, call, call_return, spawn, exit,
                    link, unlink, getting_linked, getting_unlinked,
-                   register, unregister, in, out, gc_start, gc_end]}].
+                   register, unregister, in, out, gc_start, gc_end,
+                   seq_trace]}].
 
 init_per_suite(Config) ->
     erlang:trace_pattern({'_','_','_'}, false, [local]),
@@ -583,6 +585,24 @@ gc_end(_Config) ->
 
     test(gc_major_end, garbage_collection, Tc, Expect, false).
 
+seq_trace(_Config) ->
+
+    seq_trace:set_system_tracer({tracer_test,
+                                 {#{ seq_trace => trace }, self(), []}}),
+    erlang:spawn(fun() ->
+                         seq_trace:set_token(label,17),
+                         seq_trace:set_token(print,true),
+                         seq_trace:print(17,"**** Trace Started ****")
+                 end),
+    receive
+        {seq_trace, _, 17, {print, _, _, _, _}, _} ->
+            ok;
+        M ->
+            ct:fail("~p~n",[M])
+    after 100 ->
+            ct:fail(timeout)
+    end.
+
 test(Event, Tc, Expect) ->
     test(Event, Tc, Expect, false).
 test(Event, Tc, Expect, Removes) ->
-- 
2.16.3

openSUSE Build Service is sponsored by