- Changes for 24.0.5:
* kernel: For gen_tcp:connect/3,4 it is possible to specify a
specific source port, which should be enough to bind the socket
to an address with that port before connecting. Unfortunately
that feature was lost in OTP-17216 that made it mandatory to
specify the source address to get an address binding, and
ignored a specified source port if no source address was
specified. That bug has now been corrected.
- Changes for 24.0.4:
* stdlib: Fix a bug that could cause a crash when formatting
tuples using the control sequences p or P and limiting the
output with the option chars_limit.
* ssl: Handle cross-signed root certificates when old root
expired as reported in GH-4877.
* ssl: The signature selection algorithm has been changed to also
verify if the client supports signatures using the elliptic
curve of the server's public/private key pair. This change
fixes#4958.
* ssl: Slight optimization of certificate decoding.
* public_key: Handle cross-signed root certificates when old root
expired as reported in GH-4877.
* common_test: An incoming NETCONF notification received before a
call to ct_netconfc:create_subscription/* caused the connection
process to fail with badarg. Unexpected notifications are now
logged in the same way as other unexpected messages.
* common_test: Add 'receiver' option to ct_netconfc To allow a
destination for incoming NETCONF notifications to be specified
at sessions creation. Previously, a caller of
create_subscription/* became the destination, but RFC 5277
create-subscription is no longer the only way in which NETCONF
OBS-URL: https://build.opensuse.org/request/show/910175
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=115
- Fix more directories not owned by the package (boo#1187546)
- Changes for 24.0.3:
* erts: A call to erlang:cancel_timer(_, [{info, false}]) could
cause the calling process to block forever in the call. Note
that only the synchronous version of the call (that is, the
async option is false) in combination with the info option set
to false was effected by this bug.
* erts: Microstate accounting (msacc) and os:perf_counter()
unintentionally used system time instead of monotonic time for
time measurements on a lot of systems. These systems were all
non x86/x86_64 systems or x86/x86_64 systems without a reliable
and constant rdtsc instruction. The lock counting (lcnt) built
runtime system also unintentionally used system time instead of
monotonic time for time measurements on all systems.
* erts: Simultaneous calls to
erlang:system_flag(schedulers_online, _) could cause callers to
end up in a suspended state forever.
* dialyzer: Do not expose line number 0 in messages if there are
other locations to use.
* dialyzer: In rare circumstances, Dialyzer could crash analyzing
code with a list comprehension whose value was ignored. (Thanks
to Ulf Wiger for reporting this bug.)
* ssh: Filter out sensitive data (passwords etc) from progress
reports and supervisor reports.
* inets: Improved user input handling in inets/mod_esi preventing
unnecessary atom creation.
* compiler: A compiler optimization pass could crash when given
odd but legal code using throw/1.
- Changes for 24.0.2:
* kernel: Fix a race condition in Global.
* kernel: After a node restart with init:restart/0,1, the module
socket was not usable because supporting tables had been
cleared and not re-initialized. This has now been fixed.
Handling of the "." domain as a search domain was incorrect and
caused a crash in the DNS resolver inet_res, which has now been
fixed.
* kernel: Handling of combinations of the fd option and binding
to an address has been corrected, especially for the local
address family.
* kernel: Bug fixes and code cleanup for the new socket
implementation, such as: Assertions on the result of
demonitoring has been added in the NIF code, where appropriate.
Internal state handling for socket close in the NIF code has
been reviewed. Looping over close() for EINTR in the NIF code
has been removed, since it is strongly discouraged on Linux and
Posix is not clear about if it is allowed. The inet_backend
temporary socket option for legacy gen_tcp sockets has been
documented. The return value from net:getaddrinfo/2 has been
corrected: the protocol field is now an atom(), instead of,
incorrectly, list(atom()). The documentation has also been
corrected about this return type. Deferred close of a
socket:sendfile/* file was broken and has been corrected. Some
debug code, not enabled by default, in the socket NIF has been
corrected to not accidentally core dump for debug printouts of
more or less innocent events.
* stdlib: Fix a bug that could cause a loop when formatting terms
using the control sequences p or P and limiting the output with
the option chars_limit.
* erts: Not yet handled alias-message signals in the signal queue
at the time when a garbage collection was performed could cause
a memory corruption which in turn could result in a crash of
the runtime system. This bug was introduced in OTP 24.0.
* erts: Fixed bug when using external pids/ports in keys of big
maps (> 32). Could cause runtime crash. Bug exists since OTP
24.0.
* erts: After a node restart with init:restart/0,1, the module
socket was not usable because supporting tables had been
cleared and not re-initialized. This has now been fixed.
Handling of the "." domain as a search domain was incorrect and
caused a crash in the DNS resolver inet_res, which has now been
fixed.
* erts: A call to port_command() could cause a scheduler to end
up in an eternal loop if the port was busy and the calling
process had incoming signals at the time of the call. This bug
was introduced in OTP 23.3.2 (ERTS version 11.2.1), OTP
22.3.4.18 (ERTS version 10.7.2.10), and OTP 21.3.8.23 (ERTS
version 10.3.5.18).
* erts: Bug fixes and code cleanup for the new socket
implementation, such as: Assertions on the result of
demonitoring has been added in the NIF code, where appropriate.
Internal state handling for socket close in the NIF code has
been reviewed. Looping over close() for EINTR in the NIF code
has been removed, since it is strongly discouraged on Linux and
Posix is not clear about if it is allowed. The inet_backend
temporary socket option for legacy gen_tcp sockets has been
documented. The return value from net:getaddrinfo/2 has been
corrected: the protocol field is now an atom(), instead of,
incorrectly, list(atom()). The documentation has also been
corrected about this return type. Deferred close of a
socket:sendfile/* file was broken and has been corrected. Some
debug code, not enabled by default, in the socket NIF has been
corrected to not accidentally core dump for debug printouts of
more or less innocent events.
* erts: Dirty execution of a process in combination with an
unlink signal from a port to the process could cause the signal
queue of the process to enter into an inconsistent state. The
result of the inconsistency typically caused a crash of the
runtime system. This bug was introduced in OTP 23.3 (ERTS
version 11.2).
* erl_docgen: Fix links generated in specs to types in other
applications to point to the correct place. This bug was
introduced in Erlang/OTP 24.0.
* ssl: Fix cache invalidation problem for CA certs provided by
the cacertfile option.
* ssh: Avoid an extra blank line in the ssh known_hosts file
* compiler: Fixed a bug that could cause after blocks to be
ignored when erlang:raise/3 was used in a catch block.
* compiler: Fixed a bug in the validation pass that could cause
it to reject valid code.
* crypto: EC keys are now zero-padded to the expected length if
needed.
OBS-URL: https://build.opensuse.org/request/show/907952
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=114
- Changes for 24.0.1:
* erl_interface: Commit of generated configure script.
* wx: Fix build problems when wxWidgets are built with -enable-
std.
* wx: Commit of generated configure script.
* crypto: Removed a risk for coredump.
* crypto: Fixed and documented the DED_LDFLAGS_CONFTEST
configuration variable in $ERL_TOP/HOWTO/INSTALL.md.
* crypto: Commit of generated configure script.
* common_test: Commit of generated configure script.
* ssh: Add missing known_hosts and authorized_keys file types to
ssh_file:decode/2 and ssh_file:encode/2.
* erts: Commit of generated configure script.
* snmp: Commit of generated configure script.
* megaco: Commit of generated configure script.
* odbc: Commit of generated configure script.
- Version 24.0:
- Highlights compiler:
* The compiler will now inline funs that are used only once
immediately after their definition.
* Compiler warnings and errors now include column numbers in
addition to line numbers.
* Variables bound between the keywords 'try' and 'of' can now
be used in the clauses following the 'of' keyword (that is,
in the success case when no exception was raised).
* Generators in list and binary comprehensions will now raise a
{bad_generator,Generator} exception if the generator has an
incorrect type Similarly, when a filter does not evaluate to
a boolean, a {bad_filter,Filter} exception will be raised.
* Warnings for expressions whose result was ignored that could
be suppressed by using the anonymous variable '_' can now be
suppressed with a variable beginning with '_'.
* Selective receive optimization will now be applied much more
often. The new recv_opt_info compile flag can be used to
print diagnostics relating to this optimization. You can read
more about the selective receive optimization in the
Efficiency Guide.
- erts, kernel, stdlib:
* hex encoding and decoding functions added in the binary module
* The BeamAsm JIT-compiler has been added to Erlang/OTP and
will give a significant performance boost for many
applications. The JIT-compiler is enabled by default on most
x86 64-bit platforms that have a C++ compiler that can
compile C++17. To verify that a JIT enabled emulator is
running you can use erlang:system_info(emu_flavor).
* A compatibility adaptor for gen_tcp to use the new socket API
has been implemented (gen_tcp_socket).
* Extended error information for failing BIF calls as proposed
in EEP 54 has been implemented.
* Process aliases as outlined by EEP 53 has been introduced.
* Implementation of EEP 56 in supervisor. It adds the concept
of significant children as well as the auto_shutdown
supervisor flag. See the supervisor manual page for more
information.
- ftp:
* Add support for FTPES (explicit FTP over TLS).
- ssl:
* Make TLS handshakes in Erlang distribution concurrent.
* TLS connections now support EdDSA certificates.
- wx:
* The application has been completely rewritten in order to use
wxWidgets version 3 as its base.
* Added support for wxWebView.
- edoc:
* EDoc is now capable of emitting EEP-48 doc chunks. This means
that, with some configuration, community projects can now
provide documentation for shell_docs the same way that OTP
libraries did since OTP 23.0.
OBS-URL: https://build.opensuse.org/request/show/894854
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=111
- Use wxWidgets < 3.1 (boo#1180488)
- Changes for 23.2.2:
* crypto: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure
script sources.
* odbc: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure
script sources.
* snmp: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure
script sources.
* erts: The suspend_process() and resume_process() BIFs did not
check their arguments properly which could cause an emulator
crash.
* erts: The runtime system would get into an infinite loop if the
runtime system was started with more than 1023 file descriptors
already open.
* megaco: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure
script sources.
* erl_interface: Integers outside of the range [-(1 bsl 32) - 1,
(1 bsl 32) -1] were previously intended to be printed in an
internal bignum format by ei_print_term() and
ei_s_print_term(). Unfortunately the implementation has been
buggy since OTP R13B02 and since then produced results with
random content which also could crash the calling program. This
fix replaces the printing of the internal format with printing
in hexadecimal form and extend the range for printing in
decimal form. Currently integers in the range [-(1 bsl 64), (1
bsl 64)] are printed in decimal form and integers outside of
this range in Erlang hexadecimal form.
* erl_interface: The ei API for decoding/encoding terms is not
fully 64-bit compatible since terms that have a representation
OBS-URL: https://build.opensuse.org/request/show/863811
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=109
- Changes for 23.1.3:
* erts: Fixed a crash when exceptions were thrown during call
time tracing.
* ssh: A supervisor sub-tree could be left if the connection
handler process is brutally killed. This will make the
max_sessions checking option to count the existing sessions
erroneously and could finally block further sessions.
- Changes for 23.1.2:
* compiler: Fixed a bug in the boolean optimization pass that
caused the compiler to confuse different clauses.
* erts: Fixed bugs causing issues when enabling the ERTS internal
allocators on a system built with the undocumented and
unsupported SMALL_MEMORY feature.
* erts: The inet driver used to use 16 as maximum elements in an
I/O vector passed to writev() (and WSASend() on Windows). When
the data to send contained lots of elements, this caused a
performance degradation since repeated calls to writev() had to
be made to a much larger extent. The inet driver now looks up
actual maximum amount of elements that can be used on the
system, instead of just assuming 16. On most systems this will
result in a maximum amount of I/O vector elements of 1024. As
of OTP 23.0 the term encoding of signals to send over the
distribution are encoded into I/O vectors of buffers instead of
into a single buffer. Reference counted binaries are referred
to directly from the I/O vector instead of being copied into
the single buffer. That is, Erlang signals containing huge
amounts of reference counted binaries was effected by this
performance degradation.
* erts: In the distributed case, a faulty reply option in a call
to the spawn_request() BIF erroneously caused a badarg
OBS-URL: https://build.opensuse.org/request/show/849306
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=108
- Changes for 23.1.1:
* erts: inet:setopts([{active,once}]) wakes up IO polling thread
unnecessarily, leading to lock contention and visibly higher
CPU utilization.
* erts: Two bugs in the ERTS internal thread wakeup functionality
have been fixed. These bugs mainly hit when all threads in the
system tried to go to sleep. When the bugs were triggered,
certain operations were delayed until a thread woke up due to
some other reason. Most important operations effected were code
loading, persistent term updates, and memory deallocation.
* erts: Fixed bug in ets:select_replace/2 on compressed tables
that could produce faulty results or VM crash. Bug exists since
OTP 20.
* erts: When compiling Erlang/OTP on macOS using Xcode 12, the
performance of the BEAM interpreter would be degraded.
* erts: As of OTP 22, the allocator specific memory carrier pools
were replaced by a node global carrier pool. This unfortunately
caused substantial memory fragmentation in some cases due to
long lived data being spread into carriers used by allocators
mainly handling short lived data. A new command line argument
+M<S>cp has been introduced with which one can enable the old
behavior as well as configuring other behaviors for the carrier
pools. In order to configure the old behavior, with allocator
specific carrier pools for all allocators, pass +Mucp :
(including the colon character) as a command line argument to
erl when starting the Erlang system. The default configuration
for carrier pools will be changed to +Mucp : some time in the
future, but not in this patch.
* os_mon: The configuration parameter
memsup_improved_system_memory_data has been introduced. It can
OBS-URL: https://build.opensuse.org/request/show/839763
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=107
- Changes for 23.0.3:
* erts: Fixed bug in erlang:load_nif/2 that could cause it to
throw badarg exception if a concurrent code change operation
was in progress. Bug existed since OTP 23.0.
* erts: Minor fix of debug compiled VM.
* erts: An unintentional reuse of an already used emulator
internal event object could cause a wakeup signal to a thread
to be lost. In worst case this could cause the runtime system
to hang. This hang was however quite rare.
* erts: NIF threads and driver threads on non-Linux systems
leaked internal resources when terminating. On Windows these
resources were one event per thread. On most other systems one
mutex and one condition variable per thread. On these other
systems that also lacked pthread_cond_timedwait() also a pipe
with its file descriptors was leaked.
* compiler: When calls to is_map_key were repeated, the compiler
could terminate with an internal consistency failure.
* compiler: Fixed a bug in the type inference pass that could
cause the compiler to hang.
OBS-URL: https://build.opensuse.org/request/show/828926
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=106
- Changes for 23.0.2:
* erts: Fixed bug when sending an export fun (eg lists:reverse/1)
on a not yet established connection. It could cause VM crash.
Bug exists since OTP 23.0.
* megaco: The mini parser could not properly decode some IPv6
addresses.
- Changes for 23.0.1:
* erts: The functionality utilized by BIFs for temporary
disabling of garbage collection while yielding could cause
system task queues to become inconsistent on a process
executing such a BIF. Process system tasks are for example
utilized when purging code, garbage collecting literal data,
and when issuing an ordinary garbage collection from another
process. The bug does not trigger frequently. Multiple code
purges in direct sequence makes it more likely that this bug is
triggered. In the cases observed, this has resulted in a
hanging code purge operation.
* erts: SCTP and UDP recv/2,3 hangs indefinitely if socket is
closed while recv is called (socket in passive mode).
* compiler: In rare circumstances, a guard using 'not' could
evaluate to the wrong boolean value.
* compiler: A guard expression that referenced a variable bound
to a boolean expression could evaluate to the wrong value.
- Version 23.0:
- Potential Incompatibilities:
* SSL:Support for SSL 3.0 is completely removed. TLS 1.3 is added
to the list of default supported versions.
* erl_interface: Removed the deprecated parts of erl_interface
(erl_interface.h and essentially all C functions with prefix
OBS-URL: https://build.opensuse.org/request/show/814090
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=105
- Changes for 22.3:
* compiler: A 'receive' with an 'after 0' clause would prevent
the optimization that can avoid scanning the entire receive
queue when matching on a newly created reference.
* compiler: HiPE can again handle modules with catch and try
constructs.
* compiler: Fixed a bug in bit-syntax optimization that could
crash the compiler.
* crypto: Fixed potential memory leaks involving calls to the
crypto ng_api.
* common_test: Document incl_apps cover option
* common_test: The ct_property_test has now a report function for
results of stateful testing.
* common_test: Don't hide error reasons from user
* stdlib: Fix type specification for uri_string:normalize/2 that
may also return error().
* stdlib: Improve error handling in uri_string:normalize/2. This
change fixes a crash when the input URI has faulty percent-
encoding.
* stdlib: Fix minor bugs in the Erlang pretty printer (erl_pp).
* stdlib: Fix the Erlang parser regarding consecutive unary
operators.
* stdlib: Let calendar:rfc3339_to_system_time() crash when the
time offset is missing.
* stdlib: Implement uri_string:resolve/{2,3} that can be used to
resolve a URI reference against a base URI.
* stdlib: In gen_statem it is now possible to change the callback
module for a running server. See gen_statem's documentation for
change_callback_module, push_callback_module, and
pop_callback_module.
* ssl: Correct handling of TLS record limit in TLS-1.3. The max
value differs from previous versions. Also the payload data max
record check was broken, that is record overflow problems could
occur if user sent large amounts of data.
* ssl: Correct close handling for DTLS
* ssl: Fix ssl:getstat/1-2 to also work for DTLS sockets
* ssl: Correct internal handling och socket active mode to avoid
reviving TCP data aimed for a downgraded TLS socket.
* ssl: When using the host name as fallback for SNI (server name
indication) strip a possible trailing dot that is allowed in a
host name but not in the SNI. Also if the server receives a SNI
with a trailing dot send an UNRECOGNIZED_NAME alert.
* ssl: Immediately remove session entries if handshake is
abruptly closed at transport level.
* ssl: Implementation of the key and initialization vector update
feature, and general hardening of TLS 1.3. There are
cryptographic limits on the amount of plaintext which can be
safely encrypted under a given set of keys. This change
enforces those limits by triggering automatic key updates on
TLS 1.3 connections.
* ssl: Add support for TLS 1.3 Session Tickets (stateful and
stateless). This allows session resumption using keying
material from a previous successful handshake.
* ssl: Add support for key exchange with Edward curves and PSS-
RSA padding in signature verification.
* megaco: The documented function
megaco:get_sdp_record_from_PropertGroup/2 was a wrapper for
megaco_sdp:get_sdp_record_from_PropertGroup/2 but did not
actually exist. This has now been fixed.
* megaco: Test suite completely reworked. Add (timestamp) utility
functions for debugging and testing.
* erl_interface: Fix link error "multiple definition of
`ei_default_socket_callbacks'" for gcc version 10 or when built
with gcc option -fno-common. Error exists since OTP-21.3.
* asn1: Fix 'DEFAULT' with 'OCTET STRING' and 'SEQUENCE OF
CHOICE' with extensions.
* erts: gen_udp:recv(S, N, 0) corrupted the internal state for
the socket so after receive with {active, once} it always
returned {error, timeout}, and wasted the received UDP packets.
This bug has now been fixed. Reported and pinpointed by
Alexander Petrovsky.
* erts: The atom esock_atom_user and esock_atom_kernel was never
actually created. This has now been corrected.
* erts: Fixed bug in socket module that could potentially lead to
scheduler deadlocks.
* erts: Fix bug causing VM crash if down or stop callback of a
NIF resource is called after the NIF module has been purged.
The fix will postpone unloading until all such resource objects
have been garbage collected.
* erts: Fixed bug in ets:update_counter/4, when called with an
invalid UpdateOp and a Key that does not exist, causing
ets:info(T,size) to return incorrect values. Bug exists since
OTP-19.0.2.
* erts: Fix potential heap corrupting bugs when a process calls a
BIF that blocks other normal schedulers and then writes to its
own heap without the main process lock. A NIF running on a
dirty scheduler trying to interact with such a process could
corrupt its heap. The fixed BIFs were related to code loading
and tracing.
* erts: Fixed bug in erlang:list_to_ref/1 when called with a
reference created by a remote note. Function list_to_ref/1 is
intended for debugging and not to be used in application
programs. Bug exist since OTP 20.0.
* erts: The prim_net nif (net/kernel) made use of an undefined
atom, notsup. This has now been corrected.
* erts: Corrected the valid range of the erl command line
argument +SDio <NumberOfDirtyIoSchedulers> from 0..1024 to
1..1024. +SDio 0 was erroneously allowed which just caused the
VM to crash on the first dirty I/O job scheduled.
* erts: Fix a crash when attempting to log faults when loading
files during early boot.
* erts: For socket, not all send and receive flags are supported
on all platforms. In order to (at least) simplify testing, the
socket:supports/0,1,2,3 functions has been extended with
send_flags and recv_flags items, which indicates what the
current platform can manage.
* erts: Add a "full featured" version of getifaddrs in the net
module.
* erts: The options busy_limits_port and busy_limits_msgq have
been added to the BIF erlang:open_port/2. The busy_limits_port
option can be used for controlling the busy state of a port
executing the spawn_driver or the fd_driver. The
busy_limits_msgq option can be used for controlling the busy
state of the port message queue.
* erts: A socket "registry" has been added making it possible to
list current open sockets.
* erts: The counters managed by the socket nif has been extended.
Their "size" has been increased from 32 bit to 64. Two max
package size (for read and write) has been added. And four
accept counters has been added.
* erts: Add gcc option -fno-common to detect accidental name
clashes of global variables.
* erts: New dynamic lock checker that verifies locking orders and
detects potential deadlock bugs in drivers and NIFs. Enabled
together with the old static lock checker (for ERTS internal
locks) in emulator started with -emu_type debug or built with
configuration option --enable-lock-checking.
* snmp: A simple supervision of the snmp manager net-if process
has been added. Also, a way to forcibly restart the net-if
process has been added. This could be useful if the net-if
process hangs for some reason.
* snmp: Misc documentation corrections
* mnesia: Fixed a timing issue in uninstall fallback
functionality.
* eunit: Backport of PR-2316: Strip control codes from
eunit_surefire output to avoid generation of invalid xml
* ssh: Unicode problems for ssh_sftp:write fixed.
* ssh: Changes to the internal api of the experimental ssh_dbg
tool.
* ssh: The new functions ssh:set_sock_opts/2 and
ssh:get_sock_opts/2 sets and reads option values for the
underlying TCP stream.
* hipe: HiPE can again handle modules with catch and try
constructs.
* hipe: When the return value for try/catch was ignored, the
native code compiler could crash.
* public_key: Add support for key exchange with Edward curves and
PSS-RSA padding in signature verification.
* diameter: Add the 'first' tuple to type diameter:peer_filter/0.
The filter was added in OTP-17.5.6.8 and OTP-18.3, but neither
release updated the type specification.
* tools: An Emacs warning due to lacking type in defcustom
declaration has been fixed.
* tools: Improve emacs indentation.
* tools: The cover tool could generate instrumented code for a
module that would cause warnings to be issued.
* tools: Fixed generated fprof analysis format to also handle
data in maps.
* sasl: A socket "registry" has been added making it possible to
list current open sockets.
* kernel: The DNS resolver `inet_res` has been fixed to return
the last intermediate error when subsequent requests times out.
* kernel: The prim_net nif (net/kernel) made use of an undefined
atom, notsup. This has now been corrected.
* kernel: Fix a crash when attempting to log faults when loading
files during early boot.
* kernel: Fix crash in logger when logging to a remote node
during boot.
* kernel: Improved net_kernel debug functionality.
- Changes for 22.2.8:
* diameter: The possibility of choosing a handler process for an
incoming Diameter request with a configured MFA was documented
in OTP 20.0, but counters (with {traffic_counters, true}) were
not incremented when this process was on a remote node.
Counters are now incremented on the node that configures the
transport in question. Introduced in OTP 21.3.
* diameter: Transport options differing from those passed to
diameter:add_transport/2 were used in several situations: when
starting a transport process after connect_timer expiry after
an initial connection attempt has failed, when starting a
transport process after a connection has been accepted, when
sending events, when returning options in
diameter:service_info/2, and possibly more. In particular, the
following configuration options to diameter:add_transport/2
were dropped: avp_dictionaries, incoming_maxlen, spawn_opt,
strict_mbit. Moreover, any service options mistakenly passed to
diameter:add_transport/2 were interpreted as such, instead of
being ignored as the documentation states, with the consequence
that outgoing and incoming requests saw different values of
some options, some were always taken from transport options,
and others from service options. diameter:add_transport/2 must
be called in new code for the fix to have effect. Introduced in
OTP 20.1.
OBS-URL: https://build.opensuse.org/request/show/788113
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=104
- Changes for 22.2.7:
* compiler: Fixed a bug that could cause the compiler to reject
valid code that used the is_map_key/2 BIF.
* compiler: Fixed a bug that could cause the compiler to reject
valid code that matched the same map key several times.
* compiler: The compiler could crash when compiling a convoluted
receive statement.
* compiler: The compiler could crash when a fun was created but
never used. The compiler could crash when compiling the
expression true = 0 / X.
- jsc#SLE-10913
OBS-URL: https://build.opensuse.org/request/show/777387
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=102
- Changes for 22.2.5:
* erts: A process could end up in a state where it got
endlessly rescheduled without making any progress. This
occurred when a system task, such as check of process
code (part of a code purge), was scheduled on a high
priority process trying to execute on a dirty
scheduler.
* erts: Improved signal handling for processes executing dirty.
For example, avoid busy wait in dirty signal handler
process when process is doing garbage collection on
dirty scheduler.
* stdlib: A directory traversal vulnerability has been eliminated
in erl_tar. erl_tar will now refuse to extract symlinks
that points outside the targeted extraction directory
and will return {error,{Path,unsafe_symlink}}. (Thanks
to Eric Meadows-Jönsson for the bug report and for
suggesting a fix.)
OBS-URL: https://build.opensuse.org/request/show/771566
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=100
- Changes for 22.2.4:
* ssl: Enhance error handling, all ALERTS shall be handled
gracefully and not cause a crash.
* ssl: Enhance alert logging, in some places the role
indication of the alert origin was missing. So the log
would say undefined instead of client or server.
* ssl: Two different optimizations did not work together and
resulted in the possible breakage of connections using
stream ciphers (that is RC4). Reworked the
implementation to avoid this.
OBS-URL: https://build.opensuse.org/request/show/769520
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=99
- Changes for 22.2.3:
* ssl: Fix the handling of GREASE values sent by web browsers
when establishing TLS 1.3 connections. This change improves
handling of GREASE values in various protocol elements sent in
a TLS 1.3 ClientHello.
* ssl: Correct DTLS listen emulation, could cause problems with
opening a new DTLS listen socket for a port previously used by
a now closed DTLS listen socket.
* compiler: Fixed a bug in the compiler that could cause it to
reject valid code.
OBS-URL: https://build.opensuse.org/request/show/766759
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=98
- Changes for 22.2.2:
* erts: Taking a scheduler offline could cause timers set while
executing on that scheduler to be delayed until the scheduler
was put online again. This bug was introduced in ERTS version
10.0 (OTP 21.0).
* erts: The ets:update_counter/4 core dumped when given an
ordered_set with write_concurrency enabled and an invalid
position. This bug has been fixed.
* erts: A process calling erlang:system_flag(multi_scheduling,
block) could end up blocked waiting for the operation to
complete indefinitely.
* erts: Duplicate entries for [socket:]getopt and [socket:]setopt
in man page.
* stdlib: The ets:update_counter/4 core dumped when given an
ordered_set with write_concurrency enabled and an invalid
position. This bug has been fixed.
* crypto: Constant time comparisons added.
* ssh: Fixed that ssh_connection:send could allocate a large
amount of memory if given an iolist() as input data.
* ssh: Safe atom conversions.
* ssh: Constant time comparisons added.
- Changes for 22.2.1:
* erts: Corrected an issue with the new socket api which could
cause a core dump. A race during socket close could cause a
core dump (an invalid nif environment free).
* erts: Corrected an issue with the new socket api which could
cause a core dump. When multiple accept processes waiting for a
connect a connect could cause a core dump.
* snmp: Its now possible to remove selected varbinds (from the
final message) when sending a notification. This is done by
OBS-URL: https://build.opensuse.org/request/show/765151
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=97
- Changes for 22.2
* http://erlang.org/download/OTP-22.2.README
* Highlights:
* erts: The Kernel application's User's Guide now contains a
Logger Cookbook with common usage patterns.
* erts: Numerous improvements in the new socket and net modules
* Standard libraries: common_test: ct_property_test logging is improved
* Standard libraries: ssl: Correct handling of unordered chains so that it
works as expected
* Tools: Emacs erlang-mode function that lets the user open the documentation
for an Erlang/OTP function in an Emacs buffer has been improved.
Users will be asked if they want the man pages downloaded if they are not present
in the system.
OBS-URL: https://build.opensuse.org/request/show/756006
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=95
- Changes for 22.1.7
* http://erlang.org/download/OTP-22.1.7.README
* compiler: Fixed a performance bug that caused repeated matches of
large records to take a very long time to compile.
* erts: A literal area could prematurely be released before all
uses of it had been removed. This occurred either when
a terminating process had a complex exit reason
referring to a literal that concurrently was removed,
or when a terminating process continued executing a
dirty NIF accessing a literal (via the heap) that
concurrently was removed.
* erts: Fix bug causing VM crash due to memory corruption of
distribution entry. Probability of crash increases if
Erlang distribution is frequently disconnected and
reestablished towards same node names. Bug exists since
OTP-21.0.
* erts: Fixed bug causing crash of VM built with configuration
--enable--sharing-preserving. Provoked when a sent
message contains both a bit string and the heap binary
(< 65 bytes) which the bit string was matched from. Bug
exists since OTP-19.0 but has seen to be easier to
provoke since OTP-22.1.
- Changes for 22.1.6
* http://erlang.org/download/OTP-22.1.6.README
* compiler, erts: The compiler could do an unsafe optimization of
receives, which would cause a receive to only scan part
of the message queue.
* crypto: The AEAD tag was not previously checked on decrypt with
chacha20_poly1305
* erts:Fix bug where the receive marker used by the runtime to
do the receive queue optimization could be incorrectly
set. The symptom of this would be that a message that
should match in a receive never matches.
* snmp: Agent discovery cleanup. If there is no receiver of
INFORM then #state.reqs in snmpa_net_if keeps on
growing for DISCOVERY.
OBS-URL: https://build.opensuse.org/request/show/747347
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=93