aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2018-12-19[socket-nif|test] Add more ttest (socket) test casesMicael Karlberg
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
2018-12-19[socket-nif|test] Add more ttest (socket and gen_tcp) test casesMicael Karlberg
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
2018-12-19[socket-nif|test] Add more ttest (socket) test casesMicael Karlberg
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
2018-12-19[socket-nif|test] Add more ttest (socket and gen_tcp) test casesMicael Karlberg
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
2018-12-19[socket-nif|test] Add more ttest (socket) test casesMicael Karlberg
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
2018-12-19[socket-nif|test] Add more ttest (socket and gen_tcp) test casesMicael Karlberg
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
2018-12-19[socket-nif|test] Add more ttest (gen_tcp and socket) test casesMicael Karlberg
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
2018-12-19[socket-nif|test] Add more ttest (gen_tcp) test casesMicael Karlberg
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
2018-12-19[socket-nif|test] Add more ttest (gen_tcp and socket) test casesMicael Karlberg
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
2018-12-19[socket-nif|test] Add more ttest (gen_tcp) test casesMicael Karlberg
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
2018-12-19[socket-nif|test] Add more ttest (gen_tcp and socket) test casesMicael Karlberg
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
2018-12-19Merge branch 'maint'Sverker Eriksson
* maint: Updated OTP version Prepare release
2018-12-19Merge tag 'OTP-20.2.0.1' into maintSverker Eriksson
=== OTP-20.2.0.1 === Changed Applications: - erts-9.2.0.1 Unchanged Applications: - asn1-5.0.4 - common_test-1.15.3 - compiler-7.1.4 - cosEvent-2.2.2 - cosEventDomain-1.2.2 - cosFileTransfer-1.2.2 - cosNotification-1.2.3 - cosProperty-1.2.3 - cosTime-1.2.3 - cosTransactions-1.3.3 - crypto-4.2 - debugger-4.2.4 - dialyzer-3.2.3 - diameter-2.1.3 - edoc-0.9.2 - eldap-1.2.3 - erl_docgen-0.7.2 - erl_interface-3.10.1 - et-1.6.1 - eunit-2.3.5 - hipe-3.17 - ic-4.4.3 - inets-6.4.5 - jinterface-1.8.1 - kernel-5.4.1 - megaco-3.18.3 - mnesia-4.15.2 - observer-2.6 - odbc-2.12.1 - orber-3.8.4 - os_mon-2.4.4 - otp_mibs-1.1.2 - parsetools-2.1.6 - public_key-1.5.2 - reltool-0.7.5 - runtime_tools-1.12.3 - sasl-3.1.1 - snmp-5.2.9 - ssh-4.6.3 - ssl-8.2.3 - stdlib-3.4.3 - syntax_tools-2.1.4 - tools-2.11.1 - wx-1.8.3 - xmerl-1.3.16 * tag 'OTP-20.2.0.1': Updated OTP version Prepare release
2018-12-19Prepare releaseSverker Eriksson
2018-12-18[socket-nif|test] Add more ttest (gen_tcp) test casesMicael Karlberg
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
2018-12-18Merge branch 'maint'Sverker Eriksson
2018-12-18Merge branch 'sverker/big-band-bug/ERL-804/OTP-15487' into maintSverker Eriksson
* sverker/big-band-bug/ERL-804/OTP-15487: erts: Fix bug in 'band' of two negative numbers, one big
2018-12-18Merge branch 'sverker/fix-atomics-get-large-unsigned/PR-2061/OTP-15486' into ↵Sverker Eriksson
maint * sverker/fix-atomics-get-large-unsigned/PR-2061/OTP-15486: erts: Fix possible heap corruption getting atomics
2018-12-18Merge branch 'sverker/erts/prim_file-perm-own-bigendian/OTP-15485' into maintSverker Eriksson
* sverker/erts/prim_file-perm-own-bigendian/OTP-15485: erts: Fix warning and potential big-endian-bug in prim_file
2018-12-18[socket-nif|test] Add test case based on the ttest modulesMicael Karlberg
Added a (first) test case based on the ttest modules. OTP-14831
2018-12-18Merge pull request #2053 from bjorng/bjorn/erts/trapping-length/OTP-15439Björn Gustavsson
Make length/1 yielding
2018-12-18Make length/1 yieldingBjörn Gustavsson
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.
2018-12-17Add assertions to forker and erl_child_setupSverker Eriksson
2018-12-17erts: Fix bug in 'band' of two negative numbers, one bigSverker Eriksson
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.
2018-12-17Use microops for BIFsMichał Muskała
This allows bif1/2/3 to share the main part of the code. The price is that we always need to copy all three temporary registers when error handling in bodies, but that should be infrequent. Additionally it makes it a bit harder to read the disasembly since now the arguments to BIFs are in the reverse order.
2018-12-17Merge pull request #2057 from michalmuskala/mm/missing-annoBjörn Gustavsson
Add missing annotations in instrs.tab
2018-12-14[socket-nif|test] Add a "global" loggerMicael Karlberg
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
2018-12-14[socket-nif|test] Correct the (api) connect timeout test caseMicael Karlberg
Assumed the wrong success value ({ok, _} instead of ok) for the api-to-connect-tcp test case. OTP-14831
2018-12-14[socket-nif] Message interface between socket.erl and nif updatedMicael Karlberg
Previously the "message interface" between the functions in socket.erl and the nif-code (socket_nif.c) was "ad hoc". This has now been changed so that we have a unified message {'$socket', SockRef | undefined, Tag, Info} This also has the added advantage of preparing the code for when we start using the new select-fucntions (with which its possible to specify your own message). This will be used in order to get around our eterm "leak" (we will use a simple counter, maintained in the nif, instead of the [Recv|Send|Acc]Ref we generate in the erlang code today. OTP-14831
2018-12-14Merge branch 'maint'Lukas Larsson
2018-12-14Merge branch 'lukas/erts/fix_lit_msg_copy_in_gc' into maintLukas Larsson
* lukas/erts/fix_lit_msg_copy_in_gc: erts: Use ptr_val for pointer in gc msg copy
2018-12-13erts: Fix possible heap corruption getting atomicsTomas Abrahamsson
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.
2018-12-13erts: Fix warning and potential big-endian-bug in prim_fileSverker Eriksson
for set_permission and set_owner.
2018-12-13Merge branch 'maint'Sverker Eriksson
2018-12-13Merge branch 'sverker/add-since-doc/OTP-15460' into maintSverker Eriksson
* sverker/add-since-doc/OTP-15460: Fill in since for multi-clause functions in erlang.erl Fix since attribute for troubled function docs Add empty 'since' attribute for old modules and functions Add since attribute to dtd Add "since" attributes in xml for new functions and modules erl_docgen: Generate "since" OTP version in html erl_interface: Fix doc for return type 'struct hostent'
2018-12-13Fill in since for multi-clause functions in erlang.erlSverker Eriksson
The ones marked since="?" are unknown (but newer than R13B03) monitor/2 port_info/2 process_flag/2 statistics/1 system_flag/2 system_info/1 trace_pattern/3
2018-12-13Merge branch 'maint'Sverker Eriksson
2018-12-13Merge PR-2050 from legoscia/atomics-counters-typosSverker Eriksson
Fix typos in atomics.xml and counters.xml
2018-12-13erts: Fix seq_trace:reset_trace dirty gc bugLukas Larsson
When seq_trace:reset_trace could be called while a process was doing a dirty GC. This triggered a race where all signals was moved to the internal signal queue during the GC which in turn caused the a heap overrun problem. This fix makes it so that the main and msgq lock are taken before the clear. This will make sure that we are allowed to do the clear.
2018-12-13erts: Use sys_memcpy in copy_one_fragLukas Larsson
2018-12-13Add missing annotations in instrs.tabMichał Muskała
Dispatching a function and return never use the next instruction. It's unlikely for raw_raise to use the next instruction.
2018-12-13Merge pull request #2047 from bjorng/bjorn/erts/eliminate-gc-bifs/OTP-15440Björn Gustavsson
Simplify implementation of GC BIFs
2018-12-13Simplify GC BIFsBjörn Gustavsson
Summary: This commit simplifies the implementation of the "GC BIFs" so that they no longer need to do a garbage collection, removing duplicate code for all GC BIFs in the runtime system, as well as potentially reducing the size of the loaded BEAM code by using shorter instructions calling those BIFs. A GC BIF is a guard BIF that will do a garbage collection if it needs to build anything on the heap. For example, `abs/1` is a GC BIF because it might need to allocate space on the heap (if the result is a floating point number or the resulting integer is a bignum). Before R12, a guard BIF (such as `abs/1`) that need to allocate heap space would allocate outside of process's main heap, in a heap fragment. GC BIFs were introduced in R12B to support literals. During garbage collection it become necessary to quickly test whether a term was a literal. To make the check simple, guards BIFs were no longer allowed to create heap fragments. Instead GC BIFs were introduced. In OTP 19, the implementation of literals was changed to support storing messages in heap fragments outside of the main heap for a process. That change again made it allowed for guard BIFs to create heap fragments when they need to build terms on the heap. It would even be possible for the guard BIFs to build directly on the main heap if there is room there, because the compiler assumes that a new `test_heap/2` instruction must be emitted when building anything after calling a GC BIF. (We don't do that in this commit; see below.) This commit simplifies the implementation of the GC BIFs in the runtime system. Each GC BIF had a dual implementation: one that was used when the GC BIF was called directly and one used when it was called via `apply/3`. For example, `abs/1` was implemented in `abs_1()` and `erts_gc_abs_1()`. This commit removes the GC version of each BIF. The other version that allocates heap space using `HAlloc()` is updated to use the new `HeapFragOnlyAlloc()` macro that will allocate heap space in a heap fragment outside of the main heap. Because the BIFs will allocate outside of the main heap, the same `bif` instructions used by nonbuilding BIFs can be used for the (former) GC BIFs. Those instructions don't use the macros that save and restore the heap and stack pointers (SWAPOUT/SWAPIN). If the former GC BIFs would build on the main heap, either new instructions would be needed, or SWAPOUT/SWAPIN instructions would need to be added to the `bif` instructions. Instructions that call the former GC BIFs don't need the operand that specifies the number of live X registers. Therefore, the instructions that call the BIFs are usually one word shorter.
2018-12-13Merge branch 'bjorn/erts/remove-faulty-assertion'Björn Gustavsson
* bjorn/erts/remove-faulty-assertion: erl_bif_list: Remove faulty assertion
2018-12-13Merge branch 'maint'Björn Gustavsson
* maint: Fix reading beyond end of bignum in integer squaring
2018-12-13Fix reading beyond end of bignum in integer squaringBjörn Gustavsson
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.
2018-12-12Add empty 'since' attribute for old modules and functionsSverker Eriksson
2018-12-11Add "since" attributes in xml for new functions and modulesSverker Eriksson
introduced after OTP_R13B03.
2018-12-11Fix typos in atomics.xml and counters.xmlMagnus Henoch
2018-12-11Merge branch 'sverker/erts/ets-debug-test-cuddle'Sverker Eriksson
* sverker/erts/ets-debug-test-cuddle: erts: Fix volatile ets test case failures on debug VM