Age | Commit message (Collapse) | Author |
|
* lukas/erts/dirty_trace_clean_fix/OTP-14938:
erts: Delay cleanup of removed tracer on dirty scheds
|
|
binary:bin_to_list had a poor implementation that resulted in
excessive garbage collection. binary_to_list is almost identical and
has a generally better implementation, so I've replaced
binary:bin_to_list's CIF with a thin wrapper around binary_to_list.
Granted, binary_to_list has a deprecated indexing scheme, but we're
unlikely to ever remote it entirely and it's somewhat easy to move
it to the 'binary' module later on.
|
|
It is not simple to do the correct de-allocation on
a dirty schedulers, so we just delay it until this
process runs on a normal scheduler.
|
|
Update advanced.xml with correct default for number of processes
|
|
dialyzer: Compute MD5s using the .beam file (OTP-14937)
|
|
To the best of our knowledge this was introduced since file operations
on device files/FIFO:s could hang the emulator forever back when the
emulator was single-threaded and lacked IO threads; a read operation
could block all progress preventing the write operation it waited for
from occurring.
Granted, this could still happen through starving all dirty IO
schedulers, but the same issue can arise with NFS files which we've
always allowed.
Removing this restriction also lets us remove a stat(2) call that was
added to specifically allow `/dev/null`.
|
|
* john/erts/nif-binary-iovec-fixes/OTP-14845/OTP-14931/OTP-14932:
Suggest using enif_make_new_binary when possible
Make enif_make_binary return heap binaries if possible
Expand ErlNifBinary by another word for future additions
Unconditionally transfer ownership to the created term
Tweak asserts and explain why the copy buf doesn't use the tmp obj list
Free temporary iovecs through the tmp object list
Add a helper function for attaching tmp objects to NIF environments
|
|
Change-Id: I44fe2670e36884e09600d17dd71b1e86b9ee75fa
|
|
While enif_make_binary will create heap-binaries from ErlNifBinaries
when possible now, enif_alloc_binary still allocates a Binary* off-heap
which is avoided entirely with enif_make_new_binary.
|
|
This does not avoid allocating a ProcBin since we still need to
release the binary somehow (and using the tmp obj list is slightly
slower since it's an unavoidable off-heap allocation), but it does give
us a hard limit on how long said ProcBin will live, which is a lot
better than before.
OTP-14845
|
|
When fixing OTP-14931/14932 we had to settle for a solution that
decreased performance in a few corner cases like multiple calls to
enif_make_binary, as the other options on the table required extra
fields which would have broken ABI compatibility.
This is ABI-compatible since the fields are unused and at the end.
|
|
This fixes two corner-cases:
1) We will no longer return an invalid term when a binary inspected
on environment A is used in enif_make_binary on environment B
2) A double-free in this sequence of events:
* enif_alloc_binary(size, &bin);
* enif_ioq_enq_binary(ioq, &bin, skip);
* enif_make_binary(env, &bin);
* enif_make_binary(env, &bin);
OTP-14931
OTP-14932
|
|
|
|
Attaching to a ProcBin is the fastest way to delay the release of an
already allocated Binary, but alloc_tmp_obj is a lot faster when
starting from scratch since it usually uses temp_alloc.
|
|
The EX1-MIB cannot be compiled because of the missing IMPORT of "experimental".
The other instances EX1-MIB.mib (otp/lib/snmp/examples/ex1, lib/snmp/test/snmp_test_data)
are correct. I synchronized the documentation with them.
|
|
|
|
|
|
|
|
* maint:
dialyzer: Correct a parameterized opaque types bug
|
|
* hasse/dialyzer/fix_opaque_bug/OTP-14925/ERL-565:
dialyzer: Correct a parameterized opaque types bug
|
|
Add ets:whereis/1 for resolving table names -> tid()
|
|
* maint:
stdlib: Correct a minor epp bug
|
|
* hasse/stdlib/minor_fix_epp:
stdlib: Correct a minor epp bug
|
|
|
|
|
|
|
|
* raimo/stdlib/rand-polish-stat-tests:
Decrease tolerance a wee bit
Repeat stat tests to only fail for systematic errors
Fix histogram and outlier checks
|
|
|
|
* maint:
ssh: Fix hanging engine test case on an old outdated version
|
|
* hans/ssh/cuddle_tests:
ssh: Fix hanging engine test case on an old outdated version
|
|
OpenSSL 1.0.1s-freebsd 1 Mar 2016
|
|
* maint:
Updated OTP version
Prepare release
ssh: Add option save_accepted_host
ssh: No error message for signal kill
ssh: Dont repeat supervisor defaults in map fields
ssh: Move starting of channel child to ssh_channel_sup
ssh: Test case for sup tree when shell server proc times out
Conflicts:
OTP_VERSION
|
|
* maint-20:
Updated OTP version
Prepare release
ssh: Add option save_accepted_host
ssh: No error message for signal kill
ssh: Dont repeat supervisor defaults in map fields
ssh: Move starting of channel child to ssh_channel_sup
ssh: Test case for sup tree when shell server proc times out
|
|
|
|
|
|
The previous mechanism was based on the core file which
meant that for every module in the PLT, we had to fetch
its .beam file, retrieve Erlang AST, compile that down
to core, serialize it into a binary and then get its MD5.
In a project with stdlib, kernel, elixir and a small
application in the PLT, relying only on the .beam sped
up --check_plt from 10s to 0.8s.
|
|
|
|
|
|
|
|
* hans/ssh/limit_knownhosts/OTP-14935:
ssh: Add option save_accepted_host
|
|
* hans/ssh/no_error_for_kill/OTP-14930:
ssh: No error message for signal kill
|
|
* hans/ssh/supervisor_timeout/OTP-14907:
ssh: Dont repeat supervisor defaults in map fields
ssh: Move starting of channel child to ssh_channel_sup
ssh: Test case for sup tree when shell server proc times out
|
|
|
|
The bug was introduced in 87a0af4 (R18).
|
|
Optimize non-strict equality check of binaries differing in size
|
|
|
|
* john/runtime_tools/fix-sysinfo-to-file-formatting:
Fix regression introduced in d468fcbb / OTP-14816
|
|
|
|
|
|
See also https://bugs.erlang.org/browse/ERL-565.
To avoid loops, erl_types:t_is_subtype checks for equality using
unopaqued types, but in (at least) one case something is lost:
This fix makes sure that when forwarding arguments in dataflow, types
with different parameters but equal when unopaqued are considered
different.
For example, dict:dict(0, {}) and dict:dict(0, []) are equal when
unopaqued (due to how dict(_, _) is declared in module dict), but
should be considered different when forwarding args.
|