From 5aa950086a5fa036f27e670517a5c743e0610128 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Mon, 6 May 2019 17:09:17 +0200 Subject: Prepare release --- erts/doc/src/notes.xml | 18 ++++++++++++++++++ erts/vsn.mk | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) (limited to 'erts') diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index e0af7bc4ce..e8a7d88f9e 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -31,6 +31,24 @@

This document describes the changes made to the ERTS application.

+
Erts 10.3.5 + +
Fixed Bugs and Malfunctions + + +

+ Fixed more bugs in process_info(reductions) + causing it to sometimes behave non-monotonic. That is, a + subsequent call toward the same process could return a + lower reduction value.

+

+ Own Id: OTP-15793 Aux Id: ERIERL-337, OTP-15709

+
+
+
+ +
+
Erts 10.3.4
Fixed Bugs and Malfunctions diff --git a/erts/vsn.mk b/erts/vsn.mk index fafcdf3b28..c57f8746f6 100644 --- a/erts/vsn.mk +++ b/erts/vsn.mk @@ -18,7 +18,7 @@ # %CopyrightEnd% # -VSN = 10.3.4 +VSN = 10.3.5 # Port number 4365 in 4.2 # Port number 4366 in 4.3 -- cgit v1.2.3 From 8780156706350a56b763d70f8672d0343f9f9e54 Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Wed, 8 May 2019 09:50:00 +0200 Subject: Fix bad merge from maint-21 --- erts/doc/src/notes.xml | 2027 +----------------------------------------------- 1 file changed, 18 insertions(+), 2009 deletions(-) (limited to 'erts') diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index 8336c1e3d6..cc44b2f4cc 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -31,6 +31,24 @@

This document describes the changes made to the ERTS application.

+
Erts 10.3.5 + +
Fixed Bugs and Malfunctions + + +

+ Fixed more bugs in process_info(reductions) + causing it to sometimes behave non-monotonic. That is, a + subsequent call toward the same process could return a + lower reduction value.

+

+ Own Id: OTP-15793 Aux Id: ERIERL-337, OTP-15709

+
+
+
+ +
+
Erts 10.3.4
Fixed Bugs and Malfunctions @@ -2078,2015 +2096,6 @@
-
Erts 10.3.5 - -
Fixed Bugs and Malfunctions - - -

- Fixed more bugs in process_info(reductions) - causing it to sometimes behave non-monotonic. That is, a - subsequent call toward the same process could return a - lower reduction value.

-

- Own Id: OTP-15793 Aux Id: ERIERL-337, OTP-15709

-
-
-
- -
- -
Erts 10.3.4 - -
Fixed Bugs and Malfunctions - - -

Add missing documentation of new external tags - NEW_PID, NEW_PORT and - NEWER_REFERENCE introduced in OTP 19.

These - new tags are planned to be "activated" in OTP 23 when - distribution capability flag DFLAG_BIG_CREATION - becomes mandatory. Older nodes (>= 19) are able to decode - these new tags and send them back to the new node. Nodes - older than OTP 23 will however never encode their own - local pids, ports and references using the new tags.

-

- Own Id: OTP-15766

-
-
-
- -
- -
Erts 10.3.3 - -
Fixed Bugs and Malfunctions - - -

- Fix erlang:open_port/2 with the fd option - to correctly cleanup the pollset when the port is closed. - Before this fix there would be error printouts sent to - logger when the same fd was reused in a new port.

-

- Own Id: OTP-15753 Aux Id: ERL-900

-
-
-
- -
- -
Erts 10.3.2 - -
Fixed Bugs and Malfunctions - - -

Fixed a bug in seq_trace:reset_trace/0 that - could crash the emulator.

-

- Own Id: OTP-15704

-
- -

- Fixed bug in process_info(reductions) causing it - to sometimes return invalid results.

-

- Own Id: OTP-15709 Aux Id: ERIERL-337

-
-
-
- -
- -
Erts 10.3.1 - -
Fixed Bugs and Malfunctions - - -

If a suspend/resume signal pair was sent to a process - while it was executing dirty, the receiving process could - later end up in a suspended state indefinitely. This bug - was introduced in ERTS version 10.0 (OTP 21.0).

-

Suspend/resume signals are sent from erlang:suspend_process()/erlang:resume_process(). - The dbg trace - tool utilize this functionality and could thus trigger - this bug.

-

- Own Id: OTP-15688

-
- -

- Fix a possible deadlock when terminating the ERTS caused - by a dirty scheduler not releasing it's run-queue lock - when terminating.

-

- Own Id: OTP-15690 Aux Id: PR-2172

-
-
-
- -
- -
Erts 10.3 - -
Fixed Bugs and Malfunctions - - -

When multiplying a number by itself, a word beyond the - number on the heap could be read (and ignored). This bug - was extremely unlikely to actually cause a real - problem.

-

- Own Id: OTP-15484

-
- -

- Fix bug where doing seq_trace:reset_trace() while - another process was doing a garbage collection could - cause the run-time system to segfault.

-

- Own Id: OTP-15490

-
- -

- Fix reading of ancillary data from packet oriented - sockets on old Linux kernel versions. Without this fix, - getting the data would cause the port to enter an - infinite loop.

-

- Own Id: OTP-15494

-
- -

- Fix bug where crash dumping or doing - erlang:system_info(procs) while another process - was doing a garbage collection could cause the run-time - system to segfault.

-

- Own Id: OTP-15527

-
- -

- Fix erlang:system_info(kernel_poll) to return - correct value. Before this fix, the call always returned - false.

-

- Own Id: OTP-15556

-
- -

- Fix bug in enif_make_map_from_arrays that would - produce broken maps when number of keys were 32. Bug - exists since OTP 21.0.

-

- Own Id: OTP-15567

-
- -

- Fix a bug in binary:encode_unsigned that may cause - a read of uninitialized memory.

-

- The bug existed since the function was added (OTP - R16B02).

-

- Own Id: OTP-15583 Aux Id: PR-2118

-
- -

- Fixed a bug that could cause heart to kill an - exiting node before it had time to flush all buffered - writes. If environment variable - HEART_KILL_SIGNAL=SIGABRT was set a superfluous - core dump could also be generated.

-

- Own Id: OTP-15599 Aux Id: ERIERL-298

-
- -

- Fix enif_consume_timeslice to be a no-op on dirty - scheduler and not crash debug compiled emulator.

-

- Own Id: OTP-15604

-
- -

- Fixed macro redefinition warnings.

-

- Own Id: OTP-15629

-
- -

- to_erl fixed to not garble terminal input beyond - 7-bit ASCII.

-

- Own Id: OTP-15650 Aux Id: ERL-854, PR-2161

-
- -

- Minor fixes for make clean.

-

- Own Id: OTP-15657

-
- -

- Fixed a bug in all ets:select* and - ets:match* functions that could in some rare cases - lead to very poor performance.

-

- Own Id: OTP-15660 Aux Id: ERL-869

-
-
-
- - -
Improvements and New Features - - -

- Add erlang:system_flag(system_logger, Pid) and - erlang:system_info(system_logger). This - system_flag can be used to set the process that will - receive the logging messages generated by ERTS.

-

- Own Id: OTP-15375

-
- -

integer_to_list/2 and - integer_to_binary/2 are now implemented in C, - improving their performance.

-

- Own Id: OTP-15503 Aux Id: PR-2052

-
- -

- Improved term_to_binary to do more fair reduction - count and yielding when encoding large byte lists - (strings).

-

- Own Id: OTP-15514 Aux Id: ERL-774

-
- -

- Made internal port drivers more robust against - erlang:port_control with invalid arguments and - added documentation warnings about such abuse.

-

- Own Id: OTP-15555 Aux Id: ERIERL-231

-
- -

- Fix bug on NetBSD where the exit_status from a - port program would never be sent.

-

- Own Id: OTP-15558 Aux Id: ERL-725

-
- -

There is a new function persistent:term(Key, - Default) to allow specifying a default when looking - up a persistent term.

-

- Own Id: OTP-15576 Aux Id: ERL-843

-
- -

A transitory emulator option '+ztma true' has - been added to allow running existing BEAM code that - relies on "tuple calls" (dispatch on parameterized - modules) which has been compiled under OTP 20 or earlier. - This option will be removed in OTP 22, so such modules - should eventually be recompiled with the - +tuple_calls option.

-

- Own Id: OTP-15580 Aux Id: PR-2113

-
-
-
- -
- -
Erts 10.2.5 - -
Fixed Bugs and Malfunctions - - -

Fixes of install/release phase in build system.

- The source tree was modified when - installing/releasing and/or applying a patch. - Some files were installed with wrong access - rights. If applying a patch (using - otp_patch_apply) as another user (except root) - than the user that built the source, the documentation - was not properly updated. -

- Own Id: OTP-15551

-
- -

- Setting the recbuf size of an inet socket the - buffer is also automatically increased. Fix a bug - where the auto adjustment of inet buffer size would be - triggered even if an explicit inet buffer size had - already been set.

-

- Own Id: OTP-15651 Aux Id: ERIERL-304

-
- -

- Reading from UDP using active true or active - N mode has been optimized when more packets than - specified by read_packets are available on the - socket.

-

- Own Id: OTP-15652 Aux Id: ERIERL-304

-
-
-
- -
- -
Erts 10.2.4 - -
Fixed Bugs and Malfunctions - - -

- When using the {linger,{true,T}} option; - gen_tcp:listen/2 used the full linger time before - returning for example eaddrinuse. This bug has now - been corrected.

-

- Own Id: OTP-14728 Aux Id: ERIERL-303

-
-
-
- -
- -
Erts 10.2.3 - -
Fixed Bugs and Malfunctions - - -

- Fix bug where doing a gen_tcp:send on a socket - with delay_send set to true could cause a segfault - if the other side closes the connection.

-

- Bug was introduced in erts-10.2 (OTP-21.2).

-

- Own Id: OTP-15536 Aux Id: ERL-827

-
- -

- Fix a race condition when a port program closes that - could result in the next started port to hang during - startup.

-

- When this fault happens the following error is normally - (but not always) logged:

-

- =ERROR REPORT==== 14-Jan-2019::10:45:52.868246 - ===
Bad input fd in erts_poll()! fd=11, - port=#Port<0.505>, driver=spawn, name=/bin/sh -s - unix:cmd

-

- Bug was introduced in erts-10.0 (OTP-21.0).

-

- Own Id: OTP-15537

-
- -

- Fix a bug where polling for external events could be - delayed for a very long time if all active schedulers - were 100% loaded.

-

- Bug was introduced in erts-10.2 (OTP-21.2).

-

- Own Id: OTP-15538 Aux Id: ERIERL-229

-
-
-
- -
- -
Erts 10.2.2 - -
Fixed Bugs and Malfunctions - - -

Fixed a crash when dangling files were closed after - init:restart/0.

-

- Own Id: OTP-15495 Aux Id: ERL-821

-
- -

- A bug that could cause dirty schedulers to become - unresponsive has been fixed.

-

- Own Id: OTP-15509 Aux Id: PR-2027, PR-2093

-
-
-
- -
- -
Erts 10.2.1 - -
Fixed Bugs and Malfunctions - - -

- Fixed bug on big endian architectures when changing file - permissions or ownership with file:change_mode, - change_owner, change_group or - write_file_info. Bug exists since OTP-21.0.

-

- Own Id: OTP-15485

-
- -

- Fixed bug in atomics with option - {signed,false} when returned values are (1 bsl - 63) or larger. Could cause heap corruption leading to - VM crash or other unpleasant symptoms. Bug exists since - OTP-21.2 when module atomics was introduced.

-

- Own Id: OTP-15486 Aux Id: PR-2061

-
- -

- Fixed bug in operator band of two negative - operands causing erroneous result if the absolute value - of one of the operands have the lowest N*W bits as - zero and the other absolute value is not larger than - N*W bits. N is an integer of 1 or larger - and W is 32 or 64 depending on word size.

-

- Own Id: OTP-15487 Aux Id: ERL-804

-
-
-
- -
- -
Erts 10.2 - -
Fixed Bugs and Malfunctions - - -

- When a process was waiting for a TCP socket send - operation to complete, and another process closed the - socket during that send, the sending process could hang. - This bug has now been corrected.

-

- Own Id: OTP-12242 Aux Id: ERL-561

-
- -

- Document bit_size in match specifications and - allow it in ets:fun2ms.

-

- Own Id: OTP-15343 Aux Id: PR-1962

-
- -

- Fixed bug in ets:select_replace when called with a - fully bound key could cause a following call to - ets:next or ets:prev to crash the emulator - or return invalid result.

-

- Own Id: OTP-15346

-
- -

When a module has been purged from memory, any - literals belonging to that module will be copied to all - processes that hold references to them. The max heap size - limit would be ignored in the garbage collection - initiated when copying literals to a process. If the max - heap size was exceeded, the process would typically be - terminated in the following garbage collection. Corrected - to terminate the process directly if copying a literal - would exceed the max heap size.

-

- Own Id: OTP-15360

-
- -

- Fix compilation of run_erl on Solaris 11.4 and later.

-

- Own Id: OTP-15389

-
- -

Fixed a bug where lists:reverse/1-2 could use - far too many reductions. This bug was introduced in - OTP 21.1.

-

- Own Id: OTP-15436

-
- -

Fixed a bug where a dirty scheduler could stay awake - forever if a distribution entry was removed as part of a - dirty GC.

-

- Own Id: OTP-15446 Aux Id: PR-2024

-
- -

- Fix microstate accounting handing in various places. Most - importantly the GC states when the GC is run on a dirty - scheduler are now managed correctly.

-

- Own Id: OTP-15450 Aux Id: ERIERL-229

-
- -

- Fixed bug in file:sendfile when the send operation - failed. For sockets in active modes it could cause - emulator crash or a hanging call. For sockets with - {active,false} an unexpected {inet_reply, _, - _} message could be sent to the calling process. The - bug exists since OTP-21.0.

-

- Own Id: OTP-15461 Aux Id: ERL-784

-
- -

- The erts configure script has been updated to reject any - CFLAGS that does not have -O. This in order to - prevent the common mistake of forgetting to add - -O2 to custom CFLAGS.

-

- Own Id: OTP-15465

-
- -

- Fix reduction count in lists:member/2

-

- Own Id: OTP-15474 Aux Id: ERIERL-229

-
-
-
- - -
Improvements and New Features - - -

- New counters and atomics modules supplies - access to highly efficient operations on mutable fixed - word sized variables.

-

- Own Id: OTP-13468

-
- -

There is a new module persistent_term that - implements a term storage suitable for terms that are - frequently used but never or infrequently updated. - Lookups are done in constant time without copying the - terms.

-

- Own Id: OTP-14669 Aux Id: PR-1989

-
- -

- A function inet:getifaddrs/1 that takes a list - with a namespace option has been added, for platforms - that support that feature, for example Linux (only?).

-

- Own Id: OTP-15121 Aux Id: ERIERL-189, PR-1974

-
- -

Added the nopush option for TCP sockets, which - corresponds to TCP_NOPUSH on *BSD and - TCP_CORK on Linux.

-

This is also used internally in file:sendfile - to reduce latency on subsequent send operations.

-

- Own Id: OTP-15357 Aux Id: ERL-698

-
- -

List subtraction (The -- operator) will now - yield properly on large inputs.

-

- Own Id: OTP-15371

-
- -

- Optimize handling of send_delay for tcp sockes to better - work with the new pollthread implementation introduced in - OTP-21.

-

- Own Id: OTP-15471 Aux Id: ERIERL-229

-
- -

- Optimize driver_set_timer with a zero timeout to - short-circuit and not create any timer structure, but - instead schedule the timer immediately.

-

- Own Id: OTP-15472 Aux Id: ERIERL-229

-
- -

- Add erl_xcomp_code_model_small as a cross - configure variable in order to let the emulator be build - with the assumption that a small code model will be used - on the target machine.

-

- Own Id: OTP-15473 Aux Id: ERIERL-229

-
- -

- Add a new pollset that is made to handle sockets that use - {active, true} or {active, N}. The new - pollset will not be polled by a pollthread, but instead - polled by a normal scheduler.

-

- This change was made because of the overhead associated - with constantly having to re-apply the ONESHOT mechanism - on fds that all input events were interesting.

-

- The new pollset is only active on platforms that support - concurrent kernel poll updates, i.e. Linux and BSD.

-

- Own Id: OTP-15475 Aux Id: ERIERL-229

-
- -

- Fix bug where emulator would segfault if a literal - message was sent when sequence tracing was enabled.

-

- Own Id: OTP-15478 Aux Id: ERL-741

-
-
-
- -
- -
Erts 10.1.3 - -
Improvements and New Features - - -

Added an optional ./configure flag to compile - the emulator with spectre mitigation: - --with-spectre-mitigation

-

Note that this requires a recent version of GCC with - support for spectre mitigation and the - --mindirect-branch=thunk flag, such as - 8.1.

-

- Own Id: OTP-15430 Aux Id: ERIERL-237

-
-
-
- -
- -
Erts 10.1.2 - -
Fixed Bugs and Malfunctions - - -

Fixed a rare bug where files could be closed on a - normal instead of an IO scheduler, resulting in system - instability if the operation blocked.

-

- Own Id: OTP-15421

-
-
-
- -
- -
Erts 10.1.1 - -
Fixed Bugs and Malfunctions - - -

- A bug where the socket option 'pktoptions' caused a read - of uninitialized memory has been fixed. Would cause - malfunction on FreeBSD.

-

- Own Id: OTP-14297 Aux Id: OTP-15141

-
- -

Fixed a memory leak on errors when reading files.

-

- Own Id: OTP-15318

-
- -

File access through UNC paths works again on Windows. - This regression was introduced in OTP 21.

-

- Own Id: OTP-15333 Aux Id: ERL-737

-
-
-
- -
- -
Erts 10.1 - -
Fixed Bugs and Malfunctions - - -

- Fix the seq_trace token to not be cleared when a process - receives messages sent by erts. Some examples of when - this could happen is all port BIFs, i.e. - open_port, port_command etc etc.

-

- Fix so that messages sent by nifs can be traced using - normal and seq_trace tracing.

-

- Own Id: OTP-15038 Aux Id: ERL-602

-
- -

- Fixed specs and documentation for process_info - item monitored_by to include port identifiers and - nif resources as possible types.

-

- Own Id: OTP-15180 Aux Id: ERL-648

-
- -

- Fix bug in generation of erl_crash.dump, which could - cause VM to crash.

-

- Bug exist since erts-9.2 (OTP-20.2).

-

- Own Id: OTP-15181

-
- -

- Fix bug where ctrl-break or ctrl-c would not trigger the - break mode properly on Windows. This bug was introduced - in erts-10.0 (OTP-21).

-

- Own Id: OTP-15205

-
- -

- Fix a performance bug for reception of UDP packages, - where a memory buffer would be reallocated when it should - not have been.

-

- Introduce a limit on the maximum automatic increase of - the UDP user-space buffer to the theoretical max of the - network PATH, i.e. 65535.

-

- Own Id: OTP-15206

-
- -

- Fix alignment of erts allocator state internally in erts. - With the improper alignment the emulator would refuse to - start when compiled with clang on 32-bit systems.

-

- Own Id: OTP-15208 Aux Id: PR-1897 ERL-677

-
- -

- Fix bug where too many concurrent calls to - erlang:open_port({spawn,"cmd"},...) would result - in the emulator terminating with the reason "Failed to - write to erl_child_setup: ". After this fix the - open_port call will throw an emfile - exception instead.

-

- Own Id: OTP-15210

-
- -

- Upgraded the ERTS internal PCRE library from version 8.41 - to version 8.42. See http://pcre.org/original/changelog.txt - for information about changes made to PCRE. This library - implements major parts of the re regular - expressions module.

-

- Own Id: OTP-15217

-
- -

- Fix open_port({fd,X,Y}, ...) to release the file - descriptors from the pollset when closing the port. - Without this fix the same file descriptor number could - not be reused when doing multiple open_port and - port_close sequences.

-

- Own Id: OTP-15236 Aux Id: ERL-692

-
- -

- Fixed bug in float_to_list/2 and - float_to_binary/2 with options - [{decimals,0},compact] causing totally wrong - results. Bug exists since OTP-21.0.

-

- Own Id: OTP-15276 Aux Id: PR-1920

-
- -

- Fixed bug in erlang:memory causing ets to - report too much. This small false memory leak (16 bytes - each time) can only happen when a specific race condition - occurs between scheduler threads on a table with option - write_concurrency.

-

- Own Id: OTP-15278

-
- -

- Minor configure test fixes

-

- Own Id: OTP-15282

-
- -

- Improved robustness of distribution connection setup. In - OTP-21.0 a truly asynchronous connection setup was - introduced. This is further improvement on that work to - make the emulator more robust and also be able to recover - in cases when involved Erlang processes misbehave.

-

- Own Id: OTP-15297 Aux Id: OTP-15279, OTP-15280

-
-
-
- - -
Improvements and New Features - - -

- The socket options recvtos, recvttl, - recvtclass and pktoptions have been - implemented in the socket modules. See the documentation - for the gen_tcp, gen_udp and inet - modules. Note that support for these in the runtime - system is platform dependent. Especially for - pktoptions which is very Linux specific and - obsoleted by the RFCs that defined it.

-

- Own Id: OTP-15145 Aux Id: ERIERL-187

-
-
-
- -
- -
Erts 10.0.8 - -
Fixed Bugs and Malfunctions - - -

- As of ERTS version 10.0 (OTP 21.0) the - erl_child_setup program, which creates port - programs, ignores TERM signals. This setting was - unintentionally inherited by port programs. Handling of - TERM signals in port programs has now been - restored to the default behavior. That is, terminate the - process.

-

- Own Id: OTP-15289 Aux Id: ERIERL-235, OTP-14943, ERL-576

-
- -

- The fix made for OTP-15279 in erts-10.07 (OTP-21.0.8) was - not complete. It could cause a new connection attempt to - be incorrectly aborted in certain cases. This fix will - amend that flaw.

-

- Own Id: OTP-15296 Aux Id: OTP-15279, ERIERL-226

-
-
-
- -
- -
Erts 10.0.7 - -
Fixed Bugs and Malfunctions - - -

- A process could get stuck in an infinite rescheduling - loop between normal and dirty schedulers. This bug was - introduced in ERTS version 10.0.

-

- Thanks to Maxim Fedorov for finding and fixing this - issue.

-

- Own Id: OTP-15275 Aux Id: PR-1943

-
- -

- Garbage collection of a distribution entry could cause an - emulator crash if net_kernel had not brought - previous connection attempts on it down properly.

-

- Own Id: OTP-15279 Aux Id: ERIERL-226

-
-
-
- -
- -
Erts 10.0.6 - -
Fixed Bugs and Malfunctions - - -

- A race between termination of a process and resume of the - same process via erlang:resume_process/1 could - cause the VM to crash. This bug was introduced in erts - version 10.0 (OTP 21.0).

-

- Own Id: OTP-15237

-
- -

- When tracing on running, in trace events - could be lost when a process was rescheduled between a - dirty and a normal scheduler.

-

- Own Id: OTP-15269 Aux Id: ERL-713

-
-
-
- -
- -
Erts 10.0.5 - -
Fixed Bugs and Malfunctions - - -

- Fixed a bug which caused an emulator crash when - enif_send() was called by a NIF that executed on a - dirty scheduler. The bug was either triggered when the - NIF called enif_send() without a message - environment, or when the process executing the NIF was - send traced.

-

- Own Id: OTP-15223

-
- -

- Fixed a bug causing some Erlang references to be - inconsistently ordered. This could for example cause - failure to look up certain elements with references as - keys in search data structures. This bug was introduced - in R13B02.

-

- Thanks to Simon Cornish for finding the bug and supplying - a fix.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-15225

-
-
-
- -
- -
Erts 10.0.4 - -
Fixed Bugs and Malfunctions - - -

Fixed a bug that prevented the noshell option - from working correctly on Mac OS X and BSD.

-

- Own Id: OTP-15169

-
- -

Fixed a crash when matching directly against a literal - map using a single key that had been saved on the - stack.

-

- Own Id: OTP-15184

-
- -

Fix node crash when passing a bad time option to - file:read_file_info/2.

-

- Own Id: OTP-15196

-
-
-
- -
- -
Erts 10.0.3 - -
Fixed Bugs and Malfunctions - - -

Fixed a scheduler bug that caused normal schedulers to - run dirty code.

-

- Own Id: OTP-15154

-
- -

- Fixed a bug in erlang:trace_info/2 which caused - the emulator to crash when a bad argument was passed. The - bug was introduced in ERTS version 10.0.

-

- Own Id: OTP-15183 Aux Id: ERL-670

-
-
-
- -
- -
Erts 10.0.2 - -
Fixed Bugs and Malfunctions - - -

Fixed a rare bug that could cause processes to be - scheduled after they had been freed.

-

- Own Id: OTP-15067 Aux Id: ERL-573

-
- -

Fixed a race condition in the inet driver that could - cause receive to hang when the emulator was compiled with - gcc 8.

-

- Own Id: OTP-15158 Aux Id: ERL-654

-
-
-
- -
- -
Erts 10.0.1 - -
Fixed Bugs and Malfunctions - - -

The keys used in os:getenv and os:putenv - are case-insensitive again on Windows.

-

- Own Id: OTP-15147 Aux Id: ERL-644

-
-
-
- -
- -
Erts 10.0 - -
Fixed Bugs and Malfunctions - - -

- The type specifications for file:posix/0 and - inet:posix/0 have been updated according to which - errors file and socket operations should be able to - return.

-

- Own Id: OTP-14019 Aux Id: ERL-550

-
- -

- Fix error printout from run_erl and a bug that could - cause unintended fds to be leaked into the started - program.

-

- Own Id: OTP-14537 Aux Id: PR1529

-
- -

File operations used to accept filenames - containing null characters (integer value zero). This - caused the name to be truncated and in some cases - arguments to primitive operations to be mixed up. - Filenames containing null characters inside the filename - are now rejected and will cause primitive file - operations to fail.

Also environment variable - operations used to accept names and - values of - environment variables containing null characters (integer - value zero). This caused operations to silently produce - erroneous results. Environment variable names and values - containing null characters inside the name or value are - now rejected and will cause environment variable - operations to fail.

Primitive environment - variable operations also used to accept the $= - character in environment variable names causing various - problems. $= characters in environment variable - names are now also rejected.

Also - os:cmd/1 now - reject null characters inside its command. -

erlang:open_port/2 - will also reject null characters inside the port name - from now on.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14543 Aux Id: ERL-370

-
- -

- Fix bugs related to the bookkeeping of microstate - accounting states.

-

- Own Id: OTP-14652

-
- -

os:putenv and os:getenv no longer access - the process environment directly and instead work on a - thread-safe emulation. The only observable difference is - that it's not kept in sync with libc - getenv(3) / putenv(3), so those who relied - on that behavior in drivers or NIFs will need to add - manual synchronization.

On Windows this means that - you can no longer resolve DLL dependencies by modifying - the PATH just before loading the driver/NIF. To - make this less of a problem, the emulator now adds the - target DLL's folder to the DLL search path.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14666

-
- -

Corrected erlang:is_builtin(erlang, M, F) to - return true for apply/2 and - yield/0.

-

- Own Id: OTP-14713 Aux Id: ERL-500

-
- -

Fixed a bug where the PATH environment variable wasn't - updated correctly on a release downgrade, effectively - keeping the PATH of the new release.

-

- Own Id: OTP-14719

-
- -

A receive optimization that avoids scanning the entire - message queue when receiving a message containing a - freshly created reference could in rare circumstances - (involving recursive calls to the functions that does the - receive) cause the receive to hang. This has been - corrected.

-

- Own Id: OTP-14782 Aux Id: ERL-511

-
- -

- Fix building of Erlang/OTP on platforms which have small - data area with short addressing. For example the - PowerPC/RTEMS platform.

-

- Own Id: OTP-14909 Aux Id: PR-1692

-
- -

Fixed a crash when enif_make_binary is called - with a binary produced by enif_inspect_binary in a - different environment.

-

- Own Id: OTP-14931

-
- -

Fixed a crash when enif_make_binary is called - more than once with a binary that had previously been - added to an enif_ioq.

-

- Own Id: OTP-14932

-
- -

- The erl_child_setup program now ignores SIGTERM signals.

-

- Own Id: OTP-14943 Aux Id: ERL-576

-
- -

- Force 64-bit alignment on pre-allocators on architectures - which needs it.

-

- Own Id: OTP-14977

-
- -

- Fixed a bug where dirty scheduler picked up non-dirty - work.

-

- Own Id: OTP-14978

-
- -

- Calls to gen_tcp:send/2 on closed sockets now - returns {error, closed} instead of - {error,enotconn}.

-

- Own Id: OTP-15001

-
- -

- erlang:monotonic_time/1 failed with badarg - when passing the perf_counter time unit as - argument.

-

- Own Id: OTP-15008

-
- -

- Fix bug where rapid init:restart() calls would - sometimes crash because a code load request leaked in - between the restarts.

-

- Own Id: OTP-15013

-
- -

- Improve float_to_list(F, [{decimals,D}]) to closer - conform with io_lib:format("~.*f", [D,F]).

-

- There are however, still cases when float_to_list - does not produce the exact same result as - io_lib:format, especially for large values - F and/or many decimals D.

-

- Own Id: OTP-15015 Aux Id: OTP-14890

-
- -

Fixed a deadlock that would occur on certain - allocators when a reallocation failed with +ramv - enabled.

-

- Own Id: OTP-15024

-
- -

- Fix bug that made it impossible to use an erl_tracer as - the seq_trace trace receiver.

-

- Own Id: OTP-15029

-
- -

- Fix bug where a large (> 1 GB) emulator generated error - logger message would cause the emulator to crash.

-

- Own Id: OTP-15032

-
- -

The emulator will no longer crash when reading the - file information of an ordinary file that has an NTFS - reparse point, such as files stored in a OneDrive-mapped - folder.

-

- Own Id: OTP-15062 Aux Id: ERL-615

-
- -

- Fixed bug in enif_binary_to_term which could cause - memory corruption for immediate terms (atoms, small - integers, pids, ports, empty lists).

-

- Own Id: OTP-15080

-
- -

- Fixed bug in erlang:system_profile/2 that could - cause superfluous {profile,_,active,_,_} messages - for terminating processes.

-

- Own Id: OTP-15085

-
- -

- On OSs with per thread CPU time support, change - cpu_timestamp in erlang:trace/3 to use - it instead of per process CPU time. This makes this - option useable on such OSs when running multiple - schedulers.

-

- Own Id: OTP-15090

-
- -

- Fix segfault in abort_signal_task which could happen if a - port terminated while there were outstanding port tasks - that were not signals, for example a - ready_input/ready_output event.

-

- Own Id: OTP-15108 Aux Id: ERL-621

-
- -

- Fixed bug in ets that could cause VM crash if - process A terminates after fixating a table and process B - deletes the table at "the same time". The table fixation - could be done with ets:safe_fixtable or if process - A terminates in the middle of a long running - select or match call.

-

- Own Id: OTP-15109

-
- -

Owner and group changes through - file:write_file_info, file:change_owner, - and file:change_group will no longer report - success on permission errors.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-15118

-
- -

- Fix a bug error reporting from escripts on windows where - the error message would get garbled.

-

- Own Id: OTP-15119 Aux Id: PR-1826

-
- -

- Fix segfault when a process is interally re-scheduled - while being traced for in out events. This bug was - introduced in erts-8.0 (OTP-19.0).

-

- Own Id: OTP-15125

-
-
-
- - -
Improvements and New Features - - -

It is now possible to open device files and FIFOs with - file:open/2.

-

- Own Id: OTP-11462

-
- -

- The erlang:system_flag(scheduler_wall_time,Bool) - call is now reference counted and will be turned off if - the (last) process that started the performance - statistics dies. Thus it is no longer possible to start - the statistics with rpc:call(Node, erlang, - system_flag, [scheduler_wall_time, true]) since it - will be turned off directly afterwards when the rpc - process dies.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-11694

-
- -

A new logging API is added to Erlang/OTP, see the - logger(3) manual - page, and section Logging in the - Kernel User's Guide.

-

Calls to error_logger are automatically - redirected to the new API, and legacy error logger event - handlers can still be used. It is, however, recommended - to use the Logger API directly when writing new code.

-

Notice the following potential incompatibilities:

-

Kernel configuration parameters - error_logger still works, but is overruled if the - default handler's output destination is configured with - Kernel configuration parameter logger.

In - general, parameters for configuring error logger are - overwritten by new parameters for configuring - Logger.

The concept of SASL error - logging is deprecated, meaning that by default the SASL - application does not affect which log events are - logged.

By default, supervisor reports and crash - reports are logged by the default Logger handler started - by Kernel, and end up at the same destination (terminal - or file) as other standard log event from Erlang/OTP.

-

Progress reports are not logged by default, but can be - enabled by setting the primary log level to info, for - example with the Kernel configuration parameter - logger_level.

To obtain backwards - compatibility with the SASL error logging functionality - from earlier releases, set Kernel configuration parameter - logger_sasl_compatible to true. This - prevents the default Logger handler from logging any - supervisor-, crash-, or progress reports. Instead, SASL - adds a separate Logger handler during application start, - which takes care of these log events. The SASL - configuration parameters sasl_error_logger and - sasl_errlog_type specify the destination (terminal - or file) and severity level to log for these - events.

-

- Since Logger is new in Erlang/OTP 21.0, we do reserve the - right to introduce changes to the Logger API and - functionality in patches following this release. These - changes might or might not be backwards compatible with - the initial version.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-13295

-
- -

- gen_sctp:connect_init/4 or rather connect in - inet_drv.c for SCTP has been fixed to not check - the write file descriptor for writeability after a - connect, since for SCTP (SOCK_SEQPACKET) that property - does not seem to be any kind of indicator for when a - connect has finished. This fixes connects that the OS - returned as "in progress" that was misinterpreted by - gen_sctp:connect_init as failed.

-

- Own Id: OTP-13760 Aux Id: PR-1592

-
- -

The file driver has been rewritten as a NIF, - decreasing the latency of file operations. Notable - incompatibilities are:

The - use_threads option for file:sendfile/5 no - longer has any effect; we either use non-blocking - sendfile(2) or fall back to file:read + - gen_tcp:send.

The - file-specific DTrace probes have been removed. The same - effect can be achieved with normal tracing together with - the nif__entry/nif__return probes to track - scheduling.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14256

-
- -

The I/O polling functionality of erts has been - re-written to better make use of the OSs polling - mechanisms. This change means that erts will now always - prefer to use a kernel-polling mechanism if possible. - Also all of the I/O polling has been moved to dedicated - threads instead of being placed in the scheduler - loops.

As a result of this, the erl options - +K and +secio have been removed. It is - still possible to disable kernel-poll, but it has to be - done at compile time through the configure option - --disable-kernel-poll.

The new erl - options +IOt - and +IOp can - be used to change how many IO poll threads and poll sets - that erts should use. See their respective documentation - for more details.

-

- Own Id: OTP-14346

-
- -

Truly asynchronous auto-connect. Earlier, when - erlang:send was aimed toward an unconnected node, - the function would not return until the connection setup - had completed (or failed). Now the function returns - directly after the message has been enqueued and the - connection setup started.

-

The same applies to all distributed operations that - may trigger auto-connect, i.e. '!', send, - link, monitor, monitor_node, - exit/2 and group_leader.

-

The interface for all these functions are unchanged as - they do not return connection failures. The only - exception is erlang:monitor where a possible - incompatibility is introduced: An attempt to monitor - a process on a primitive node (such as erl_interface or - jinterface), where remote process monitoring is not - implemented, will no longer fail with badarg - exception. Instead a monitor will be created, but it will - only supervise the connection to the node.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14370

-
- -

Changed the default behaviour of .erlang - loading: .erlang is no longer loaded from the - current directory. c:erlangrc(PathList) can be - used to search and load an .erlang file from user - specified directories.

escript, - erlc, dialyzer and typer no longer - load an .erlang at all.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14439

-
- -

- New functionality for implementation of alternative - carriers for the Erlang distribution has been introduced. - This mainly consists of support for usage of distribution - controller processes (previously only ports could be used - as distribution controllers). For more information see - ERTS - User's Guide ➜ How to implement an Alternative Carrier - for the Erlang Distribution ➜ Distribution - Module.

-

- Own Id: OTP-14459

-
- -

- Add support for the lcc compiler and in extension the - Elbrus 2000 platform.

-

- Own Id: OTP-14492

-
- -

Support for "tuple calls" have been removed from the - run-time system. Tuple calls was an undocumented and - unsupported feature which allowed the module argument for - an apply operation to be a tuple: Var = dict:new(), - Var:size(). This "feature" frequently caused - confusion, especially when such call failed. The - stacktrace would point out functions that don't exist in - the source code.

-

For legacy code that need to use parameterized modules - or tuple calls for some other reason, there is a new - compiler option called tuple_calls. When this - option is given, the compiler will generate extra code - that emulates the old behavior for calls where the module - is a variable.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14497

-
- -

Creation of small maps with literal keys has been - optimized to be faster and potentially use less memory. - The keys are combined into a literal key tuple which is - put into the literal pool. The key tuple can be shared - between many instances of maps having the same keys.

-

- Own Id: OTP-14502

-
- -

- When an exception is thrown, include the arguments of the - call in the stacktrace for BIFs band, bor, - bsl, bsr, bxor, div, - rem and the operators +, -, * - and /.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14508

-
- -

- The non-smp emulators have been removed. This means that - the configure options --disable-threads and - --enable-plain-emulator have been removed and - configure will now refuse to build Erlang/OTP on - platforms without thread support.

-

- In order to achieve a similar setup as the non-smp - emulator, it is possible to start Erlang/OTP with the - +S 1 option.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14518

-
- -

Modules that use floating point constants compiled - with R15 or earlier will need to be re-compiled before - they can be loaded.

-

- Own Id: OTP-14575

-
- -

- Implementation of true asynchronous signaling between - processes in order to improve scalability. Signals - affected include exit, monitor, demonitor, monitor - triggered, link, unlink, and group leader.

-

- Own Id: OTP-14589

-
- -

- Added a PGO (profile guided optimization) pass to the - build step of erts. This can be disabled by passing - --disable-pgo to configure.

-

- Own Id: OTP-14604

-
- -

- Improved the performance of binary:split and - binary:match.

-

- Own Id: OTP-14610 Aux Id: PR-1480

-
- -

- It is not longer possible to disable dirty schedulers - when building erlang.

-

- Own Id: OTP-14613

-
- -

Loaded BEAM code in a 64-bit system requires less - memory because of better packing of operands for - instructions.

-

These memory savings were achieved by major - improvements to the beam_makeops scripts used when - building the run time system and BEAM compiler. There is - also new for documentation for beam_makeops that - describes how new BEAM instructions and loader - transformations can be implemented. The documentation is - found in here in a source directory or git repository: - erts/emulator/internal_doc/beam_makeops.md. An online - version can be found here: - https://github.com/erlang/otp/blob/master/erts/emulator/internal_doc/beam_makeops.md

-

- Own Id: OTP-14626

-
- -

file:read_file has been changed to read the - content of files that report a size of 0 even when data - can be read from them. An example of such a file is - /proc/cpuinfo on Linux.

-

- Own Id: OTP-14637 Aux Id: ERL-327 PR-1524

-
- -

- It is no longer possible to disable the temp_alloc - allocator. Disabling it caused serious performance - degradations and was never what was wanted.

-

- Own Id: OTP-14651

-
- -

The reduction cost of sending messages is now - constant. It will no longer scale according to the length - of the receiving process' message queue.

-

- Own Id: OTP-14667

-
- -

- Improved loading of modules with -on_load - directive, to no longer block all schedulers when the - load operation is completed.

-

- Own Id: OTP-14680

-
- -

- On platforms with real-time signals available, SIGRTMIN+1 - is now used as the internal scheduler suspend signal - instead of SIGUSR2.

-

- Own Id: OTP-14682

-
- -

When the value returned from a 'catch' - expression is ignored, no stacktrace will be built if an - exception is caught. That will save time and produce less - garbage. There are also some minor optimizations of - 'try/catch' both in the compiler and - run-time system.

-

- Own Id: OTP-14683

-
- -

The guarantees and non-guarantees of - erlang:get_stacktrace/0 are now documented.

-

- Own Id: OTP-14687

-
- -

There is a new syntax in 'try/catch' for - retrieving the stacktrace without calling - 'erlang:get_stacktrace/0'. See the reference - manual for a description of the new syntax. The - 'erlang:get_stacktrace/0' BIF is now - deprecated.

-

- Own Id: OTP-14692

-
- -

- New 'used' option for binary_to_term/2 that will - also return number of bytes actually read from the - binary. This enables easy access to any extra data in the - binary located directly after the returned term.

-

- Own Id: OTP-14780

-
- -

- Added more statistics for - erlang:system_info({allocator,A}) in the - mbcs_pool section.

-

- Own Id: OTP-14795 Aux Id: ERL-88

-
- -

Added enif_ioq_peek_head to retrieve Erlang - terms from NIF IO queues without having to resort to - copying.

-

- Own Id: OTP-14797

-
- -

There is a new option 'makedep_side_effect' for - the compiler and -MMD for 'erlc' that - generates dependencies and continues to compile as - normal.

-

- Own Id: OTP-14830

-
- -

Added ets:whereis/1 for retrieving the table - identifier of a named table.

-

- Own Id: OTP-14884

-
- -

seq_trace labels may now be any erlang - term.

-

- Own Id: OTP-14899

-
- -

- Optimized the common case of monitor followed by - send to the same local process. The monitor signal - is now delayed in order to be piggybacked with the sent - message and thereby only get one lock operation on the - message queue of the receiver. A delayed monitor signal - is flushed if no send has been done at the latest - when the process is scheduled out.

-

- Own Id: OTP-14901

-
- -

- Make hipe compiled code work on x86_64 (amd64) with OS - security feature PIE, where executable code can be loaded - into a random location. Old behavior, if hipe was - enabled, was to disable PIE build options for the VM.

-

- Own Id: OTP-14903

-
- -

The number of driver async threads will now default to - 1 as the standard drivers do not use them anymore. Users - that changed this value to tweak the file driver should - replace +A with +SDio since it now uses - dirty IO schedulers instead of async threads.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14928

-
- -

- Optimize == and /= for binaries with - different sizes to be constant in time instead of - proportional to the size of their common prefix.

-

- Own Id: OTP-14934 Aux Id: PR-1708

-
- -

- Refactorings making some internal process flags available - for other usage.

-

- Own Id: OTP-14948

-
- -

- Removed need for HiPE to allocate native executable - memory in low 2GB address space on x86_64. Command line - option +MXscs is thereby obsolete and ignored.

-

- Own Id: OTP-14951

-
- -

Added enif_make_map_from_arrays for creating a - populated map, analogous to - enif_make_list_from_array.

-

- Own Id: OTP-14954

-
- -

Added configuration switches for busy-wait and wake up - thresholds for dirty schedulers, and changing these - settings for normal schedulers will no longer affect - dirty schedulers.

Refer to the documentation for - details. The new switches are +sbwtdcpu, +sbwtdio, +swtdcpu, and +swtdio.

The - default busy wait threshold for dirty scheduler threads - has also been lowered to short.

-

- Own Id: OTP-14959

-
- -

- The list of "taints" now also includes dynamic loaded - drivers in addition to NIF libraries. Statically linked - drivers and NIF libraries that are part of erts are not - included. The "taints" are returned by - system_info(taints) and printed in the header of - erl_crash.dump files.

-

- Own Id: OTP-14960

-
- -

Added instrument:allocations and - instrument:carriers for retrieving information - about memory utilization and fragmentation.

-

The old instrument interface has been removed, - as have the related options +Mim and - +Mis.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14961

-
- -

The process suspend functionality used by the erlang:suspend_process/2 - BIF has been reimplemented using the newly introduced - true asynchronous signaling between processes. This - mainly to reduce memory usage in the process control - block of all processes, but also in order to simplify the - implementation.

You can easily create - deadlocks if processes suspends each other (directly or - in circles). In ERTS versions prior to ERTS version 10.0, - the runtime system prevented such deadlocks, but this - prevention has now been removed due to performance - reasons.

Other ERTS internal - functionality that used the previous process suspend - functionality have also been reimplemented to use - asynchronous signaling instead.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14964 Aux Id: OTP-14589

-
- -

Added the nifs option to - ?MODULE:module_info/1 for listing a module's - installed NIF functions.

-

- Own Id: OTP-14965

-
- -

- New implementation of erlang:process_info/[1,2].

-

- In the general case when inspecting another process, the - new implementation sends an asynchronous process-info - request signal to the other process and waits for the - result instead of locking the other process and reading - the result directly. In some special cases where no - conflicts occur, signal order wont be violated, and the - amount of data requested is guaranteed to be small, the - inspected process may be inspected directly.

-

- Appropriate amount of reductions are now also bumped when - inspecting a process.

-

- Own Id: OTP-14966

-
- -

- Removed process start time from crash dump in order to - save memory in process control block.

-

- Own Id: OTP-14975 Aux Id: PR-1597

-
- -

- Optimize erlang:put/2 when updating existing key - with a new immediate value (atom, small integer, pid, - port).

-

- Own Id: OTP-14976

-
- -

- erlang:process_info/1 has been changed to no - longer include messages by default. Instead - erlang:process_info/2 should be used.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-14986 Aux Id: PR-1745

-
- -

- New erlang:system_info(ets_count) to get total - number of ets tables existing at the local node.

-

- Own Id: OTP-14987

-
- -

- New NIF functions: enif_mutex_name, - enif_cond_name, enif_rwlock_name, - enif_thread_name, enif_vfprintf, - enif_vsnprintf.

-

- Own Id: OTP-14994

-
- -

When erlang:system_flag(backtrace_depth, 0) has - been called, all exceptions will now contain the entry - for one function (despite the zero). It used to - be that a hand-made stack backtrace passed to - erlang:raise/3 would be be truncated to an empty - list.

-

- Own Id: OTP-15026

-
- -

- Fixed bug for named ets tables which could cause - unexpected results from matchspec iteration functions - (ets:select* and ets:match*) if the table - was deleted and recreated with the same name during the - iteration. The iteration could incorrectly continue - through the recreated table. The expected correct - behavior is now for the iteration call to fail with a - badarg exception if the table is deleted before - the iteration has completed.

-

- Own Id: OTP-15031

-
- -

Two new guards BIFs operating on maps have been added: - map_get/2 and is_map_key/2. They do the - same as maps:get/2 and maps:is_key/2, - respectively, except that they are allowed to be used in - guards.

-

- Own Id: OTP-15037 Aux Id: PR-1784, PR-1802

-
- -

- Release run-queue lock while cleaning up terminated dirty - process.

-

- Own Id: OTP-15081

-
- -

The callback module passed as -epmd_module to - erl has been expanded to be able to do name and port - resolving.

Documentation has also been added in - the erl_epmd - reference manual and ERTS User's Guide How to Implement an Alternative - Service Discovery for Erlang Distribution.

-

- Own Id: OTP-15086 Aux Id: PR-1694

-
-
-
- -
-
Erts 9.3.3.9
Improvements and New Features -- cgit v1.2.3