Patch Package: OTP 18.1 Git Tag: OTP-18.1 Date: 2015-09-22 Trouble Report Id: OTP-11397, OTP-11531, OTP-12230, OTP-12622, OTP-12671, OTP-12672, OTP-12831, OTP-12832, OTP-12853, OTP-12858, OTP-12864, OTP-12865, OTP-12866, OTP-12870, OTP-12871, OTP-12875, OTP-12879, OTP-12891, OTP-12898, OTP-12901, OTP-12902, OTP-12911, OTP-12912, OTP-12922, OTP-12934, OTP-12935, OTP-12937, OTP-12938, OTP-12940, OTP-12943, OTP-12944, OTP-12945, OTP-12946, OTP-12947, OTP-12948, OTP-12949, OTP-12950, OTP-12952, OTP-12954, OTP-12961, OTP-12962, OTP-12963, OTP-12964, OTP-12965, OTP-12967, OTP-12968, OTP-12969, OTP-12971, OTP-12972, OTP-12973, OTP-12974, OTP-12976, OTP-12977, OTP-12980, OTP-12981, OTP-12984, OTP-12986, OTP-12987, OTP-12988, OTP-12989, OTP-12990 Seq num: seq12878, seq12891, seq12900, seq12906, seq12947 System: OTP Release: 18 Application: compiler-6.0.1, crypto-3.6.1, debugger-4.1.1, dialyzer-2.8.1, diameter-1.11, erts-7.1, eunit-2.2.11, hipe-3.13, inets-6.0.1, kernel-4.1, mnesia-4.13.1, odbc-2.11.1, public_key-1.0.1, sasl-2.6, ssh-4.1, ssl-7.1, stdlib-2.6, tools-2.8.1, wx-1.5 Predecessor: OTP 18.0.3 Check out the git tag OTP-18.1, 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-11397 Application(s): ssl Add possibility to downgrade an SSL/TLS connection to a tcp connection, and give back the socket control to a user process. This also adds the possibility to specify a timeout to the ssl:close function. OTP-12622 Application(s): ssh Related Id(s): OTP-12671, OTP-12672 The key exchange algorithms 'ecdh-sha2-nistp256', 'ecdh-sha2-nistp384' and 'ecdh-sha2-nistp521' are implemented. See RFC 5656. This raises the security level considerably. OTP-12671 Application(s): ssh Related Id(s): OTP-12622, OTP-12672 The key exchange algorithm 'diffie-hellman-group14-sha1' is implemented. See RFC 4253. This raises the security level. OTP-12672 Application(s): ssh Related Id(s): OTP-12622, OTP-12671 The key exchange algorithms 'diffie-hellman-group-exchange-sha1' and 'diffie-hellman-group-exchange-sha256' are implemented. See RFC 4419. This raises the security level. OTP-12864 Application(s): kernel, sasl, stdlib A mechanism for limiting the amount of text that the built-in error logger events will produce has been introduced. It is useful for limiting both the size of log files and the CPU time used to produce them. This mechanism is experimental in the sense that it may be changed if it turns out that it does not solve the problem it is supposed to solve. In that case, there may be backward incompatible improvements to this mechanism. See the documentation for the config parameter error_logger_format_depth in the Kernel application for information about how to turn on this feature. OTP-12864 Application(s): kernel, sasl, stdlib A mechanism for limiting the amount of text that the built-in error logger events will produce has been introduced. It is useful for limiting both the size of log files and the CPU time used to produce them. This mechanism is experimental in the sense that it may be changed if it turns out that it does not solve the problem it is supposed to solve. In that case, there may be backward incompatible improvements to this mechanism. See the documentation for the config parameter error_logger_format_depth in the Kernel application for information about how to turn on this feature. OTP-12864 Application(s): kernel, sasl, stdlib A mechanism for limiting the amount of text that the built-in error logger events will produce has been introduced. It is useful for limiting both the size of log files and the CPU time used to produce them. This mechanism is experimental in the sense that it may be changed if it turns out that it does not solve the problem it is supposed to solve. In that case, there may be backward incompatible improvements to this mechanism. See the documentation for the config parameter error_logger_format_depth in the Kernel application for information about how to turn on this feature. --------------------------------------------------------------------- --- compiler-6.0.1 -------------------------------------------------- --------------------------------------------------------------------- The compiler-6.0.1 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-12967 Application(s): compiler Fix get_map_elements register corruption Instruction get_map_elements might destroy target registers when the fail-label is taken. Only seen for patterns with two, and only two, target registers. Specifically if we copy one register and then jump. Full runtime dependencies of compiler-6.0.1: crypto-3.6, erts-7.0, hipe-3.12, kernel-4.0, stdlib-2.5 --------------------------------------------------------------------- --- crypto-3.6.1 ---------------------------------------------------- --------------------------------------------------------------------- The crypto-3.6.1 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-12944 Application(s): crypto Make crypto:ec_curves/0 return empty list if elliptic curve is not supported at all. Full runtime dependencies of crypto-3.6.1: erts-6.0, kernel-3.0, stdlib-2.0 --------------------------------------------------------------------- --- debugger-4.1.1 -------------------------------------------------- --------------------------------------------------------------------- The debugger-4.1.1 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-12911 Application(s): debugger Related Id(s): seq12906 Fix crash when starting a quick debugging session. Thanks Alan Duffield. Full runtime dependencies of debugger-4.1.1: compiler-5.0, erts-6.0, kernel-3.0, stdlib-2.5, wx-1.2 --------------------------------------------------------------------- --- dialyzer-2.8.1 -------------------------------------------------- --------------------------------------------------------------------- Note! The dialyzer-2.8.1 application can *not* be applied independently of other applications on an arbitrary OTP 18 installation. On a full OTP 18 installation, also the following runtime dependency has to be satisfied: -- hipe-3.13 (first satisfied in OTP 18.1) --- Fixed Bugs and Malfunctions --- OTP-12865 Application(s): dialyzer Improve the translation of forms to types. OTP-12866 Application(s): dialyzer Fix a bug concerning parameterized opaque types. OTP-12940 Application(s): dialyzer Fix a bug concerning parameterized opaque types. OTP-12948 Application(s): dialyzer, hipe Fix bugs concerning erlang:abs/1. OTP-12949 Application(s): dialyzer, hipe Fix a bug concerning lists:keydelete/3 with union and opaque types. OTP-12964 Application(s): dialyzer Related Id(s): OTP-12962, OTP-12963 Use new function hipe:erts_checksum to get correct runtime checksum for cached beam files. Full runtime dependencies of dialyzer-2.8.1: compiler-5.0, erts-7.0, hipe-3.13, kernel-3.0, stdlib-2.5, syntax_tools-1.6.14, wx-1.2 --------------------------------------------------------------------- --- diameter-1.11 --------------------------------------------------- --------------------------------------------------------------------- The diameter-1.11 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-12879 Application(s): diameter Related Id(s): OTP-12475 Fix relay encode of nested, Grouped AVPs. A fault in OTP-12475 caused encode to fail if the first AVP in a Grouped AVP was itself Grouped. OTP-12902 Application(s): diameter Match acceptable peer addresses case insensitively. Regular expressions passed in an 'accept' tuple to diameter_tcp or diameter_sctp inappropriately matched case. OTP-12969 Application(s): diameter Fix diameter_watchdog function clause. OTP-12912 introduced an error with accepting transports setting {restrict_connections, false}, causing processes to fail when peer connections were terminated. --- Improvements and New Features --- OTP-12871 Application(s): diameter Don't report 5005 (DIAMETER_AVP_MISSING) errors unnecessarily. An AVP whose decode failed was reported as missing, despite having been reported with another error as a consequence of the failure. OTP-12891 Application(s): diameter Improve decode performance. The time required to decode a message increased quadratically with the number of AVPs in the worst case, leading to extremely long execution times. OTP-12912 Application(s): diameter Improve watchdog and statistics performance. Inefficient use of timers contributed to poor performance at high load, as did ordering of the table statistics are written to. OTP-12947 Application(s): diameter Add service_opt() strict_mbit. There are differing opinions on whether or not reception of an arbitrary AVP setting the M-bit is an error. The default interpretation is strict: if a command grammar doesn't explicitly allow an AVP setting the M-bit then reception of such an AVP is regarded as an error. Setting {strict_mbit, false} disables this check. Full runtime dependencies of diameter-1.11: erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-2.0 --------------------------------------------------------------------- --- erts-7.1 -------------------------------------------------------- --------------------------------------------------------------------- The erts-7.1 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-12870 Application(s): erts Fix bug in ETS that could cause stray objects marked for deletion to occasionally be missed by the cleanup done by safe_fixtable(_,false). OTP-12901 Application(s): erts Fixed VM crash that could occur if a trace port was linked to a process, and the trace port terminated abnormally while handling a trace message. This bug has always existed in the runtime system with SMP support. OTP-12934 Application(s): erts Instead of aborting, the vm now creates a crash dump when a system process is terminated. OTP-12943 Application(s): erts Fixed a rare emulator dead lock that occurred when erlang:process_flag(priority,...) was called by a process that was also scheduled for an internal system activity. OTP-12954 Application(s): erts The runtime system on various posix platforms (except for Linux and Solaris) could crash when large amounts of file-descriptors were in use. OTP-12962 Application(s): erts, hipe A beam file compiled by hipe for an incompatible runtime system was sometimes not rejected by the loader, which could lead to vm crash. This fix will also allow the same hipe compiler to be used by both normal and debug-built vm. OTP-12965 Application(s): erts Fix bug in maps:merge/2 when called by hipe compiled code that could cause vm crash. Bug exists since erts-7.0 (OTP 18.0). OTP-12968 Application(s): erts When tracing with process_dump option, the VM could abort if there was an ongoing binary match somewhere in the call stack of the traced process. OTP-12987 Application(s): erts Related Id(s): seq12947 Fixed possible output deadlock in tty driver when hitting "CTRL-C" in a non-smp emulator shell on unix. OTP-12988 Application(s): erts Fix binary_to_integer to throw badarg for "+" and "-" similar to list_to_integer. OTP-12989 Application(s): erts Suppress warning of unused argument when using macro enif_make_pid. --- Improvements and New Features --- OTP-12945 Application(s): erts Related Id(s): OTP-12892 Changed default clock source used for OS system time on MacOS X to gettimeofday() in order to improve performance. The system can be configured during build to use the previously used higher resolution clock source by passing the switch --with-clock-resolution=high when configuring the build. OTP-12971 Application(s): erts Added the configure option --disable-saved-compile-time which disables saving of compile date and time in the emulator binary. Full runtime dependencies of erts-7.1: kernel-4.0, sasl-2.4, stdlib-2.5 --------------------------------------------------------------------- --- eunit-2.2.11 ---------------------------------------------------- --------------------------------------------------------------------- The eunit-2.2.11 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-12952 Application(s): eunit Improve success message when 2 tests have passed Full runtime dependencies of eunit-2.2.11: erts-6.0, kernel-3.0, stdlib-2.5 --------------------------------------------------------------------- --- hipe-3.13 ------------------------------------------------------- --------------------------------------------------------------------- Note! The hipe-3.13 application can *not* be applied independently of other applications on an arbitrary OTP 18 installation. On a full OTP 18 installation, also the following runtime dependency has to be satisfied: -- erts-7.1 (first satisfied in OTP 18.1) --- Fixed Bugs and Malfunctions --- OTP-12948 Application(s): dialyzer, hipe Fix bugs concerning erlang:abs/1. OTP-12949 Application(s): dialyzer, hipe Fix a bug concerning lists:keydelete/3 with union and opaque types. OTP-12962 Application(s): erts, hipe A beam file compiled by hipe for an incompatible runtime system was sometimes not rejected by the loader, which could lead to vm crash. This fix will also allow the same hipe compiler to be used by both normal and debug-built vm. --- Improvements and New Features --- OTP-12963 Application(s): hipe Related Id(s): OTP-12962, OTP-12964 New function hipe:erts_checksum/0 which returns a value identifying the target runtime system for the compiler. Used by dialyzer for its beam cache directory. Full runtime dependencies of hipe-3.13: compiler-5.0, erts-7.1, kernel-3.0, stdlib-2.5, syntax_tools-1.6.14 --------------------------------------------------------------------- --- inets-6.0.1 ----------------------------------------------------- --------------------------------------------------------------------- The inets-6.0.1 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-12875 Application(s): inets Related Id(s): seq12878 Fix broken socket feature, that is on Linux systems a socket may be opened before starting Erlang and then passed to Erlang's httpd daemon. This is useful as the wrap program can open a privileged port and Erlang does not have to be run as root. OTP-12898 Application(s): inets Related Id(s): seq12900 Fix broken socket feature, that is on Linux systems a socket may be opened before starting Erlang and then passed to Erlangs tftp daemon. This is useful as the wrap program can open a privileged port and Erlang does not have to be run as root. OTP-12922 Application(s): inets httpc_handler should react properly to cancel requests even when the request to be canceled was already finished but httpc_manager did not get notified about that yet. --- Improvements and New Features --- OTP-12976 Application(s): inets Added format_status function to httpd process to avoid sensitive information to be printed in supervisor logs. OTP-12984 Application(s): inets Return meaningful error reason disregarding whether a http proxy is used or not. Full runtime dependencies of inets-6.0.1: erts-6.0, kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-2.0 --------------------------------------------------------------------- --- kernel-4.1 ------------------------------------------------------ --------------------------------------------------------------------- Note! The kernel-4.1 application can *not* be applied independently of other applications on an arbitrary OTP 18 installation. On a full OTP 18 installation, also the following runtime dependencies have to be satisfied: -- sasl-2.6 (first satisfied in OTP 18.1) -- stdlib-2.6 (first satisfied in OTP 18.1) --- Improvements and New Features --- OTP-12864 Application(s): kernel, sasl, stdlib *** HIGHLIGHT *** A mechanism for limiting the amount of text that the built-in error logger events will produce has been introduced. It is useful for limiting both the size of log files and the CPU time used to produce them. This mechanism is experimental in the sense that it may be changed if it turns out that it does not solve the problem it is supposed to solve. In that case, there may be backward incompatible improvements to this mechanism. See the documentation for the config parameter error_logger_format_depth in the Kernel application for information about how to turn on this feature. Full runtime dependencies of kernel-4.1: erts-7.0, sasl-2.6, stdlib-2.6 --------------------------------------------------------------------- --- mnesia-4.13.1 --------------------------------------------------- --------------------------------------------------------------------- The mnesia-4.13.1 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-12972 Application(s): mnesia Improved index updates to avoid a timing glitch in dirty_index_read. Full runtime dependencies of mnesia-4.13.1: erts-7.0, kernel-3.0, stdlib-2.0 --------------------------------------------------------------------- --- odbc-2.11.1 ----------------------------------------------------- --------------------------------------------------------------------- The odbc-2.11.1 application can be applied independently of other applications on a full OTP 18 installation. --- Improvements and New Features --- OTP-12935 Application(s): odbc New application variable to set timeout of internal communication setup between the erlang code and the c-port program that interfaces the odbc driver. This can be useful if you have an underlying system that is slow due to heavy load at startup. With this environment variable you can easily bypass and tailor odbc to the needs of the underlying actual system without changing the configuration. Which is a good thing because this value is very system specific. Full runtime dependencies of odbc-2.11.1: erts-6.0, kernel-3.0, stdlib-2.0 --------------------------------------------------------------------- --- public_key-1.0.1 ------------------------------------------------ --------------------------------------------------------------------- The public_key-1.0.1 application can be applied independently of other applications on a full OTP 18 installation. --- Improvements and New Features --- OTP-12986 Application(s): public_key Document enhancements Full runtime dependencies of public_key-1.0.1: asn1-3.0, crypto-3.3, erts-6.0, kernel-3.0, stdlib-2.0 --------------------------------------------------------------------- --- sasl-2.6 -------------------------------------------------------- --------------------------------------------------------------------- Note! The sasl-2.6 application can *not* be applied independently of other applications on an arbitrary OTP 18 installation. On a full OTP 18 installation, also the following runtime dependencies have to be satisfied: -- kernel-4.1 (first satisfied in OTP 18.1) -- stdlib-2.6 (first satisfied in OTP 18.1) --- Improvements and New Features --- OTP-12864 Application(s): kernel, sasl, stdlib *** HIGHLIGHT *** A mechanism for limiting the amount of text that the built-in error logger events will produce has been introduced. It is useful for limiting both the size of log files and the CPU time used to produce them. This mechanism is experimental in the sense that it may be changed if it turns out that it does not solve the problem it is supposed to solve. In that case, there may be backward incompatible improvements to this mechanism. See the documentation for the config parameter error_logger_format_depth in the Kernel application for information about how to turn on this feature. Full runtime dependencies of sasl-2.6: erts-6.0, kernel-4.1, stdlib-2.6, tools-2.6.14 --------------------------------------------------------------------- --- ssh-4.1 --------------------------------------------------------- --------------------------------------------------------------------- The ssh-4.1 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-11531 Application(s): ssh Send an understandable disconnect message when the key exchange phase can't find a common algorithm. There are also some test cases added. OTP-12853 Application(s): ssh Related Id(s): seq12891 The third parameter in ssh_sftp:write_file is now accepting iolists again. Unicode handling adjusted. --- Improvements and New Features --- OTP-12230 Application(s): ssh First part of ssh test suite re-organization and extension. OTP-12622 Application(s): ssh Related Id(s): OTP-12671, OTP-12672 *** HIGHLIGHT *** The key exchange algorithms 'ecdh-sha2-nistp256', 'ecdh-sha2-nistp384' and 'ecdh-sha2-nistp521' are implemented. See RFC 5656. This raises the security level considerably. OTP-12671 Application(s): ssh Related Id(s): OTP-12622, OTP-12672 *** HIGHLIGHT *** The key exchange algorithm 'diffie-hellman-group14-sha1' is implemented. See RFC 4253. This raises the security level. OTP-12672 Application(s): ssh Related Id(s): OTP-12622, OTP-12671 *** HIGHLIGHT *** The key exchange algorithms 'diffie-hellman-group-exchange-sha1' and 'diffie-hellman-group-exchange-sha256' are implemented. See RFC 4419. This raises the security level. OTP-12831 Application(s): ssh Adding random length extra padding as recommended in RFC 4253 section 6. OTP-12858 Application(s): ssh New test library for low-level protocol testing. There is also a test suite using it for some preliminary tests. The intention is to build on that for more testing of individual ssh messages. See lib/ssh/test/ssh_trpt_test_lib.erl and ssh_protocol_SUITE.erl in the same directory. OTP-12937 Application(s): ssh Increased default values for diffie-hellman-group-exchange-sha* to Min = 1024, N = 6144, Max = 8192. Added 6144 and 8192 bit default gex groups. OTP-12938 Application(s): ssh The mac algorithm 'hmac-sha2-512' is implemented. See RFC 6668. Full runtime dependencies of ssh-4.1: crypto-3.3, erts-6.0, kernel-3.0, public_key-0.22, stdlib-2.3 --------------------------------------------------------------------- --- ssl-7.1 --------------------------------------------------------- --------------------------------------------------------------------- The ssl-7.1 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-12974 Application(s): ssl Add DER encoded ECPrivateKey as valid input format for key option. OTP-12980 Application(s): ssl Correct return value of default session callback module This error had the symptom that the client check for unique session would always fail, potentially making the client session table grow a lot and causing long setup times. --- Improvements and New Features --- OTP-11397 Application(s): ssl *** HIGHLIGHT *** Add possibility to downgrade an SSL/TLS connection to a tcp connection, and give back the socket control to a user process. This also adds the possibility to specify a timeout to the ssl:close function. OTP-12832 Application(s): ssl Add application setting to be able to change fatal alert shutdown timeout, also shorten the default timeout. The fatal alert timeout is the number of milliseconds between sending of a fatal alert and closing the connection. Waiting a little while improves the peers chances to properly receiving the alert so it may shutdown gracefully. Full runtime dependencies of ssl-7.1: crypto-3.3, erts-6.0, inets-5.10.7, kernel-3.0, public_key-1.0, stdlib-2.0 --------------------------------------------------------------------- --- stdlib-2.6 ------------------------------------------------------ --------------------------------------------------------------------- Note! The stdlib-2.6 application can *not* be applied independently of other applications on an arbitrary OTP 18 installation. On a full OTP 18 installation, also the following runtime dependencies have to be satisfied: -- kernel-4.1 (first satisfied in OTP 18.1) -- sasl-2.6 (first satisfied in OTP 18.1) --- Fixed Bugs and Malfunctions --- OTP-12946 Application(s): stdlib In OTP 18.0, qlc does not handle syntax errors well. This bug has been fixed. OTP-12950 Application(s): stdlib Optimize zip:unzip/2 when uncompressing to memory. OTP-12973 Application(s): stdlib The stdlib reference manual is updated to show correct information about the return value of gen_fsm:reply/2. OTP-12977 Application(s): stdlib re:split2,3 and re:replace/3,4 now correctly handles pre-compiled patterns that have been compiled using the 'unicode' option. OTP-12990 Application(s): stdlib Export shell:catch_exception/1 as documented. --- Improvements and New Features --- OTP-12864 Application(s): kernel, sasl, stdlib *** HIGHLIGHT *** A mechanism for limiting the amount of text that the built-in error logger events will produce has been introduced. It is useful for limiting both the size of log files and the CPU time used to produce them. This mechanism is experimental in the sense that it may be changed if it turns out that it does not solve the problem it is supposed to solve. In that case, there may be backward incompatible improvements to this mechanism. See the documentation for the config parameter error_logger_format_depth in the Kernel application for information about how to turn on this feature. Full runtime dependencies of stdlib-2.6: compiler-5.0, crypto-3.3, erts-7.0, kernel-4.1, sasl-2.6 --------------------------------------------------------------------- --- tools-2.8.1 ----------------------------------------------------- --------------------------------------------------------------------- The tools-2.8.1 application can be applied independently of other applications on a full OTP 18 installation. --- Fixed Bugs and Malfunctions --- OTP-12981 Application(s): tools If a module includes eunit.hrl, a parse transform adds the function test/0 on line 0 in the module. A bug in OTP-18.0 caused cover:analyse_to_file/1 to fail to insert cover data in the output file when line 0 existed in the cover data table. This is now corrected. Full runtime dependencies of tools-2.8.1: compiler-5.0, erts-7.0, inets-5.10, kernel-3.0, runtime_tools-1.8.14, stdlib-2.5, webtool-0.8.10 --------------------------------------------------------------------- --- wx-1.5 ---------------------------------------------------------- --------------------------------------------------------------------- The wx-1.5 application can be applied independently of other applications on a full OTP 18 installation. --- Improvements and New Features --- OTP-12961 Application(s): wx Extend AUI functionality. Full runtime dependencies of wx-1.5: erts-6.0, kernel-3.0, stdlib-2.0 --------------------------------------------------------------------- --- Thanks to ------------------------------------------------------- --------------------------------------------------------------------- Attila Gulyas, Constantin Rack, Daniel Goertzen, Eric Meadows-Jönsson, Jimmy Zöger, Kirilll Zaborsky, Leo Liu, Lukas Larsson, Mikael Pettersson, Red, Shane Howley, Stefan Strigler, Yuki Ito, eksperimental, tmanevik --------------------------------------------------------------------- --------------------------------------------------------------------- ---------------------------------------------------------------------