Age | Commit message (Collapse) | Author |
|
to maintain consistency of the trees during yielding
and by that avoid problems with test inspection like
erts_debug:get_internal_state(node_and_dist_references).
|
|
bjorng/bjorn/compiler/fix-receive-bug/ERL-1022/OTP-15982
Fix compiler crash when compiling some receive statements
|
|
The compiler would crash when compiling the following code:
do(Acc) ->
receive
{Pid, abc} ->
ok;
{Pid, []} ->
ok;
{Pid, _Res} ->
exit(_Res)
end,
do([Pid | Acc]).
The last clause that always raises an exception would confuse the
compiler so that it would think that the `receive` statement was at the
end of the function and it would generate incorrect code for the `do/1`
call following the `receive`.
https://bugs.erlang.org/browse/ERL-1022
|
|
* john/erts/fix-instrument-allocations-race/OTP-15983:
erts: Fix crash in instrument:allocations/0-1
|
|
* john/erts/bs_get_binary2-heap-binaries/OTP-15977:
erts: Create heap binaries in binary:split/2-3
erts: Create heap binaries in binary_part/2-3
erts: Create heap binaries in split_binary/2
erts: Create heap binaries in bs_get_binary2
erts: Remove size check in bs_start_match
erts: Disallow binaries whose size in bits exceeds UWORD_MAX
|
|
The current carrier list was read when the allocator wasn't locked,
crashing the emulator if a block scan raced with a carrier
allocation.
|
|
Fix documentation for erlang:is_map_key/2
|
|
Correct documentation on dump_log_write_threshold default value
|
|
* upstream/pr/2201:
Handle clicking links more than once in Observer's "Expanded term"
OTP-15980
|
|
|
|
|
|
|
|
ErlSubBin is a large struct that often dwarfs the region of memory
it points at, and it's common for them to refer to a ProcBin which
must be kept around as long as the SubBin lives, using up even more
heap space and keeping the referenced binary alive regardless of
how small the sub-binary is.
|
|
The size check is redundant now that all binaries are guaranteed
to be small enough that their size in bits fits into a word.
|
|
These have never worked in binary matching (including sub-binaries
extracted from them) so it's hard to justify their existence. They
also make a future migration of binary sizes from bytes to bits
problematic, so we may as well change it ahead of time.
This is potentially incompatible on 32-bit platforms where a NIF
or driver could allocate 512MB+ binaries, but allocations that
large should be expected to fail anyway.
|
|
* dgud/observer/fix-darkmode/OTP-15916:
observer: Fixes for html viewers
observer: Support darkmode gui
|
|
* dgud/mnesia/sticky-bug/ERL-768/OTP-15979:
mnesia: Bump protocol version
mnesia: Introduce sync_asym_trans protocol
|
|
* dgud/mnesia/add_table_copy_deadlock/ERL-872/OTP-15933:
mnesia: Fix deadlock caused by add_table_copy
|
|
|
|
* john/erts/fun_to_list-escaping/OTP-15975/ERL-1009:
erts: Escape atoms in erlang:fun_to_list/1
|
|
Repository grows too large.
|
|
Replace deprecated <tt> with <code>
|
|
So we can see in travis which applications or options that is disabled,
(and/or other config problems)
|
|
So we know that libwxgtk3.0 exists.
|
|
* lukas/os_mon/sscanf_Lu/OTP-15974:
os_mon: Fix sscanf to use %llu instead of gnu specific %Lu
|
|
|
|
For instance musl does not recognize the %L modifier.
|
|
Fix syntax error in logger_disk_log_h.xml
|
|
|
|
erts: Do not use named no_cpuid label in asm
|
|
* bjorn/compiler/fix-stack-init/ERL-1017/OTP-15968:
Ensure that the stack slots are initialized when matching maps
|
|
When matching a map, the compiler could fail to generate code that
would initialize all stack slots (Y registers) properly. Here is a
general outline of code that *could* cause this problem:
foo(Key, Map) ->
Res = case Map of
#{Key := Val} ->
%% Do something with Val here.
.
.
.
#{} ->
[]
end,
%% The stack slot for Val might not have been initialized
%% here if the key was not present in the map.
.
.
.
%% Use Res.
.
.
.
The code generator would wrongly assume that the map matching would
always initialize the stack slot, and if nothing else happened to
force that stack slot to be initialized, it would remain
uninitialized, which would likely crash the runtime system at the next
garbage collection.
`beam_validator` is supposed to find these kind of problems, but a bug
in `beam_validator` prevented it from detecting this problem.
https://bugs.erlang.org/browse/ERL-1017
|
|
into maint
* john/compiler/fix-delayed-type-inference/OTP-15954/ERL-995:
beam_validator: Values referenced by other values must be merged
|
|
bjorng/bjorn/compiler/fix-slow-beam_ssa_dead/ERL-1014/OTP-15966
Avoid extremely long compilation times for huge functions
|
|
https://github.com/bjorng/otp into maint
OTP-15970
* 'bjorn/compiler/length-misuse/ERL-1013' of https://github.com/bjorng/otp:
Eliminate a crash in the type optimizer pass
|
|
https://github.com/bjorng/otp into maint
OTP-15969
* 'bjorn/compiler/fix-no_type_opt/ERL-997' of https://github.com/bjorng/otp:
Fix compiler crash when compiling with +no_type_opt
|
|
|
|
|
|
Compiling this example takes less than a second for OTP 21:
-define(B, {?A,?A,?A,?A,?A}).
-define(C, {?B,?B,?B,?B,?B}).
-define(D, {?C,?C,?C,?C,?C}).
-define(E, {?D,?D,?D}).
f() -> ?E = foo:bar().
The compilation time for OTP 22 is about 10 seconds. Most of the
time is spent in `beam_ssa_dead`.
This commit introduces several optimizations to bring the compilation
time down to about a second.
The most important of those optimizations is limiting the effort spent
searching forward for a joining point for the success and failure
labels for a two-way branch. This change is helped by the change of
representation of variable sets from `ordsets` to `cerl_sets`.
https://bugs.erlang.org/browse/ERL-1014
|
|
|
|
* bjorn/compiler/fix-unsafe-sharing/OTP-15963:
Fix unsafe code sharing
|
|
|
|
* raimo/inherit-listen-options/OTP-15824:
The linger option is not transferred on *BSD
|
|
|
|
To provide more info when analyzing failed test cases
an "event" queue (of max size 10) is added to both the
test MG and MGC. This event queue is printed when the
process exist.
Also, the multi_ack_timeout is wonky, so add anther
platform (sunos) to the skip list...
|
|
* ingela/ssl/test-enhancment:
ssl: Extend tests
ssl: Fix better OpenSSL support in test framework
ssl: Avoid broken ALPN/NPN renegotiation in OpenSSL
|
|
|
|
|
|
All these test work fine with current OpenSSL master
|
|
|