aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2018-12-11Merge branch 'maint'Henrik Nord
* maint: Updated OTP version Prepare release
2018-12-10erl_bif_list: Remove faulty assertionBjörn Gustavsson
The variable can be an empty list.
2018-12-10erts: Use ptr_val for pointer in gc msg copyLukas Larsson
Without this fix asserts would trigger in debug build but nothing else would break.
2018-12-10Prepare releaseErlang/OTP
2018-12-07[socket-nif|test] ttest improvementsMicael Karlberg
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
2018-12-07Merge pull request #2046 from ↵John Högberg
jhogberg/john/erts/mark-pooled-free-blocks-unused/OTP-15075 Mark free blocks in pooled carriers as unused
2018-12-07Mark free blocks in pooled carriers as unused (MADV_FREE)John Högberg
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]>
2018-12-06[socket-nif] Valgrind: plugged memory leaks in nif_[recvfrom<recvmsg]Micael Karlberg
"Dry fixed" the "same" problems as was found for nif_recv (missing binary free(s)). OTP-14831
2018-12-06[socket-nif] Valgrind: plugged memory leaks in nif_recvMicael Karlberg
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
2018-12-06Merge branch 'maint'Lukas Larsson
Conflicts: erts/emulator/beam/erl_process.c
2018-12-06Merge branch 'lukas/OTP-21.1.1/scheduler_pollset/OTP-15475' into maintLukas Larsson
* 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
2018-12-06erts: Move fds with active true behaviour to own pollsetLukas Larsson
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.
2018-12-06beam_makeops: Correct generation of pack instructionsBjörn Gustavsson
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.
2018-12-05Merge branch 'bmk/20181205/nififying_inet_ttest/OTP-14831' into ↵Micael Karlberg
bmk/20180918/nififying_inet/OTP-14831
2018-12-05erts: Fix volatile ets test case failures on debug VMSverker Eriksson
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.
2018-12-05[socket-nif|test] Added the proper time-test codeMicael Karlberg
2018-12-05[socket-nif] Fixed two minor problems with socket close and downMicael Karlberg
* 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
2018-12-05Merge branch 'maint'Lukas Larsson
2018-12-05Merge pull request #2039 from ↵Lukas Larsson
garazdawi/lukas/erts/fix_lit_msg_copy_in_gc/ERL-741/OTP-15478 erts: Fix copy of literal msg during gc
2018-12-05erts: Fix inet pktopts on very old linux kernelsLukas Larsson
2018-12-05[socket-nif] Increased the default read buffer sizeMicael Karlberg
The default read buffer size was 2K and has now been increased to 8K. OTP-14831
2018-12-05[socket-nif|test] Fixed the test suiteMicael Karlberg
The ping-pong merge had some problems...
2018-12-04erts: Fix copy of literal msg during gcLukas Larsson
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.
2018-12-03Update preloaded modulesHenrik Nord
2018-12-03Merge branch 'maint'Lukas Larsson
2018-12-03Merge branch 'lukas/erts/CFLAGS-O-check/OTP-15465' into maintLukas Larsson
* 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
2018-12-03erts: Fix some 32-bit gcc warningsLukas Larsson
2018-12-03erts: Add check that a -O flag is present in CFLAGSLukas Larsson
There have been too many times when users have needed to enable something through CFLAGS but forgotten to add the '-O2 -g' flags.
2018-12-03erts: Fix lists_member_2 reduction countLukas Larsson
OTP-15474
2018-12-03erts: Allow code_model_small to be set in xcomp settingLukas Larsson
OTP-15473
2018-12-03erts: Implement delay_send using timer instead of pollLukas Larsson
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
2018-12-03erts: Optimize driver_set_timer(0) to fire at onceLukas Larsson
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
2018-12-03erts: Optimize the inet driver multi timers for one timerLukas Larsson
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.
2018-12-03erts: Move all inet tcp CONNECTED timers to multi timerLukas Larsson
2018-12-03erts: Add erts_io_notify_port_task_executed to check_io msacc stateLukas Larsson
OTP-15450
2018-12-03erts: Add pre-alloc to ALLOC msacc stateLukas Larsson
OTP-15450
2018-12-03Merge branch 'maint'Sverker Eriksson
2018-12-03Merge branch 'sverker/erts/sendfile-error-bug/ERL-784/OTP-15461' into maintSverker Eriksson
* 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
2018-12-03Merge branch 'maint'Sverker Eriksson
2018-12-03Merge branch 'sverker/erts/cuddle-driver_SUITE' into maintSverker Eriksson
* sverker/erts/cuddle-driver_SUITE: erts: Fix faulty assert in driver_SUITE erts: Improve driver_SUITE:smp_select
2018-11-30erts: Fix hanging sendfile bugs when socket closes unexpectedlySverker Eriksson
2018-11-30Merge branch 'john/erts/assert-dirty-aux-work'John Högberg
* john/erts/assert-dirty-aux-work: Abort when aux work runs on a dirty scheduler
2018-11-29Merge branch 'maint'Sverker Eriksson
2018-11-29Replace mathematical jargon in erl_nif docs PR-2037Bartosz Błaszków
2018-11-28erts: Fix unexpected inet_reply message from failing file:sendfileSverker Eriksson
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.
2018-11-28erts: Fix bug in sendfile for active socketSverker Eriksson
driver_select() was called after port had been killed by tcp_inet_sendfile() calling tcp_send_error().
2018-11-27Merge branch 'maint'Lukas Larsson
2018-11-27Merge branch 'lukas/erts/fix-msacc-gc-states/OTP-15450' into maintLukas Larsson
* lukas/erts/fix-msacc-gc-states/OTP-15450: erts: Fix msacc GC states on dirty scheds
2018-11-27[socket-nif] Conditional use of sctp struct fieldMicael Karlberg
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
2018-11-27Abort when aux work runs on a dirty schedulerJohn Högberg
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.