Patch Package: OTP 20.3 Git Tag: OTP-20.3 Date: 2018-03-14 Trouble Report Id: OTP-13882, OTP-14194, OTP-14204, OTP-14725, OTP-14760, OTP-14816, OTP-14817, OTP-14820, OTP-14828, OTP-14832, OTP-14839, OTP-14840, OTP-14842, OTP-14843, OTP-14846, OTP-14847, OTP-14850, OTP-14852, OTP-14854, OTP-14856, OTP-14858, OTP-14860, OTP-14863, OTP-14871, OTP-14873, OTP-14876, OTP-14879, OTP-14881, OTP-14886, OTP-14889, OTP-14890, OTP-14891, OTP-14892, OTP-14898, OTP-14908, OTP-14911, OTP-14912, OTP-14913, OTP-14919, OTP-14920, OTP-14921, OTP-14925, OTP-14926, OTP-14929, OTP-14933, OTP-14938, OTP-14939, OTP-14940, OTP-14942, OTP-14944, OTP-14947, OTP-14952, OTP-14953 Seq num: ERIERL-117, ERIERL-124, ERIERL-144, ERL-527, ERL-529, ERL-534, ERL-537, ERL-544, ERL-548, ERL-551, ERL-564, ERL-565 System: OTP Release: 20 Application: asn1-5.0.5, common_test-1.15.4, compiler-7.1.5, crypto-4.2.1, dialyzer-3.2.4, diameter-2.1.4, erts-9.3, hipe-3.17.1, inets-6.5, kernel-5.4.3, observer-2.7, runtime_tools-1.12.5, snmp-5.2.10, ssh-4.6.6, ssl-8.2.4, stdlib-3.4.4, tools-2.11.2 Predecessor: OTP 20.2.4 Check out the git tag OTP-20.3, and build a full OTP system including documentation. Apply one or more applications from this build as patches to your installation using the 'otp_patch_apply' tool. For information on install requirements, see descriptions for each application version below. --------------------------------------------------------------------- --- HIGHLIGHTS ------------------------------------------------------ --------------------------------------------------------------------- OTP-14760 Application(s): ssl Added new API functions to facilitate cipher suite handling --------------------------------------------------------------------- --- POTENTIAL INCOMPATIBILITIES ------------------------------------- --------------------------------------------------------------------- OTP-14850 Application(s): erts, hipe Related Id(s): PR-1664 Fix HiPE bug for binary constructs like <> which could in rare cases cause faulty results or VM crash. This fix affects both the hipe compiler and erts runtime in an *incompatible* way. Old hipe compiled files need to be recompiled to load and run properly as native. --------------------------------------------------------------------- --- asn1-5.0.5 ------------------------------------------------------ --------------------------------------------------------------------- The asn1-5.0.5 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-13882 Application(s): asn1 Related Id(s): ERIERL-144 Dialyzer suppression has been added for the generated ASN.1 helper function to_bitstring/1 that previously created irrelevant warnings. Full runtime dependencies of asn1-5.0.5: erts-7.0, kernel-3.0, stdlib-2.0 --------------------------------------------------------------------- --- common_test-1.15.4 ---------------------------------------------- --------------------------------------------------------------------- The common_test-1.15.4 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14953 Application(s): common_test Fixed problem with 'skip_groups' in combination with 'all suites' option in test specification. Full runtime dependencies of common_test-1.15.4: compiler-6.0, crypto-3.6, debugger-4.1, erts-7.0, inets-6.0, kernel-4.0, observer-2.1, runtime_tools-1.8.16, sasl-2.4.2, snmp-5.1.2, ssh-4.0, stdlib-3.4, syntax_tools-1.7, tools-2.8, xmerl-1.3.8 --------------------------------------------------------------------- --- compiler-7.1.5 -------------------------------------------------- --------------------------------------------------------------------- The compiler-7.1.5 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14863 Application(s): compiler The internal compiler pass (beam_validator) that validates the generated code has been strengthened. When compiling from BEAM assembly code, the beam_type optimizer pass could make the code unsafe. Corrected. OTP-14898 Application(s): compiler Corrected optimizations of integers matched out from binaries and used in bit operations. Full runtime dependencies of compiler-7.1.5: crypto-3.6, erts-9.0, hipe-3.12, kernel-4.0, stdlib-2.5 --------------------------------------------------------------------- --- crypto-4.2.1 ---------------------------------------------------- --------------------------------------------------------------------- The crypto-4.2.1 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14873 Application(s): crypto Fix build error caused by removed RSA padding functions in LibreSSL >= 2.6.1 Full runtime dependencies of crypto-4.2.1: erts-9.0, kernel-5.3, stdlib-3.4 --------------------------------------------------------------------- --- dialyzer-3.2.4 -------------------------------------------------- --------------------------------------------------------------------- Note! The dialyzer-3.2.4 application can *not* be applied independently of other applications on an arbitrary OTP 20 installation. On a full OTP 20 installation, also the following runtime dependency has to be satisfied: -- hipe-3.16.1 (first satisfied in OTP 20.1) --- Fixed Bugs and Malfunctions --- OTP-14858 Application(s): dialyzer Related Id(s): ERL-551 Fix bugs concerning erlang:abs/1 and erlang:bsl/2. OTP-14911 Application(s): dialyzer Fix a bug that caused Dialyzer to crash instead of emitting a warning. OTP-14925 Application(s): dialyzer Related Id(s): ERL-565 Fix a bug concerning parameterized opaque types. Full runtime dependencies of dialyzer-3.2.4: compiler-7.0, erts-9.0, hipe-3.16.1, kernel-5.3, stdlib-3.4, syntax_tools-2.0, wx-1.2 --------------------------------------------------------------------- --- diameter-2.1.4 -------------------------------------------------- --------------------------------------------------------------------- The diameter-2.1.4 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14839 Application(s): diameter Fix close of diameter_tcp/sctp listening socket at diameter:remove_transport/2, that was broken in diameter 2.1. A reconfigured transport could not listen on the same endpoint as a result. OTP-14947 Application(s): diameter Related Id(s): ERIERL-124 Fix handling of SUSPECT connections at service termination. A connection with this watchdog state caused diameter_service:terminate/2 to fail. Full runtime dependencies of diameter-2.1.4: erts-6.4, kernel-3.2, ssl-6.0, stdlib-2.4 --------------------------------------------------------------------- --- erts-9.3 -------------------------------------------------------- --------------------------------------------------------------------- The erts-9.3 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14840 Application(s): erts, otp Related Id(s): ERL-529 Fixed a configure test for libz internals that unintentionally caused various native code in OTP to link against libz. Under certain circumstances this caused the build of OTP to fail. OTP-14847 Application(s): erts Related Id(s): ERL-544 File names containing unicode codepoints larger than 255 were not correctly encoded in stack traces. OTP-14850 Application(s): erts, hipe Related Id(s): PR-1664 *** POTENTIAL INCOMPATIBILITY *** Fix HiPE bug for binary constructs like <> which could in rare cases cause faulty results or VM crash. This fix affects both the hipe compiler and erts runtime in an *incompatible* way. Old hipe compiled files need to be recompiled to load and run properly as native. OTP-14876 Application(s): erts Related Id(s): ERL-548 Fix term_to_binary/2 spec for minor_version. OTP-14879 Application(s): erts Fix bug in erlang:binary_to_integer/2 where invalid characters were not detected for bases larger then 10. e.g. binary_to_integer(<<":">>, 16) would return 3 and not badarg as it should. OTP-14890 Application(s): erts Fixed bug in float_to_list/2 and float_to_binary/2 with option decimals that caused a faulty rounding up of the last decimal digit for about 6% of floats with a fraction part. For example, float_to_list(0.145, [{decimals,1}]) returned "0.2" instead of "0.1". OTP-14891 Application(s): erts Fix bug causing slow hipe execution in modules loaded early during boot or loaded by code:atomic_load or code:finish_loading. OTP-14920 Application(s): erts Fixed a buffer overflow in an internal string formatting function that could be hit if specifying a long floating-point format specifier to erts_sprintf or similar. OTP-14921 Application(s): erts erlang:iolist_to_iovec/1 and enif_inspect_iovec will no longer fail when provided with binaries that have been matched-out on a non-byte boundary. OTP-14926 Application(s): erts iolist_to_binary/1 and erlang:iolist_to_iovec/1 will now badarg if supplied with a bitstring (without a list). OTP-14933 Application(s): erts, kernel Related Id(s): ERL-564, PR-1716 Reject loading modules with names containing directory separators ('/' or '\' on Windows). OTP-14938 Application(s): erts Fix potential dead-lock when the tracer process dies while a the traced process is running on a dirty scheduler. --- Improvements and New Features --- OTP-14820 Application(s): erts, observer More crash dump info such as: process binary virtual heap stats, full info for process causing out-of-mem during GC, more port related info, and dirty scheduler info. Full runtime dependencies of erts-9.3: kernel-5.0, sasl-3.0.1, stdlib-3.0 --------------------------------------------------------------------- --- hipe-3.17.1 ----------------------------------------------------- --------------------------------------------------------------------- Note! The hipe-3.17.1 application can *not* be applied independently of other applications on an arbitrary OTP 20 installation. On a full OTP 20 installation, also the following runtime dependency has to be satisfied: -- erts-9.3 (first satisfied in OTP 20.3) --- Fixed Bugs and Malfunctions --- OTP-14850 Application(s): erts, hipe Related Id(s): PR-1664 *** POTENTIAL INCOMPATIBILITY *** Fix HiPE bug for binary constructs like <> which could in rare cases cause faulty results or VM crash. This fix affects both the hipe compiler and erts runtime in an *incompatible* way. Old hipe compiled files need to be recompiled to load and run properly as native. OTP-14886 Application(s): hipe The BEAM compiler chooses not to perform tailcall optimisations for some calls in tail position, for example to some built-in functions. However, when the ErLLVM HiPE backend is used, LLVM may choose to perform tailcall optimisation on these calls, breaking the expected semantics. To preserve the precise semantics exhibited by BEAM, the 'notail' marker, present in LLVM since version 3.8, is added to call instructions that BEAM has not turned into tail calls, which inhibits LLVM from performing tail-call optimisation in turn. Full runtime dependencies of hipe-3.17.1: compiler-5.0, erts-9.3, kernel-5.3, stdlib-3.4, syntax_tools-1.6.14 --------------------------------------------------------------------- --- inets-6.5 ------------------------------------------------------- --------------------------------------------------------------------- The inets-6.5 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14908 Application(s): inets httpc_manager crashes when a long running request is sent on a persistent HTTP connection (keep-alive). Fixed httpc_manager to use proper timeouts on keep-alive connections. --- Improvements and New Features --- OTP-14854 Application(s): inets Add support for unix domain sockets in the http client. Full runtime dependencies of inets-6.5: erts-6.0, kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-2.0 --------------------------------------------------------------------- --- kernel-5.4.3 ---------------------------------------------------- --------------------------------------------------------------------- Note! The kernel-5.4.3 application can *not* be applied independently of other applications on an arbitrary OTP 20 installation. On a full OTP 20 installation, also the following runtime dependency has to be satisfied: -- erts-9.3 (first satisfied in OTP 20.3) --- Fixed Bugs and Malfunctions --- OTP-14889 Application(s): kernel, stdlib Correct a few contracts. OTP-14933 Application(s): erts, kernel Related Id(s): ERL-564, PR-1716 Reject loading modules with names containing directory separators ('/' or '\' on Windows). OTP-14940 Application(s): kernel Fix bug in handling of os:cmd/2 option max_size on windows. Full runtime dependencies of kernel-5.4.3: erts-9.3, sasl-3.0, stdlib-3.4 --------------------------------------------------------------------- --- observer-2.7 ---------------------------------------------------- --------------------------------------------------------------------- The observer-2.7 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14842 Application(s): observer Related Id(s): ERL-534 etop.hrl used a relative path to include observer_backend.hrl, this is now changed to use include_lib instead. runtime_tools/include is added to the tertiary bootstrap. OTP-14846 Application(s): observer Related Id(s): ERL-537 If a crashdump was truncated in the attributes section for a module, crashdump_viewer would crash when a module view was opened from the GUI. This bug was introduced in OTP-20.2 and is now corrected. OTP-14856 Application(s): observer Related Id(s): ERIERL-117 Optimized ets and mnesia table view tab in observer gui, listing 10000 tables was previously very slow. --- Improvements and New Features --- OTP-14725 Application(s): observer When a process has many links and/or monitors, it could earlier take very long time to display the process information window. This is now improved by only showing a few links and monitors, and then an link named "more..." to expand the rest. OTP-14820 Application(s): erts, observer More crash dump info such as: process binary virtual heap stats, full info for process causing out-of-mem during GC, more port related info, and dirty scheduler info. Full runtime dependencies of observer-2.7: erts-7.0, et-1.5, inets-5.10, kernel-3.0, runtime_tools-1.8.14, stdlib-3.4, wx-1.2 --------------------------------------------------------------------- --- runtime_tools-1.12.5 -------------------------------------------- --------------------------------------------------------------------- The runtime_tools-1.12.5 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14816 Application(s): runtime_tools system_information:to_file/1 will now use slightly less memory. Full runtime dependencies of runtime_tools-1.12.5: erts-8.0, kernel-5.0, mnesia-4.12, stdlib-3.0 --------------------------------------------------------------------- --- snmp-5.2.10 ----------------------------------------------------- --------------------------------------------------------------------- The snmp-5.2.10 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14204 Application(s): snmp Related Id(s): PR-1726 The example MIB EX1-MIB in the SNMP application has been corrected to match its example. Full runtime dependencies of snmp-5.2.10: crypto-3.3, erts-6.0, kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 --------------------------------------------------------------------- --- ssh-4.6.6 ------------------------------------------------------- --------------------------------------------------------------------- Note! The ssh-4.6.6 application can *not* be applied independently of other applications on an arbitrary OTP 20 installation. On a full OTP 20 installation, also the following runtime dependencies have to be satisfied: -- crypto-4.2 (first satisfied in OTP 20.2) -- public_key-1.5.2 (first satisfied in OTP 20.2) --- Fixed Bugs and Malfunctions --- OTP-14939 Application(s): ssh Remove a blocking risk when a channel is closed and an operation is tried on that channel after at least a second's time gap. --- Improvements and New Features --- OTP-14194 Application(s): ssh Related Id(s): OTP-12487 Added ssh_compat_SUITE. This suite contains a number of interoperability tests mainly with OpenSSH. The tests start docker containers with different OpenSSH and OpenSSL/LibreSSLcryptolib versions and performs a number of tests of supported algorithms. All login methods and all user's public key types are tested both for the client and the server. All algorithms for kex, cipher, host key, mac and compressions are tested with a number of exec and sftp tests, both for the client and the server. OTP-14881 Application(s): ssh Default exec is disabled when a user-defined shell is enabled. Full runtime dependencies of ssh-4.6.6: crypto-4.2, erts-6.0, kernel-3.0, public_key-1.5.2, stdlib-3.3 --------------------------------------------------------------------- --- ssl-8.2.4 ------------------------------------------------------- --------------------------------------------------------------------- Note! The ssl-8.2.4 application can *not* be applied independently of other applications on an arbitrary OTP 20 installation. On a full OTP 20 installation, also the following runtime dependencies have to be satisfied: -- crypto-4.2 (first satisfied in OTP 20.2) -- public_key-1.5 (first satisfied in OTP 20.1) --- Fixed Bugs and Malfunctions --- OTP-14843 Application(s): ssl Optimization of bad merge conflict resolution causing dubble decode OTP-14852 Application(s): ssl Restore error propagation to OTP-19.3 behaviour, in OTP-20.2 implementation adjustments to gen_statem needed some further adjustments to avoid a race condition. This could cause a TLS server to not always report file path errors correctly. OTP-14871 Application(s): ssl Corrected RC4 suites listing function to regard TLS version OTP-14919 Application(s): ssl Fix alert handling so that unexpected messages are logged and alerted correctly OTP-14929 Application(s): ssl Fix alert handling so that unexpected messages are logged and alerted correctly OTP-14952 Application(s): ssl Correct handling of anonymous cipher suites --- Improvements and New Features --- OTP-14760 Application(s): ssl *** HIGHLIGHT *** Added new API functions to facilitate cipher suite handling OTP-14828 Application(s): ssl Correct TLS_FALLBACK_SCSV handling so that this special flag suite is always placed last in the cipher suite list in accordance with the specs. Also make sure this functionality is used in DTLS. OTP-14892 Application(s): ssl Add TLS record version sanity check for early as possible error detection and consistency in ALERT codes generated Full runtime dependencies of ssl-8.2.4: crypto-4.2, erts-7.0, inets-5.10.7, kernel-3.0, public_key-1.5, stdlib-3.2 --------------------------------------------------------------------- --- stdlib-3.4.4 ---------------------------------------------------- --------------------------------------------------------------------- The stdlib-3.4.4 application can be applied independently of other applications on a full OTP 20 installation. --- Fixed Bugs and Malfunctions --- OTP-14832 Application(s): stdlib Related Id(s): ERL-527 Correct filelib:find_source() and filelib:find_file() to by default also search one level below src. This is in accordance with the Design Principles which states that an application can have Erlang source files one level below the src directory. OTP-14860 Application(s): stdlib Related Id(s): 1670, PR The contract of erl_tar:table/2 is corrected. OTP-14889 Application(s): kernel, stdlib Correct a few contracts. OTP-14942 Application(s): stdlib Related Id(s): PR-1702 Fix string:prefix/2 to handle an empty string as second argument. Full runtime dependencies of stdlib-3.4.4: compiler-5.0, crypto-3.3, erts-9.0, kernel-5.0, sasl-3.0 --------------------------------------------------------------------- --- tools-2.11.2 ---------------------------------------------------- --------------------------------------------------------------------- Note! The tools-2.11.2 application can *not* be applied independently of other applications on an arbitrary OTP 20 installation. On a full OTP 20 installation, also the following runtime dependencies have to be satisfied: -- erts-9.1 (first satisfied in OTP 20.1) -- kernel-5.4 (first satisfied in OTP 20.1) --- Fixed Bugs and Malfunctions --- OTP-14817 Application(s): tools Related Id(s): 1641, PR A counting bug is corrected in Cover. The bug was introduced in Erlang/OTP 18.0. OTP-14912 Application(s): tools The lcnt server will no longer crash if lcnt:information/0 is called before lcnt:collect/0. OTP-14913 Application(s): tools lcnt:collect will now implicitly start the lcnt server, as per the documentation. --- Improvements and New Features --- OTP-14944 Application(s): tools Improved indentation in emacs and various other updates. Full runtime dependencies of tools-2.11.2: compiler-5.0, erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4 --------------------------------------------------------------------- --------------------------------------------------------------------- ---------------------------------------------------------------------