Age | Commit message (Collapse) | Author |
|
|
|
The test case tried to validate the (socket option) protocol,
which is not actually available on OpenBSD. So, add a check
if the option is supported.
OTP-14831
|
|
|
|
|
|
* sverker/big-band-bug/ERL-804/OTP-15487:
erts: Fix bug in 'band' of two negative numbers, one big
|
|
Added a number of ttest test cases with transport socket.
Server with transport = socket(tcp), active = true and client
using transport = socket(tcp) (and active = false, once and true).
OTP-14831
|
|
Added a number of ttest test cases with transport socket and gen_tcp.
Server with transport = socket(tcp), active = true and client
using transport = gen_tcp (and active = false, once and true).
OTP-14831
|
|
Added a number of ttest test cases with transport socket.
Server with transport = socket(tcp), active = once and client
using transport = socket(tcp) (and active = false, once and true).
OTP-14831
|
|
Added a number of ttest test cases with transport socket and gen_tcp.
Server with transport = socket(tcp), active = once and client
using transport = gen_tcp (and active = false, once and true).
OTP-14831
|
|
Added a number of ttest test cases with transport socket.
Server with transport = socket(tcp), active = false and client
using transport = socket(tcp) (and active = false, once and true).
OTP-14831
|
|
Added a number of ttest test cases with transport socket and gen_tcp.
Server with transport = socket(tcp), active = false and client
using transport = gen_tcp (and active = false, once and true).
OTP-14831
|
|
Added a number of ttest test cases with transport gen_tcp and socket.
Server with transport = gen_tcp, active = true and client
using transport = socket(tcp) (and active = false, once and true).
OTP-14831
|
|
Added a number of ttest test cases with transport gen_tcp.
Server with transport = gen_tcp, active = true and client
using transport = gen_tcp (and active = false, once and true).
OTP-14831
|
|
Added a number of ttest test cases with transport gen_tcp and socket.
Server with transport = gen_tcp, active = once and client
using transport = socket(tcp) (and active = false, once and true).
Also fixed a counting error in the server (forgot to include the
header, 16 bytes, in the byte count).
OTP-14831
|
|
Added a number of ttest test cases with transport gen_tcp.
Server with transport = gen_tcp, active = once and client
using transport = gen_tcp (and active = false, once and true).
Also a bit of client and server cleanup (remove and cleanup up
some printouts).
OTP-14831
|
|
Added a number of ttest test cases with transport gen_tcp and socket.
Server with transport = gen_tcp, active = false and client
using transport = socket(tcp) (and active = false, once and true).
Also a bit of "grouping".
OTP-14831
|
|
Added a number of ttest test cases with transport gen_tcp.
Server with transport = gen_tcp, active = false and client
using transport = gen_tcp (and active = false, once and true).
Also "fixed" the gen_tcp socket buffer size (default size
was way to small for the "large" messages).
OTP-14831
|
|
|
|
* sverker/big-band-bug/ERL-804/OTP-15487:
erts: Fix bug in 'band' of two negative numbers, one big
|
|
maint
* sverker/fix-atomics-get-large-unsigned/PR-2061/OTP-15486:
erts: Fix possible heap corruption getting atomics
|
|
Added a (first) test case based on the ttest modules.
OTP-14831
|
|
The guard BIF `length/1` would calculate the length of the list in one
go without yielding, even if the list was were long. To make it even
worse, the call to `length/1` would only cost a single reduction.
This commit reimplements `length/1` so that it eats a number of
reductions proportional to the length of the list, and yields if the
available reductions run out.
|
|
Similar bug as for bxor fixed by abc4fd372d476821448dfb9
Ex:
1> io:format("~.16B\n", [-16#1110000000000000000 band (-1)]).
-1120000000000000000
Wrong result for
(-X bsl WS) band -Y.
where
X is any positive integer
WS is erlang:system_info(wordsize)*8*N where N is 1 or larger
Y is any positive integer smaller than (1 bsl WS)
Fix:
The subtraction of 1 (for 2-complement conversion)
must be carried along all the way to the last words.
|
|
Added a global logger that make it possible to log
from the slave nodes (with "ease").
Also "fixed" the test case that failed on "older"
linux (Ubuntu 14.04). For now we let it skip
instead (we should really check the OS version).
Also corrected a couple of (ping-pong) cases for which
the buffer adjustments did not work.
OTP-14831
|
|
Assumed the wrong success value ({ok, _} instead of ok) for the
api-to-connect-tcp test case.
OTP-14831
|
|
Due to comparison as a signed integer, when getting an unsigned atomic
in the range 2^63-1..2^64-1 (when the most significant bit was set), the
heap could get corrupted when the integer was retrieved: hsz would get
set to zero, but the code proceeded to build a bignum.
Steps to reproduce (at least on x86_64):
$ erl
1> A = atomics:new(1,[{signed,false}]).
2> atomics:put(A,1,18446744073709551615).
3> atomics:get(A,1).
At the last step, the shell would print some garbage and hang.
|
|
* maint:
Fix reading beyond end of bignum in integer squaring
|
|
The multiplication of two bignums is specially optimized when the two
operands have the same address, because squaring can be done more
efficiently than multiplication of two arbitrary integers. That is,
expressions such as `I * I` will be calculated by squaring the value
of `I`.
The optimized function for squaring would read one word beyond the
end of the bignum in the last iteration of a loop. The garbage
value would never be used. In almost all circumstances that would
be harmless. Only if the read word happened to fall on the start
of an unmapped page would the runtime crash. That is unlikely
to happen because most bignums are stored on a process heap, and
since the stack is located at the other end of the block that the
heap is located in, the word beyond the end of bignum is guaranteed
to be readable.
|
|
Added a ttest lib module for some common functions.
Added a process (server handler and reader processes) stats
printouts. So far only used by the server.
There is still a "leak". Its a term leak. Some of the
functions take a ref as argument (recv, send and accept for
instance). This is stored internally, by way of a call to
the enif_make_copy, in order to be used later in a select
call. Its not "released" though, until the environment is
released, which happens when the socket dtor callback function
is called.
Possible solution: We need to keep "temporary" environments (one
for each of the queues), which we can clear (basically we need two,
one that is currently used for new ref's and one for the old ref's).
OTP-14831
|
|
Conflicts:
erts/emulator/beam/erl_process.c
|
|
* lukas/OTP-21.1.1/scheduler_pollset/OTP-15475:
erts: Move fds with active true behaviour to own pollset
erts: Fix lists_member_2 reduction count
erts: Allow code_model_small to be set in xcomp setting
erts: Implement delay_send using timer instead of poll
erts: Optimize driver_set_timer(0) to fire at once
erts: Optimize the inet driver multi timers for one timer
erts: Move all inet tcp CONNECTED timers to multi timer
erts: Add erts_io_notify_port_task_executed to check_io msacc state
erts: Add pre-alloc to ALLOC msacc state
erts: Make thr prgr wakeup current or sched 1
erts: Pass thread progress data where possible
|
|
At start of the VM a poll-set that the schedulers
will check is created where fds that have triggered
many (at the moment, many means 10) times without
being deselected inbetween. In this scheduler specific
poll-set fds do not use ONESHOT, which means that the
number of syscalls goes down dramatically for such fds.
This pollset is introduced in order to handle fds that
are used by the erlang distribution and that never
change their state from {active, true}.
This pollset only handles ready_input events,
ready_output is still handled by the poll threads.
During overload, polling the scheduler poll-set is done
on a 10ms timer.
|
|
|
|
The ping-pong merge had some problems...
|
|
|
|
* sverker/erts/cuddle-driver_SUITE:
erts: Fix faulty assert in driver_SUITE
erts: Improve driver_SUITE:smp_select
|
|
|
|
Wow, that could have been embarrassing.
|
|
|
|
Set drv_use_singleton.fd_stop_select to -2 in start()
as it's only used by driver_SUITE:driver_select_use.
|
|
bmk/20180918/nififying_inet/OTP-14831
|
|
|
|
to better detect an actual missing ready_input event
on slow machines (valgrind)
and without wasting time with long sleep on fast machines.
|
|
to be usable by other application tests.
|
|
Attempt to fix the the api_to_connect_tcp[4|6] test cases.
On some linux versions (Ubuntu 14), the backlog seems to not
work. No luck...
OTP-14831
|
|
Added a socket close (actually shutdown(write)) for recv and
recvmsg for tcp.
OTP-14831
|
|
|
|
|
|
|
|
Added ping-pong test cases for UDP, small and medium, using
the sendto/recvfrom and sendmsg/recvmsg functions.
OTP-14831
|