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 <code>maps:values/1</code> 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
Erlang/OTP 17.3
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.3