Age | Commit message (Collapse) | Author |
|
* maint:
Updated OTP version
Prepare release
|
|
The variable can be an empty list.
|
|
Without this fix asserts would trigger in debug build
but nothing else would break.
|
|
|
|
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
|
|
jhogberg/john/erts/mark-pooled-free-blocks-unused/OTP-15075
Mark free blocks in pooled carriers as unused
|
|
This lets the OS reclaim the physical memory associated with these
blocks which reduces the impact of long-lived awkward allocations.
A small allocated block will still keep a huge carrier alive, but
the unused part of the carrier will now be available to the OS.
Co-authored-by: Dmytro Lytovchenko <[email protected]>
|
|
"Dry fixed" the "same" problems as was found for nif_recv (missing
binary free(s)).
OTP-14831
|
|
Running valgrind, found a couple of cases when allocated
binaries where not released. Mostly when the recv failed
for some reason.
Also clear and free the environment associated with the
socket (resource) (in the _dtor callback function).
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.
|
|
On a 32-bit machine, `beam_makeops` would generate incorrect
pack instructions for instructions such as:
i_plus x x j? d
See the added comment block for a detailed description of the
problem and its fix.
|
|
bmk/20180918/nififying_inet/OTP-14831
|
|
Symptom:
Test cases with small key ranges sometimes failed on debug VM with:
"No routing nodes in table?
Debug feature 'ets_force_split' does not seem to work."
Solution:
Don't provoke randomly joins when force_split is set.
|
|
|
|
* Socket close callback
Only demonitor the closer if its local (close) and its not
a direct call. There was a spurious warning message.
* Down callback
Only process this event if the socket is not closed or closing.
OTP-14831
|
|
|
|
garazdawi/lukas/erts/fix_lit_msg_copy_in_gc/ERL-741/OTP-15478
erts: Fix copy of literal msg during gc
|
|
|
|
The default read buffer size was 2K and has now been
increased to 8K.
OTP-14831
|
|
The ping-pong merge had some problems...
|
|
A copy has to be made of the message as there is
a trace token. There was a bug where the actual
message was incorrectly modified even if it was a
literal.
|
|
|
|
|
|
* lukas/erts/CFLAGS-O-check/OTP-15465:
erts: Fix some 32-bit gcc warnings
erts: Add check that a -O flag is present in CFLAGS
|
|
|
|
There have been too many times when users have needed to
enable something through CFLAGS but forgotten to add the
'-O2 -g' flags.
|
|
OTP-15474
|
|
OTP-15473
|
|
The previous implementation uses a round-trip in the poll-set
to simulate a yield of the port context. With the poll thread
implementation this is no longer a good idea as it generated a
lot more work for the system. So this commit changes the
implementation to use a timer instead.
OTP-15471
|
|
By optimizing driver_set_timer for 0 we can use it
instead of select to do a yield in the driver.
Use full for delay_send in the inet driver.
OTP-15472
|
|
The most common case for any socket is to have zero or one
timer, so we optimize for the one case. The only case when
we have more than one timer is when the multi accept feature
is used.
|
|
|
|
OTP-15450
|
|
OTP-15450
|
|
|
|
* sverker/erts/sendfile-error-bug/ERL-784/OTP-15461:
erts: Fix hanging sendfile bugs when socket closes unexpectedly
erts: Fix unexpected inet_reply message from failing file:sendfile
erts: Fix bug in sendfile for active socket
|
|
|
|
* sverker/erts/cuddle-driver_SUITE:
erts: Fix faulty assert in driver_SUITE
erts: Improve driver_SUITE:smp_select
|
|
|
|
* john/erts/assert-dirty-aux-work:
Abort when aux work runs on a dirty scheduler
|
|
|
|
|
|
A failing file:sendfile call would often send a message
{inet_reply, Port, {error, Reason}} that would pollute the mailbox
of the calling process.
TCP_REQ_SENDFILE has its own reply messages format
{sendfile, _, _} and does not expect an inet_reply message.
Solution: Suppress inet_reply error message if TCP_ADDF_SENDFILE
is set.
|
|
driver_select() was called after port had been killed
by tcp_inet_sendfile() calling tcp_send_error().
|
|
|
|
* lukas/erts/fix-msacc-gc-states/OTP-15450:
erts: Fix msacc GC states on dirty scheds
|
|
Added config checks for the sctp struct field:
sctp_event_subscribe.sctp_authentication_event
Also, if-def'ed the code accordingly.
If-def'ed code to handle the (non-) existence of IP_PMTUDISC_PROBE
and IPV6_PMTUDISC_PROBE for the IP and IPv6 MTU_DISCOVER options.
OTP-14831
|
|
While the system will keep working, the aux work will never run
and the affected scheduler never goes to sleep. OTP-15446 is a
good example of this.
As this error easily flies under the radar it's best to make it
immediately visible. The assertions we had in debug builds were
clearly not enough to catch all sources of this problem.
|