diff options
Diffstat (limited to 'lib/kernel')
-rw-r--r-- | lib/kernel/doc/src/notes.xml | 94 | ||||
-rw-r--r-- | lib/kernel/src/code_server.erl | 4 | ||||
-rw-r--r-- | lib/kernel/test/code_SUITE.erl | 21 | ||||
-rw-r--r-- | lib/kernel/vsn.mk | 2 |
4 files changed, 117 insertions, 4 deletions
diff --git a/lib/kernel/doc/src/notes.xml b/lib/kernel/doc/src/notes.xml index b625ddba5d..504f85abc2 100644 --- a/lib/kernel/doc/src/notes.xml +++ b/lib/kernel/doc/src/notes.xml @@ -31,6 +31,100 @@ </header> <p>This document describes the changes made to the Kernel application.</p> +<section><title>Kernel 4.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p><c>code:load_abs([10100])</c> would bring down the + entire runtime system and create a crash dump. Corrected + to generate an error exception in the calling + process.</p> + <p>Also corrected specs for code loading functions and + added more information in the documentation about the + error reasons returned by code-loading functions.</p> + <p> + Own Id: OTP-9375</p> + </item> + <item> + <p> + <seealso + marker="kernel:gen_tcp#accept/2"><c>gen_tcp:accept/2</c></seealso> + was not <seealso + marker="erts:time_correction#Time_Warp_Safe_Code">time + warp safe</seealso>. This since it used the same time as + returned by <seealso + marker="erts:erlang#now/0"><c>erlang:now/0</c></seealso> + when calculating timeout. This has now been fixed.</p> + <p> + Own Id: OTP-13254 Aux Id: OTP-11997, OTP-13222 </p> + </item> + <item> + <p> Correct the contract for <c>inet:getifaddrs/1</c>. + </p> + <p> + Own Id: OTP-13335 Aux Id: ERL-95 </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Time warp safety improvements.</p> + <p> + Introduced the options <c>monotonic_timestamp</c>, and + <c>strict_monotonic_timestamp</c> to the trace, + sequential trace, and system profile functionality. This + since the already existing <c>timestamp</c> option is not + time warp safe.</p> + <p> + Introduced the option <c>safe_fixed_monotonic_time</c> to + <c>ets:info/2</c> and <c>dets:info/2</c>. This since the + already existing <c>safe_fixed</c> option is not time + warp safe.</p> + <p> + Own Id: OTP-13222 Aux Id: OTP-11997 </p> + </item> + <item> + <p> + Add validation callback for heart</p> + <p> + The erlang heart process may now have a validation + callback installed. The validation callback will be + executed, if present, before any heartbeat to heart port + program. If the validation fails, or stalls, no heartbeat + will be sent and the node will go down.</p> + <p> + With the option <c>'check_schedulers'</c> heart executes + a responsiveness check of the schedulers before a + heartbeat is sent to the port program. If the + responsiveness check fails, the heartbeat will not be + performed (as intended).</p> + <p> + Own Id: OTP-13250</p> + </item> + <item> + <p> + Clarify documentation of <c>net_kernel:allow/1</c></p> + <p> + Own Id: OTP-13299</p> + </item> + <item> + <p> + EPMD supports both IPv4 and IPv6</p> + <p> + Also affects oldest supported windows version.</p> + <p> + Own Id: OTP-13364</p> + </item> + </list> + </section> + +</section> + <section><title>Kernel 4.1.1</title> <section><title>Fixed Bugs and Malfunctions</title> diff --git a/lib/kernel/src/code_server.erl b/lib/kernel/src/code_server.erl index 6262407354..fb08b4c22b 100644 --- a/lib/kernel/src/code_server.erl +++ b/lib/kernel/src/code_server.erl @@ -67,7 +67,9 @@ init(Ref, Parent, [Root,Mode]) -> %% Pre-loaded modules are always sticky. ets:insert(Db, [{M,preloaded},{{sticky,M},true}]) end, erlang:pre_loaded()), - ets:insert(Db, init:fetch_loaded()), + Loaded0 = init:fetch_loaded(), + Loaded = [{M,filename:join([P])} || {M,P} <- Loaded0], %Normalize. + ets:insert(Db, Loaded), IPath = case Mode of diff --git a/lib/kernel/test/code_SUITE.erl b/lib/kernel/test/code_SUITE.erl index 298c1f7d6b..abea23e854 100644 --- a/lib/kernel/test/code_SUITE.erl +++ b/lib/kernel/test/code_SUITE.erl @@ -34,7 +34,8 @@ purge_stacktrace/1, mult_lib_roots/1, bad_erl_libs/1, code_archive/1, code_archive2/1, on_load/1, on_load_binary/1, on_load_embedded/1, on_load_errors/1, big_boot_embedded/1, - native_early_modules/1, get_mode/1]). + native_early_modules/1, get_mode/1, + normalized_paths/1]). -export([init_per_testcase/2, end_per_testcase/2, init_per_suite/1, end_per_suite/1]). @@ -61,7 +62,7 @@ all() -> purge_stacktrace, mult_lib_roots, bad_erl_libs, code_archive, code_archive2, on_load, on_load_binary, on_load_embedded, on_load_errors, - big_boot_embedded, native_early_modules, get_mode]. + big_boot_embedded, native_early_modules, get_mode, normalized_paths]. groups() -> []. @@ -1451,6 +1452,22 @@ native_early_modules_1(Architecture) -> get_mode(Config) when is_list(Config) -> interactive = code:get_mode(). +%% Make sure that the paths for all loaded modules have been normalized. +normalized_paths(_Config) -> + do_normalized_paths(erlang:loaded()). + +do_normalized_paths([M|Ms]) -> + case code:which(M) of + Special when is_atom(Special) -> + do_normalized_paths(Ms); + File when is_list(File) -> + File = filename:join([File]), + do_normalized_paths(Ms) + end; +do_normalized_paths([]) -> + ok. + + %%----------------------------------------------------------------- %% error_logger handler. %% (Copied from stdlib/test/proc_lib_SUITE.erl.) diff --git a/lib/kernel/vsn.mk b/lib/kernel/vsn.mk index 703075634b..c8917ebc3c 100644 --- a/lib/kernel/vsn.mk +++ b/lib/kernel/vsn.mk @@ -1 +1 @@ -KERNEL_VSN = 4.1.1 +KERNEL_VSN = 4.2 |