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
Erlang/OTP 17.1
This release of Erlang/OTP can be built from source or installed using pre-built packages for your OS or third-party tools (such as kerl or asdf).
docker run -it erlang:17.1