aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel
diff options
context:
space:
mode:
authorHans Bolinder <[email protected]>2010-08-25 13:28:38 +0200
committerHans Bolinder <[email protected]>2010-08-25 13:31:58 +0200
commit334e0ea11f8740a1102ab8411a959cf8b364eb4d (patch)
tree77fdd40398c18f1ee6573300cc3a91b91f6dad4b /lib/kernel
parent6c00708e21bccffff84595f714cf9c1003cc8916 (diff)
downloadotp-334e0ea11f8740a1102ab8411a959cf8b364eb4d.tar.gz
otp-334e0ea11f8740a1102ab8411a959cf8b364eb4d.tar.bz2
otp-334e0ea11f8740a1102ab8411a959cf8b364eb4d.zip
Fix a bug that could cause the net_kernel process to crash.
A bug introduced in kernel-2.13.5.3 has been fixed. If running net_kernel:set_net_ticktime/1 twice within the TransitionPerod the second call caused the net_kernel process to crash with a badmatch.
Diffstat (limited to 'lib/kernel')
-rw-r--r--lib/kernel/src/net_kernel.erl4
-rw-r--r--lib/kernel/test/erl_distribution_SUITE.erl2
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/kernel/src/net_kernel.erl b/lib/kernel/src/net_kernel.erl
index 1353ac65c6..9875044844 100644
--- a/lib/kernel/src/net_kernel.erl
+++ b/lib/kernel/src/net_kernel.erl
@@ -500,8 +500,8 @@ handle_call({new_ticktime,T,TP}, From, #state{tick = #tick{ticker = Tckr,
time = T,
how = How}}}, From);
-handle_call({new_ticktime,From,_},
- _,
+handle_call({new_ticktime,_T,_TP},
+ From,
#state{tick = #tick_change{time = T}} = State) ->
async_reply({reply, {ongoing_change_to, T}, State}, From).
diff --git a/lib/kernel/test/erl_distribution_SUITE.erl b/lib/kernel/test/erl_distribution_SUITE.erl
index d15f6aa0d5..21a96f804a 100644
--- a/lib/kernel/test/erl_distribution_SUITE.erl
+++ b/lib/kernel/test/erl_distribution_SUITE.erl
@@ -273,6 +273,7 @@ tick_change(Config) when is_list(Config) ->
?line PaDir = filename:dirname(code:which(?MODULE)),
?line [BN, CN] = get_nodenames(2, tick_change),
?line DefaultTT = net_kernel:get_net_ticktime(),
+ ?line unchanged = net_kernel:set_net_ticktime(DefaultTT, 60),
?line case DefaultTT of
I when is_integer(I) -> ?line ok;
_ -> ?line ?t:fail(DefaultTT)
@@ -377,6 +378,7 @@ run_tick_change_test(B, C, PrevTT, TT, PaDir) ->
end,
?line change_initiated = net_kernel:set_net_ticktime(TT,20),
+ ?line {ongoing_change_to,_} = net_kernel:set_net_ticktime(TT,20),
?line sleep(3),
?line change_initiated = rpc:call(B,net_kernel,set_net_ticktime,[TT,15]),
?line sleep(7),