Age | Commit message (Collapse) | Author |
|
Fetch and present arity in the *xref* window (unless too many hits).
If we are reasonably sure which definition the user wants to go to
then jump there directly instead of popping to the *xref* window.
|
|
Signed-off-by: Sergei Trofimovich <[email protected]>
|
|
Fabio Coatti reported elixir build failure in https://bugs.gentoo.org/681778.
The minimal reproducer looks like that (from otp git tree):
$ ./configure CFLAGS='-O2 -flto' LDFLAGS='-O2 -flto=8'
$ make
$ ERL_TOP=$PWD \
PATH=$ERL_TOP/bin:$PATH \
\
bin/erl \
\
-noshell -eval 're:replace("a","b","c",[{return,list}]).' \
-s erlang halt
{"init terminating in do_boot",{badarg,[{re,replace,["a","b","c",[{return,list}]],
[{file,"re.erl"},{line,362}]},
{erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,680}]},
{init,start_it,1,[]},
{init,start_em,1,[]},
{init,do_boot,3,[]}]}}
init terminating in do_boot ({badarg,[{re,replace,[[_],[_],[_],[_]],[{_},{_}]},
{erl_eval,do_apply,6,[{_},{_}]},{init,start_it,1,[]},{init,start_em,1,[]},{init,do_boot,3,[]}]})
Crash dump is being written to: erl_crash.dump...done
The failure happens in libpcre2 where stack overflow is mis-identified
at function entry of
erts_pcre_compile2()
compile_regex()
if (PUBL(stack_guard) != NULL && PUBL(stack_guard)())
{
*errorcodeptr= ERR85;
return FALSE;
}
The stack "overflow" detection happens in
thr_wrapper()
ethr_set_stacklimit__()
because the stack usage code relies on the fact that ethr_set_stacklimit__()
and similar functions don't get inlined into callers for stack growth
measurement.
Before the change inlining avoidance was achieved by putting functions
into standalone translation units. LTO makes this technique inefficient.
The change marks functions explicitly as __attribute__((__noinline__)) on gcc.
Reported-by: Fabio Coatti
Bug: https://bugs.gentoo.org/681778
Signed-off-by: Sergei Trofimovich <[email protected]>
|
|
|
|
|
|
* sverker/process_info-reductions-fix/OTP-15709:
erts: Fix bug in process_info(reductions)
erts: Use ptr_val for pointer in gc msg copy
|
|
'john/kernel/compressed-file-read-degradation/OTP-15706/ERIERL-336' into maint-21
* john/kernel/compressed-file-read-degradation/OTP-15706/ERIERL-336:
erl_tar: Use read_ahead when reading compressed tar files
kernel: Fix performance regression on reading compressed files
|
|
* john/erts/seq_trace-sigq-clearing/OTP-15704:
erts: Handle all signal types when clearing seq_trace token
|
|
Change-Id: I6956eb9c7036cfe72bb1b8cb3e02e22bd71c4c36
|
|
Set the upper limit of the retransmission timeout to 60 seconds
instead of 60 milliseconds.
Change-Id: I17168a015f352d2526935ea77a8aea686944ebcd
|
|
|
|
* sverker/process_info-reductions-fix/OTP-15709:
erts: Fix bug in process_info(reductions)
erts: Use ptr_val for pointer in gc msg copy
|
|
|
|
* kjell/stdlib/map_hash_bug/OTP-15707:
Fix out of memory bug in the implementation of maps
|
|
This commit fixes a bug that could cause a crash or memory usage to
grow until the machine ran out of memory when adding a key-value pair
to a map. This could happen when inserting a new key-value pair with a
key K1 containing a binary B1 into a map M having a key K2 with a
binary B2 if the following conditions were met:
* size(B1) >= 4294967296
* size(B2) >= 4294967296
* size(M) >= 32
* (size(B1) rem 4294967296) == (size(B2) rem 4294967296)
* the first (size(B1) rem 4294967296) bytes are the same both in B1
and B2
* substituting B1 in K1 with B2 would result in a term with the same
value as K2
The root cause of the bug is that the map implementation only hashed
the first (X modulo 4294967296) bytes of binaries so that different
binaries could get hashed to the same hash value independently of the
hash seed.
|
|
|
|
|
|
'john/kernel/compressed-file-read-degradation/OTP-15706/ERIERL-336' into maint
* john/kernel/compressed-file-read-degradation/OTP-15706/ERIERL-336:
erl_tar: Use read_ahead when reading compressed tar files
kernel: Fix performance regression on reading compressed files
|
|
tty: document ^] keystroke
|
|
|
|
There's no way to create the file in question, so we may as well
skip the test.
|
|
|
|
|
|
* ingela/ssl/test-cuddle:
ssl: Correct test case
ssl: Remove test cases from ssl_basic_SUITE
ssl: Remove basic test group from ssl_to_openssl_SUITE
|
|
|
|
|
|
|
|
Optimization to concatenate small user data packages recived
closely after each other has invalidated assumptions in the test case.
|
|
The test are moved to ssl_cipher_suite_SUITE
|
|
This group has started to fail as our default has diverged from OpenSSL
defaults and we are not really interested in testing OpenSSL defaults.
|
|
returning incorrect result as
* current process might not be RUNNING in which case REDS_IN
is actually used as def_arg_reg[5]
* FCALLS might not have been swapped out
* the SAVED_CALLS case was wrong and returned number of reds left
|
|
Cherry-pick: 3d7d66b84b69f3eb42e8bcd8dc510b6676e31cac
Without this fix asserts would trigger in debug build
but nothing else would break.
|
|
* john/erts/remove-destructive-bs_get_binary2/ERL-901:
erts: Remove unsafe bs_get_binary2 optimization from loader
|
|
The core_parse.hrl can be used in applications with the
+warn_untyped_record compiler flag.
|
|
|
|
* bjorn/compiler/cuddle-with-tests:
Verify the highest opcode for the r21 test suites
Add test_lib:highest_opcode/1
sys_core_fold: Simplify case_expand_var/2
beam_validator: Remove uncovered lines in lists_mod_return_type/3
Cover return type determination of lists functions
|
|
Jumping around in a compressed file is nowhere near as cheap as
for uncompressed files, as it requires reading and decompressing
up until the desired position. Using read_ahead will improve
performance slightly.
|
|
An internal buffer size was too small, causing a considerable
performance degradation compared to OTP 20.
|
|
|
|
|
|
This is a simplistic distribution protocol module for
encrypted distribution using a shared secret and only
the crypto module, and AEAD ciphers.
It is intended to be a benchmark reference for how fast
encrypted distribution may get.
How secure it would be and also how useful, for actual production use,
remains to be investigated.
|
|
* ingela/inets/test-cuddle:
inets: Check ipv6 support with ct:require
|
|
|
|
* maint:
|
|
* john/erts/seq_trace-sigq-clearing/OTP-15704:
erts: Handle all signal types when clearing seq_trace token
|
|
A load-time optimization assumed that match contexts had no further
uses when a bs_get_binary2 overwrote the match context's register,
and figured it would be safe to reuse the match context's memory
for the resulting binary.
This is no longer safe as of OTP 22, as a match context may be
reused after being passed to another function.
|
|
|
|
* john/erts/seq_trace-sigq-clearing/OTP-15704:
erts: Handle all signal types when clearing seq_trace token
|
|
* john/compiler/fix-type-opt-no-return/ERL-897:
compiler: Fully disable no_return optimizations in try blocks
|
|
Fix unsafe optimization made by the loader
|