Age | Commit message (Collapse) | Author |
|
alloc_no of sbmbc_low_alloc was set to ERTS_ALC_A_STANDARD_LOW
|
|
|
|
|
|
If the environment variable ERL_EPMD_ADDRESS is set to the empty string,
empd now behaves like it does by default when ERL_EPMD_ADDRESS is unset.
That is, in this case, epmd now listens on all available interfaces
instead of using only the loopback interface, which happened because
epmd added the loopback address to the (in this case empty) list of
addresses specified via ERL_EPMD_ADDRESS.
Also, epmd now ignores ERL_EPMD_ADDRESS if it contains only separator
characters (comma and space).
The same applies to epmd's -address option.
|
|
* sverker/enif_make_int64-halfword/OTP-9394:
Fix halfword bug in enif_make_int64
|
|
Conflicts:
erts/vsn.mk
|
|
|
|
* rickard/sbmbc/OTP-9339:
Use separate memory carriers for small blocks
|
|
* sverker/ets_delete-deadlock-race/OTP-9423:
Fix bug in ets:delete for write_concurrency that could lead to deadlock
|
|
|
|
initialized before the first erts_sys_getenv call
|
|
A trace matchspec with 'enable_trace' or 'disable_trace' in body could
cause an emulator crash if a concurrent process altered the trace
setting of the traced function by calling erlang:trace_pattern.
The effect was a deallocation of the binary holding the matchspec
program while it was running. Fixed by increasing reference count of
ms-binary in the cases when 'enable_trace' or 'disable_trace' may
cause a system block that may alter the ongoing trace.
The paradox here is that db_prog_match() is using erts_smp_block_system()
to do 'enable_trace' and 'disable_trace' in a safe (atomic) way. But that
also have the (non-atomic) effect that racing thread might block the
system and change the trace settings with erlang:trace_pattern.
|
|
Relocking in ets_delete_1() and remove_named_tab() was done by
unlocking the table without clearing the is_thread_safe flag. A racing
thread could then read-lock the table and then incorrectly
write-unlock the table as db_unlock() looked at is_thread_safe to
determine which kind of lock to unlock.
Several fixes:
1. Make db_unlock() use argument 'kind' instead of is_thread_safe to
determine lock type.
2. Make relock logic use db_lock() and db_unlock() instead of directly
accessing lock primitives.
3. Do ownership transfer earlier in ets_delete_1 to avoid racing owner
process to also start deleting the same table.
|
|
The bug was creating an invalid bignum instead of a small integer,
causing strange comparing behavior (=:= failed but == succeeded).
|
|
* hw/fix-doc-typos:
Fix typos in the epmd documentation
OTP-9387
|
|
An incorrect spec, rpc:yield/1, has been fixed.
|
|
pan/win_erlsrv_stop/OTP-9344
|
|
|
|
* siri/sasl/release_handler-windows/OTP-9306:
Make release_handler work with windows services
|
|
This commit adds test cases from release_handler_SUITE on windows,
including some corrections in erlsrv and release_handler.
|
|
|
|
|
|
|
|
pan/win_erlsrv_stop/OTP-9344
|
|
|
|
|
|
An experimental version of Dialyzer discovered that the atom that
replaced the DRV macro in prim_file ends up in calls to
erlang:open_port({spawn, Driver}, Portopts) as the Driver argument. The
documentation states that this call requires a string there.
This change is also consistent with the one introduced in commit
0f03b1e9d2bef3bc830c31a369261af4c5234727 by Kostis Sagonas.
|
|
Suppress compiler warnings about ignored return values.
|
|
|
|
Add support for querying the number of configured and online processors
on SGI systems running IRIX.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
If an IPv4 fd is opened as an IPv6 socket, unexpected behaviour can
occur. For example, if an IPv4 UDP socket is opened and passed into
Erlang as an IPv6 socket, the first 3 bytes (corresponding to 1 byte
representing the protocol family, 2 bytes set to the port) are stripped
from the payload. The cause of the UDP payload truncation happens in
inet_drv.c:packet_inet_input when a call to inet_get_address fails
silently because the family is set to PF_INET6 but the buffer len is
the size of an IPv4 struct sockaddr_in.
Prevent this behaviour by checking that the protocol family of the file
descriptor matches the family of the requested Erlang socket.
{ok, S1} = gen_udp:open(0, [binary, inet]),
{ok, FD} = inet:getfd(S1),
{ok, Port} = inet:port(S1),
{ok, S} = gen_udp:open(Port, [binary, {fd, FD}, inet6]),
{ok, C} = gen_udp:open(0, [binary]),
Msg = <<1,2,3,4,5>>,
gen_udp:send(C, "127.0.0.1", Port, Msg),
receive
{udp, S, _, _, Msg} -> ok;
{udp, S, _, _, NewMsg} -> {error, Msg, NewMsg}
end.
This test results in: {error,<<1,2,3,4,5>>,<<4,5>>}
Thanks to Andrew Tunnell-Jones for finding the bug and the test case!
|
|
|
|
|
|
F_HIBERNATE_SCHED flag that was introduced in b7ecdcd1ae9e11b8f75e must
be cleared in hipe_mode_switch as well. Otherwise, processes running
HiPE code that hibernate, wake up and then trap into a BIF will not be
rescheduled.
|
|
|
|
|
|
* rickard/driver_async_cancel/OTP-9302:
Fix testcase
|
|
|
|
* pan/epmd_testcase/OTP-9214:
Make ssh proxy work with older versions of ssh
Mend epmd testcases that test remote access
|
|
* rickard/driver_async_cancel/OTP-9302:
Fix driver_async_cancel()
|
|
* egil/remove-compile-warnings:
Remove unused variable warning in inet_res
Remove unused variable in epmd_port
Remove compiler warnings in inet_drv
|
|
|
|
* pan/win_static_openssl/OTP-9280:
Mend --with-ssl= in erts/configure
Update OpenSSL license text in crypto
Link OpenSSL libraries static on Windows
|