Bug fix release : otp_src_17.1 Build date : 2014-06-24 This is 17.1, the first 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.1.readme (this file) The source distribution and binary distributions for Windows can be downloaded from http://www.erlang.org/download/otp_src_17.1.tar.gz http://www.erlang.org/download/otp_win32_17.1.exe http://www.erlang.org/download/otp_win64_17.1.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.1.tar.gz http://www.erlang.org/download/otp_doc_man_17.1.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- asn1-3.0.1 ---------------------------------------------------------- OTP-11372 The ASN.1 compiler now generates code that doesn't trigger Dialyzer warnings. Along the way, a few minor bugs were fixed. --- common_test-1.8.1 --------------------------------------------------- OTP-11871 Substrings in long telnet messages would sometimes get wrongly reversed. This error has been corrected. OTP-11917 The basic_html logging mode in Common Test (for compatibility with old browsers) generated HTML code with unbalanced tags. This has been fixed. OTP-11971 The mechanism for running code cover analysis with common_test has been improved. Earlier, if a test run consisted of multiple tests, cover would be started and stopped for each test. This would give "intermediate" cover logs available from the "Coverage log" link on the test suite result pages. To accumulate cover data over all tests, the 'export' option had to be used in the cover spec file. This was not well documented, and the functionality was quite confusing. Using the 'nodes' option in the cover spec file would fail when the test run consisted of multiple tests, since the specified nodes would only be included in the cover analysis of the first test. The repeated compilation and analysis of the same modules was also very time consuming. To overcome these problems, ct will now only cover compile and analyze modules once per test run, i.e. once for each cover spec file. The log file is available via a new button on the top level index page. The old "Coverage log" links on the test suite result pages still exist, but they all point to the same log containing the accumulated result. OTP-11988 If multiple tests would run simultaneously on different Erlang nodes, writing their logs to the same directory, then there would often be entries in the all_runs.html log file showing incomplete results (all zeroes) upon completion. This problem was caused by a bug in the Common Test log cache mechanism, which has been fixed. --- compiler-5.0.1 ------------------------------------------------------ OTP-11947 A Dialyzer crash involving analysis of Map types has now been fixed. OTP-11987 The compiler would fail to compile a file with a latin-1 character in the false branch of an -ifdef or -indef. (Thanks to Richard Carlsson for reporting this bug.) --- crypto-3.4 ---------------------------------------------------------- OTP-11911 Add aes_cfb8 cypher to crypto:block_encrypt and block_decrypt. OTP-11953 Fix memory leak in crypto:hmac_init/upgrade/final functions for all data and in crypto:hmac/3/4 for data larger than 20000 bytes. Bug exists since OTP 17.0. OTP-11999 Fix memory leak in crypto for elliptic curve. --- debugger-4.0.1 ------------------------------------------------------ OTP-11922 Fix evaluation of map updates in the debugger and erl_eval Reported-by: José Valim --- dialyzer-2.7.1 ------------------------------------------------------ OTP-11869 Fix a bug concerning opaque types. Thanks to Shayan Pooya for pointing out the bug. OTP-11918 A bug where Dialyzer failed to handle typed records with fields containing remote types has been fixed. Thanks to Erik Søe Sørensen for reporting the bug. OTP-11935 Make sure that only literal records are checked against the types of record definitions. Until now the elements of tuples have been checked against record field types if the tag and size of the tuple matches the record definition, often with surprising results. OTP-11947 A Dialyzer crash involving analysis of Map types has now been fixed. --- diameter-1.7 -------------------------------------------------------- OTP-11721 Improve robustness. Counters returned by diameter:service_info/2 now only count messages known to the dictionary in question, so that an attacker cannot cause arbitrarily many counters to be created. Messages to the Erlang log have been minimized, and those related to traffic have been removed entirely since an attacker could cause a node to be logged to death. Consequently, the default answer_errors configuration has been changed from report to discard. A service needs to be restarted for the change in default to take effect. OTP-11891 Add result code counters for CEA, DWA, and DPA. In addition to the existing result code counters on other answer messages. OTP-11893 Fix request table leak. Outgoing Diameter requests are stored in a table until an answer is received or times out. Calling diameter:stop_service/1 before this took place would orphan the entries, resulting in a memory leak. OTP-11901 Fix broken SCTP transport. OTP-11593 caused the sending of answer messages over SCTP to fail. OTP-11934 Fix watchdog process leak. A failed capabilities exchange on a listening transport would orphan a process, causing a memory leak. OTP-11936 Add best-effort decode of AVPs within Failed-AVP. OTP-11007 disabled the decode of AVPs in Failed-AVP since errors could cause the decode of Failed-AVP itself to fail. Component AVPs are now decoded if possible, otherwise not. AVPs of type Grouped are decoded as much as possible, as deeply as possible. OTP-11937 Add counters for encode errors in outgoing Diameter messages. In addition to the existing counters on decode errors. The latter now count independently of result codes in answer messages since decode errors do not preclude the presence of a result code. OTP-11938 Fix incorrect handling of incoming DPR. In the case of a listening transport, a reconnection by a peer following DPR could transition the watchdog state to REOPEN instead of OKAY. OTP-11946 Fix handling of AVP length errors on unknown AVPs. An AVP (Header) length that pointed past the end of the message was not flagged as a 5014 error in this case. Moreover, encoding such an AVP in the Failed-AVP of an answer message as a consequence of other errors (e.g M-bit, resulting in 5001) failed if the AVP contained a complete header. OTP-11958 Fix broken check in dictionary compilation. That an AVP specified in the content of a @codecs or @custom_types section was undefined went undetected, causing compilation to fail when attempting to lookup the AVP's type. --- erl_interface-3.7.17 ------------------------------------------------ OTP-11984 Now works with Visual Studio. --- erts-6.1 ------------------------------------------------------------ OTP-11849 The documentation for spawn_opt/5 now has a note mentioning that the monitor option is not supported. OTP-11852 Fix broken system monitoring of large_heap for non-smp VM. No message for large_heap was ever sent on non-smp VM. Bug exist since R16B. OTP-11859 Fixed type spec of erlang:system_info/1. OTP-11887 The emulator without SMP support crashed when passing a message to a process without enough heap space for the message. This bug was introduced in erts-6.0. OTP-11888 The following native functions now bump an appropriate amount of reductions and yield when out of reductions: -- erlang:binary_to_list/1 -- erlang:binary_to_list/3 -- erlang:bitstring_to_list/1 -- erlang:list_to_binary/1 -- erlang:iolist_to_binary/1 -- erlang:list_to_bitstring/1 -- binary:list_to_bin/1 Characteristics impact: -- Performance -- The functions converting from lists got a performance loss for very small lists, and a performance gain for very large lists. -- Priority -- Previously a process executing one of these functions effectively got an unfair priority boost. This priority boost depended on the input size. The larger the input was, the larger the priority boost got. This unfair priority boost is now lost. OTP-11892 Fix race between ETS table deletion and unfixation that could cause VM crash. The race could happen between a terminating process that does not own the table but has a fixation on it and another process that deletes the table (maybe the owner terminating) at the same time. Bug existed since R15B02. OTP-11916 The string following the -eval option when invoking erl would not be properly translated from UTF-8 to a list of Unicode characters (as would the arguments for -run). That bug would cause the build of Erlang/OTP to fail when building in a directory whose pathname contained non-US ASCII characters encoded in UTF-8. (Thanks to Eric Pailleau for reporting this bug.) OTP-11921 The systemd features of epmd have been removed from epmd by default. To enable them you have to build erlang with the configure option --enable-systemd. OTP-11923 Fix erts_debug:size/1 to handle Map sizes OTP-11931 Removed Erlang wrapper code used when calling binary_to_term/1 and binary_to_term/2. This improves the performance of these BIFs especially when they are called with small binaries as input. OTP-11942 Removed erlang:bitstr_to_list/1 and erlang:list_to_bitstr/1. They were added by mistake, and have always raised an undefined exception when called. OTP-11945 Fixed compilation using mingw-w64 on Windows. Thanks to Jani Hakala. OTP-11961 The git sha is no longer printed in the shell start header when erlang is built from a tagged git release. OTP-11968 Fixed a bug where send trace events were erroneously dropped when the send was done to a registered process. This bug was introduced in R16B. OTP-11970 Add erlang:system_info(tolerant_timeofday), an API to check whether compensation for sudden changes of system time is enabled or not. --- hipe-3.11 ----------------------------------------------------------- OTP-11900 Handle Maps instructions get_map_elements, put_map_assoc, put_map_exact in HiPE compiler. OTP-11947 A Dialyzer crash involving analysis of Map types has now been fixed. --- inets-5.10.2 -------------------------------------------------------- OTP-11914 Correct distirbing mode for httpd:reload_config/2 OTP-11925 Improved handling of invalid strings in the HTTP request line. Impact: May improve memory consumption OTP-11992 httpc: Fix streaming bugs when handling small responses --- kernel-3.0.1 -------------------------------------------------------- OTP-11864 If the Config given to application_controller:change_application_data included other config files, it was only expanded for already existing (loaded) applications. If an upgrade added a new application which had config data in an included config file, the new application did not get correct config data. This is now changed so config data will be expanded for all applications. OTP-11913 It was allowed to re-load pre-loaded modules such as erlang, but that could cause strange and unwanted things to happen, such as call apply/3 to loop. Pre-loaded modules are now sticky by default. (Thanks to Loïc Hoguin for reporting this bug.) code:add_path("/ending/in/slash/") removes the trailing slash, adding /ending/in/slash to the code path. However, code:del_path("/ending/in/slash/") would fail to remove the path since it did not remove the trailing slash. This has been fixed. OTP-11923 Fix erts_debug:size/1 to handle Map sizes OTP-11982 The documentation for file:file_info/1 has been removed. The function itself was removed a long time ago. --- mnesia-4.12.1 ------------------------------------------------------- OTP-11948 Force load table could hang when a node went away during start up. OTP-11981 The time for inserting locks for a transaction with large number of locks is reduced significantly. --- observer-2.0.1 ------------------------------------------------------ OTP-11919 crashdump_viewer would crash if the owner of a timer was specified as the process' registered name. This has been corrected. OTP-11949 Fix crash and minor updates. --- reltool-0.6.6 ------------------------------------------------------- OTP-11977 Fixed a minor typo in an error message from reltool_server. --- ssh-3.0.3 ----------------------------------------------------------- OTP-11883 Removed mail address from error reports and corrected spelling error (Stacktace -> stacktrace) OTP-11885 Option max_sessions added to ssh:daemon/{2,3}. This option, if set, limits the number of simultaneous connections accepted by the daemon. OTP-11908 Fixed timeout bug in ssh:connect. OTP-11972 Accepts that some older OpenSSH clients sends incorrect disconnect messages. OTP-11976 Handle inet and inet6 option correctly OTP-11983 Decode/encode fixes in SSH_MSG_IGNORE and SSH_MSG_UNIMPLEMENTED. --- ssl-5.3.5 ----------------------------------------------------------- OTP-11874 Gracefully handle unknown alerts Thanks to Atul Atri for reporting this issue OTP-11875 Gracefully ignore cipher suites sent by client not supported by the SSL/TLS version that the client has negotiated. Thanks to Danil Zagoskin for reporting this issue OTP-11878 ssl:recv now returns {error, einval} if applied to a non passive socket, the same as gen_tcp:recv. Thanks to Danil Zagoskin for reporting this issue OTP-11880 Gracefully handle structured garbage, i.e a client sends some garbage in a ssl record instead of a valid fragment. Thanks to Danil Zagoskin OTP-11886 Corrected handling of default values for signature_algorithms extension in TLS-1.2 and corresponding values used in previous versions that does not support this extension. Thanks to Danil Zagoskin OTP-11890 Gracefully handle invalid alerts OTP-11897 Handle socket option inheritance when pooling of accept sockets is used OTP-11912 Make sure that the list of versions, possibly supplied in the versions option, is not order dependent. Thanks to Ransom Richardson for reporting this issue OTP-11926 Reject connection if the next_protocol message is sent twice. OTP-11950 Correct options handling when ssl:ssl_accept/3 is called with new ssl options after calling ssl:listen/2 OTP-11966 Generalize handling of default ciphers Thanks to Andreas Schultz OTP-11975 Make sure change cipher spec is correctly handled --- stdlib-2.1 ---------------------------------------------------------- OTP-11850 filelib:wildcard("broken_symlink") would return an empty list if "broken_symlink" was a symlink that did not point to an existing file. OTP-11854 erl_tar can now handle files names that contain Unicode characters. See "UNICODE SUPPORT" in the documentation for erl_tar. When creating a tar file, erl_tar would sometime write a too short end of tape marker. GNU tar would correctly extract files from such tar file, but would complain about "A lone zero block at...". OTP-11872 When redefining and exporting the type map() the Erlang Code Linter (erl_lint) erroneously emitted an error. This bug has been fixed. OTP-11888 The following native functions now bump an appropriate amount of reductions and yield when out of reductions: -- erlang:binary_to_list/1 -- erlang:binary_to_list/3 -- erlang:bitstring_to_list/1 -- erlang:list_to_binary/1 -- erlang:iolist_to_binary/1 -- erlang:list_to_bitstring/1 -- binary:list_to_bin/1 Characteristics impact: -- Performance -- The functions converting from lists got a performance loss for very small lists, and a performance gain for very large lists. -- Priority -- Previously a process executing one of these functions effectively got an unfair priority boost. This priority boost depended on the input size. The larger the input was, the larger the priority boost got. This unfair priority boost is now lost. OTP-11922 Fix evaluation of map updates in the debugger and erl_eval Reported-by: José Valim OTP-11951 Add maps:get/3 to maps module. The function will return the supplied default value if the key does not exist in the map. --- syntax_tools-1.6.15 ------------------------------------------------- OTP-11930 Fix reverting map in syntax_tools There was a bug in erl_syntax when running e.g. erl_syntax:revert_forms, affecting maps. Instead of getting Key/Value you got Key/Key in the resulting abstract form. --- test_server-3.7.1 --------------------------------------------------- OTP-11971 The mechanism for running code cover analysis with common_test has been improved. Earlier, if a test run consisted of multiple tests, cover would be started and stopped for each test. This would give "intermediate" cover logs available from the "Coverage log" link on the test suite result pages. To accumulate cover data over all tests, the 'export' option had to be used in the cover spec file. This was not well documented, and the functionality was quite confusing. Using the 'nodes' option in the cover spec file would fail when the test run consisted of multiple tests, since the specified nodes would only be included in the cover analysis of the first test. The repeated compilation and analysis of the same modules was also very time consuming. To overcome these problems, ct will now only cover compile and analyze modules once per test run, i.e. once for each cover spec file. The log file is available via a new button on the top level index page. The old "Coverage log" links on the test suite result pages still exist, but they all point to the same log containing the accumulated result. --- tools-2.6.15 -------------------------------------------------------- OTP-11942 Removed erlang:bitstr_to_list/1 and erlang:list_to_bitstr/1. They were added by mistake, and have always raised an undefined exception when called. --- typer-0.9.8 --------------------------------------------------------- OTP-11860 Added initial documentation framework for TypEr. OTP-11996 The name of a compiler option has been fixed in the Makefile. --- wx-1.3 -------------------------------------------------------------- OTP-11985 Fix delayed destroy for wxPaintDC objects which could cause an eternal loop for modal dialogs. Fix wxSL_LABELS compatibility between wxWidgets-2.8 and wxWidgets-3.0 versions OTP-11986 Add missing classes wxPopup[Transient]Window, wxActivateEvent and wxTextCtrl:changeValue/2 function. --- Open Source Contributors -------------------------------------------- Thanks to: Andreas Schultz, Anthony Ramine, Bernard Duggan, Colton, Danil Zagoskin, Eiichi Tsukata, Erik Norgren, Jani Hakala, José Valim, Kirill Zaborsky, Kostis Sagonas, Luca Favatella, Magnus Lång, Matwey V. Kornilov, Mikael Pettersson, Paul Guyot, Pierre Fenoll, Piotr Nosek, Roland Karlsson, Sergey Abramyan, Sergey Sinkovskiy, Tobias Lindahl, Yifeng Xu, Yuki Ito