Bug fix release : otp_src_17.3 Build date : 2014-09-17 This is 17.3, the third maintenance release for the 17 major release. You can find the README file for the release at http://www.erlang.org/download/otp_src_17.3.readme (this file) The source distribution and binary distributions for Windows can be downloaded from http://www.erlang.org/download/otp_src_17.3.tar.gz http://www.erlang.org/download/otp_win32_17.3.exe http://www.erlang.org/download/otp_win64_17.3.exe Note: To unpack the TAR archive you need a GNU TAR compatible program. For installation instructions please read the README file that is part of the distribution. The on-line documentation can be found at: http://www.erlang.org/doc/ You can also download the complete HTML documentation or the Unix manual files http://www.erlang.org/download/otp_doc_html_17.3.tar.gz http://www.erlang.org/download/otp_doc_man_17.3.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- POTENTIAL INCOMPATIBILITIES ----------------------------------------- OTP-12061 == erts kernel == When using gen_tcp:connect or gen_udp:open and the fd option with port and/or ip, the port and ip options were ignored. This has been fixed so that if port and/or ip is specified together with fd a bind is requested for that fd. If port and/or ip is not specified (or set to 0 for udp) bind will not be called. --- asn1-3.0.2 ---------------------------------------------------------- OTP-12125 Several problems where the ASN.1 compiler would crash when attempting to compile correct specifications have been corrected. OTP-12145 Robustness when decoding incorrect BER messages has been improved. --- common_test-1.8.2 --------------------------------------------------- OTP-12037 Ticket OTP-11971 introduced a runtime dependency towards test_server-3.7.1, since the interface between test_server and common_test was changed. Erroneously, the common_test.app file was not updated according to this. This has now been corrected. OTP-12119 Warning: this is experimental and may disappear or change without previous warning. Experimental support for running Quickcheck and PropEr tests from common_test suites is added to common_test. See the reference manual for the new module ct_property_testing. Experimental property tests are added under lib/{inet,ssh}/test/property_test. They can be run directly or from the common_test suites inet/ftp_property_test_SUITE.erl and ssh/test/ssh_property_test_SUITE.erl. See the code in the test directories and the man page for details. (Thanks to Tuncer Ayaz for a patch adding Triq) --- compiler-5.0.2 ------------------------------------------------------ OTP-12132 Corrected a bug with incorrect code generation when in-lining was turned on. --- crypto-3.4.1 -------------------------------------------------------- OTP-12146 Make crypto verify major version number of OpenSSL header files and runtime library. Loading of crypto will fail if there is a version mismatch. --- dialyzer-2.7.2 ------------------------------------------------------ OTP-12018 A bug concerning is_record/2,3 has been fixed, as well as some cases where Dialyzer could crash due to reaching system limits. OTP-12111 When given the -Wunderspecs flag Dialyzer sometimes output bogus warnings for parametrized types. This bug has been fixed. OTP-12150 Dialyzer now fetch the compile options from beam files, and use them when creating core from the abstract code. Previously the options were ignored. --- diameter-1.7.1 ------------------------------------------------------ OTP-12074 Don't leave extra bit in decoded AVP data. An extra bit could be communicated in the data field of a diameter_avp record in the case of length errors. Of no consequence for code using the record encoding of Diameter messages, but code examining diameter_avp records would see this bit. Dictionary files must be recompiled for the fix to have effect. OTP-12080 Fix counting of outgoing requests and answers setting the E-bit. OTP-11721 broke these counters for all outgoing requests except DWR, and caused answers setting the E-bit to be counted as unknown messages. OTP-12094 Fix Failed-AVP decode. The best-effort decode only worked for AVPs in the common dictionary, not for those in the dictionary of the application identified in the Diameter Header of the answer message in question. Failed-AVP in an answer decoded with the RFC 3588 common dictionary (diameter_gen_base_rfc3588) was regarded as an error. The RFC 6733 dictionary was unaffected. Dictionary files must be recompiled for the fix to have effect. --- edoc-0.7.15 --------------------------------------------------------- OTP-12058 Fix spec to doc generation from erl_docgen and edoc for maps --- erl_docgen-0.3.6 ---------------------------------------------------- OTP-12058 Fix spec to doc generation from erl_docgen and edoc for maps --- erl_interface-3.7.18 ------------------------------------------------ OTP-12153 Implement --enable-sanitizers[=sanitizers]. Similar to debugging with Valgrind, it's very useful to enable -fsanitize= switches to catch bugs at runtime. --- erts-6.2 ------------------------------------------------------------ OTP-9828 Fix bug that could cause enif_make_copy to reallocate the binary and thereby invalidate a pointer received from an earlier call to enif_inspect_binary. OTP-12052 General documentation updates. OTP-12059 Add log2 histogram to lcnt for lock wait time OTP-12061 When using gen_tcp:connect or gen_udp:open and the fd option with port and/or ip, the port and ip options were ignored. This has been fixed so that if port and/or ip is specified together with fd a bind is requested for that fd. If port and/or ip is not specified (or set to 0 for udp) bind will not be called. OTP-12082 A bug in the VM code implementing sending of signals to ports could cause the receiving port queue to remain in a busy state forever. When this state had been reached, processes sending command signals to the port either got suspended forever, or, if the nosuspend feature was used, always failed to send to the port. This bug was introduced in ERTS version 5.10. In order for this bug to be triggered on a port, one had to at least once utilize the nosuspend functionality when passing a signal to the port. This by either calling -- port_command(Port, Data, [nosuspend | Options]), -- erlang:send(Port, {PortOwner, {command, Data}}, [nosuspend | Options]), -- erlang:send_nosuspend(Port, {PortOwner, {command, Data}}), or -- erlang:send_nosuspend(Port, {PortOwner, {command, Data}}, Options). Thanks Vasily Demidenok for reporting the issue, and Sergey Kudryashov for providing a test case. OTP-12084 A locking bug in the implementation of port scheduling could cause thread unsafe modifications of port internal data structures resulting in a VM crash. This bug was automatically fixed by the rewrite of the scheduling code (OTP-10336) introduced in ERTS version 5.10. OTP-12091 Fix size overflow bug at memory allocation. A memory allocation call, with an insane size close to the entire address space, could return successfully as if it had allocated just a few bytes. (Thanks to Don A. Bailey for reporting) OTP-12097 Fix various issues where negating a signed integer would trigger undefined behaviour. This fixes issues in the enif_make_int64 interface and some edge cases inside the erlang runtime system. OTP-12102 The documentation erroneously listed the +swct command line argument under +sws. OTP-12105 Profiling messages could be delivered out of order when profiling on runnable_procs and/or runnable_ports using erlang:system_profile/2. This bug was introduced in ERTS version 5.10. OTP-12115 Various logging fixes, including: Add run queue index to the process dump in crash dumps. Add thread index to enomem slogan when crashing. Remove error logger message for sending messages to old instances of the same node. OTP-12128 Introduced enif_schedule_nif() to the NIF API. The enif_schedule_nif() function allows a long-running NIF to be broken into separate NIF invocations without the help of a wrapper function written in Erlang. The NIF first executes part of the long-running task, then calls enif_schedule_nif() to schedule a NIF for later execution to continue the task. Any number of NIFs can be scheduled in this manner, one after another. Since the emulator regains control between invocations, this helps avoid problems caused by native code tying up scheduler threads for too long. The enif_schedule_nif() function also replaces the enif_schedule_dirty_nif() in the experimental dirty NIF API. The enif_have_dirty_schedulers() function has also been removed and instead a new field dirty_scheduler_support exists in the struct return by enif_system_info(). Note that the only incompatible changes made are in the experimental dirty NIF API. See the NIF documentation for more information. Thanks to Steve Vinoski. OTP-12138 Fix compiler warnings reported by LLVM OTP-12140 Correct conversion of MIN_SMALL by list_to_integer/1 and binary_to_integer/1. The bug produced an unnormalized bignum which can cause strange behavior such as comparing different to a correct MIN_SMALL integer. The value MIN_SMALL is -(1 bsl 27) = -134217728 on a 32-bit VM and -(1 bsl 59) = -576460752303423488 on a 64-bit VM. (Thanks to Jesper Louis Andersen, Mikael Pettersson and Anthony Ramine for report, patch and optimization suggestion) OTP-12141 Fix bug in term_to_binary that reallocates binary with inconsistent size information. Bug has never been confirmed to be the cause of any faulty behavior. OTP-12155 Real_path method used while prim loading archive files was not taking into account the fact that windows directory symlinks can be across different drives. --- eunit-2.2.8 --------------------------------------------------------- OTP-12051 Minor refactoring. --- hipe-3.11.1 --------------------------------------------------------- OTP-12015 The pretty-printing of bitstrings has been corrected. OTP-12018 A bug concerning is_record/2,3 has been fixed, as well as some cases where Dialyzer could crash due to reaching system limits. --- ic-4.3.6 ------------------------------------------------------------ OTP-12138 Fix compiler warnings reported by LLVM --- inets-5.10.3 -------------------------------------------------------- OTP-12013 httpd: Separate timeout for TLS/SSL handshake from keepalive timeout OTP-12119 Warning: this is experimental and may disappear or change without previous warning. Experimental support for running Quickcheck and PropEr tests from common_test suites is added to common_test. See the reference manual for the new module ct_property_testing. Experimental property tests are added under lib/{inet,ssh}/test/property_test. They can be run directly or from the common_test suites inet/ftp_property_test_SUITE.erl and ssh/test/ssh_property_test_SUITE.erl. See the code in the test directories and the man page for details. (Thanks to Tuncer Ayaz for a patch adding Triq) OTP-12152 Fix some spelling mistakes in documentation --- jinterface-1.5.10 --------------------------------------------------- OTP-12049 Array now show meaningful values in exceptions. OTP-12050 Documentation improvements. OTP-12075 Include the cause when raising a new IOException, which should make the reason for the exception clearer. OTP-12121 Arrays (here: md5 and freeVars) must not be compared with equals, which is broken (compares identity). --- kernel-3.0.3 -------------------------------------------------------- OTP-12061 When using gen_tcp:connect or gen_udp:open and the fd option with port and/or ip, the port and ip options were ignored. This has been fixed so that if port and/or ip is specified together with fd a bind is requested for that fd. If port and/or ip is not specified (or set to 0 for udp) bind will not be called. OTP-12154 Accept inet:ip_address() in net_adm:names/1 --- megaco-3.17.2 ------------------------------------------------------- OTP-12153 Implement --enable-sanitizers[=sanitizers]. Similar to debugging with Valgrind, it's very useful to enable -fsanitize= switches to catch bugs at runtime. --- mnesia-4.12.3 ------------------------------------------------------- OTP-12115 Various logging fixes, including: Add run queue index to the process dump in crash dumps. Add thread index to enomem slogan when crashing. Remove error logger message for sending messages to old instances of the same node. OTP-12124 Fixed a race which could make create_table fail if a node was going down during the transaction. --- observer-2.0.2 ------------------------------------------------------ OTP-12162 Fixed status bar on Windows --- odbc-2.10.21 -------------------------------------------------------- OTP-12138 Fix compiler warnings reported by LLVM OTP-12153 Implement --enable-sanitizers[=sanitizers]. Similar to debugging with Valgrind, it's very useful to enable -fsanitize= switches to catch bugs at runtime. --- orber --------------------------------------------------------------- OTP-12062 A couple of macros were malformed, missing commas: PROFILEBODY_1_1_TYPEDEF and PROFILEBODY_1_2_TYPEDEF. Thanks to Vlad Dumitrescu. --- os_mon-2.3 ---------------------------------------------------------- OTP-12053 Adds a new application parameter 'disksup_posix_only', to make diskup use only options defined in the POSIX standard. --- public_key-0.22.1 --------------------------------------------------- OTP-11915 Added missing encoding support for PBES2, and also completed support for PBES1 that was incomplete. --- sasl-2.4.1 ---------------------------------------------------------- OTP-12025 The documentation erroneously specified that alarm_handler:clear_alarm/1 would clear all alarms with id AlarmId. This is now corrected according to the implementation - only the latest received alarm with the given AlarmId is cleared by the simple default handler. --- snmp-5.1 ------------------------------------------------------------ OTP-12108 The SNMP manager has been enhanced with dual stack IPv4+IPv6, as the agent just was. The documentation is also now updated for both the agent and the manager. --- ssh-3.0.5 ----------------------------------------------------------- OTP-12057 When starting an ssh-daemon giving the option {parallel_login, true}, the timeout for authentication negotiation ({negotiation_timeout, integer()}) was never removed. This caused the session to always be terminated after the timeout if parallel_login was set. OTP-12119 Warning: this is experimental and may disappear or change without previous warning. Experimental support for running Quickcheck and PropEr tests from common_test suites is added to common_test. See the reference manual for the new module ct_property_testing. Experimental property tests are added under lib/{inet,ssh}/test/property_test. They can be run directly or from the common_test suites inet/ftp_property_test_SUITE.erl and ssh/test/ssh_property_test_SUITE.erl. See the code in the test directories and the man page for details. (Thanks to Tuncer Ayaz for a patch adding Triq) --- ssl-5.3.6 ----------------------------------------------------------- OTP-12026 Corrected handling of ECC certificates, there where several small issues with the handling of such certificates in the ssl and public_key application. Now ECC signed ECC certificates shall work and not only RSA signed ECC certificates. OTP-12048 Add decode functions for SNI (Server Name Indication) OTP-12149 Check that the certificate chain ends with a trusted ROOT CA e.i. a self-signed certificate, but provide an option partial_chain to enable the application to define an intermediate CA as trusted. --- stdlib-2.2 ---------------------------------------------------------- OTP-11800 The type spec of the FormFunc argument to sys:handle_debug/4 was erroneously pointing to dbg_fun(). This is now corrected and the new type is format_fun(). OTP-11967 Behaviors such as gen_fsm and gen_server should always invoke format_status/2 before printing the state to the logs. OTP-12024 The documentation of dets:insert_new/2 has been corrected. (Thanks to Alexei Sholik for reporting the bug.) OTP-12041 Printing a term with io_lib:format and control sequence w, precision P and field width F, where F< P would fail in one of the two following ways: 1) If P < printed length of the term, an infinite loop would be entered, consuming all available memory. 2) If P >= printed length of the term, an exception would be raised. These two problems are now corrected. OTP-12055 The documentation of maps:values/1 has been corrected. OTP-12063 Expand shell functions in map expressions. OTP-12137 Add maps:with/2 --- tools-2.7 ----------------------------------------------------------- OTP-12059 Add log2 histogram to lcnt for lock wait time --- wx-1.3.1 ------------------------------------------------------------ OTP-12153 Implement --enable-sanitizers[=sanitizers]. Similar to debugging with Valgrind, it's very useful to enable -fsanitize= switches to catch bugs at runtime. --- Open Source Contributors -------------------------------------------- Thanks to: Alex Wilson, András Veres-Szentkirályi, Anthony Ramine, Derek Brown, Garret Smith, Igor Savchuk, James Fish, Johannes Weißl, Louis-Philippe Gauthier, Luca Favatella, Luis Rascão, Magnus Henoch, Michael K. Schmidt, Michael Truog, Rick Reed, Sergey Kudryashov, Slava Yurin, Steve Vinoski, Tuncer Ayaz, Vlad Dumitrescu, Wasif Malik, Yuki Ito, kudryashov-sv, lharc, pascalchap