Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
0363-kernel-Fix-race-in-logger-std-h-SUITE-sync...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0363-kernel-Fix-race-in-logger-std-h-SUITE-sync-testcase.patch of Package erlang
From d4008a94759a24e15353feb2bae7c45b13b43b75 Mon Sep 17 00:00:00 2001 From: Lukas Larsson <lukas@erlang.org> Date: Mon, 3 May 2021 13:46:04 +0200 Subject: [PATCH 5/7] kernel: Fix race in logger std h SUITE sync testcase Doing dbg:stop_clear does not remove the tracers from the processes so we do that as an extra step in order to avoid a race-condition in the testcase. --- lib/kernel/test/logger_std_h_SUITE.erl | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/kernel/test/logger_std_h_SUITE.erl b/lib/kernel/test/logger_std_h_SUITE.erl index 3e15c205f0..542a6fae3a 100644 --- a/lib/kernel/test/logger_std_h_SUITE.erl +++ b/lib/kernel/test/logger_std_h_SUITE.erl @@ -834,7 +834,7 @@ sync(Config) -> check_tracer(100), ok. sync(cleanup, _Config) -> - dbg:stop_clear(), + stop_clear(), logger:remove_handler(?MODULE). write_failure(Config) -> @@ -1550,7 +1550,7 @@ rotate_on_start_compressed(Config) -> %% Write a 1 GB file to disk {ok, D} = file:open(Log,[write]), - [file:write(D,<<0:(1024*1024*8)>>) || I <- lists:seq(1,1024)], + [file:write(D,<<0:(1024*1024*8)>>) || _I <- lists:seq(1,1024)], file:close(D), NumOfReqs = 500, @@ -2086,7 +2086,7 @@ start_op_trace() -> TRecvPid. stop_op_trace(TRecvPid) -> - dbg:stop_clear(), + stop_clear(), unlink(TRecvPid), exit(TRecvPid, kill), ok. @@ -2153,7 +2153,7 @@ start_tracer(Trace,Expected) -> maps:get(handler_state, maps:get(cb_state, logger_olp:info(h_proc_name())))), - dbg:tracer(process,{fun tracer/2,{Pid,Expected}}), + {ok,_} = dbg:tracer(process,{fun tracer/2,{Pid,Expected}}), dbg:p(whereis(h_proc_name()),[c]), dbg:p(FileCtrlPid,[c]), tpl(Trace), @@ -2167,7 +2167,7 @@ tpl([{{M,F,A},MS}|Trace]) -> {_,_,1} -> ok; _ -> - dbg:stop_clear(), + stop_clear(), throw({skip,"Can't trace "++atom_to_list(M)++":"++ atom_to_list(F)++"/"++integer_to_list(A)}) end, @@ -2175,6 +2175,12 @@ tpl([{{M,F,A},MS}|Trace]) -> tpl([]) -> ok. +stop_clear() -> + dbg:stop_clear(), + %% Remove tracer from all processes in order to eliminate + %% race conditions. + erlang:trace(all,false,[all]). + tracer({trace,_,call,{logger_h_common,handle_cast,[Op|_]}}, {Pid,[{Mod,Func,Op}|Expected]}) -> maybe_tracer_done(Pid,Expected,{Mod,Func,Op}); @@ -2209,10 +2215,10 @@ check_tracer(T,TimeoutFun) -> %% traces are received check_tracer(Delay,fun() -> ok end); {tracer_got_unexpected,Got,Expected} -> - dbg:stop_clear(), + stop_clear(), ct:fail({tracer_got_unexpected,Got,Expected}) after T -> - dbg:stop_clear(), + stop_clear(), TimeoutFun() end. -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor