Age | Commit message (Collapse) | Author |
|
Deep hashing should ignore the three lowest bits of the level.
|
|
|
|
|
|
|
|
|
|
|
|
to use an iterator instead of foreach with callback.
Will be easier to make yielding.
|
|
|
|
|
|
A lightweight stack that can be used to store any type.
PUSH and POP return pointers into stack slots.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to use a common struct hashmap_doer_state.
|
|
|
|
|
|
|
|
|
|
Called with a signed int 'sz' argument on 64 bit
would cause sign extension 'sz' was larger than 33554431.
|
|
|
|
|
|
|
|
|
|
|
|
Conflicts:
erts/emulator/Makefile.in
erts/emulator/beam/bif.tab
erts/emulator/beam/erl_gc.c
erts/emulator/beam/erl_gc.h
erts/emulator/beam/erl_printf_term.c
erts/emulator/beam/erl_term.c
erts/emulator/beam/erl_term.h
|
|
* nox/maps-match_specs-fixes/OTP-12270:
erts: Strengthen maps match spec compilation tests
Properly collect variables in match specs with maps
Fix compilation of match specs with maps
|
|
Conflicts:
erts/emulator/hipe/hipe_bif0.c
|
|
* mikpe/avoid-oversize-bignums:
don't leave a heap hole in erts_bs_get_integer_2
don't create oversize bignums in binary matching
OTP-12556
|
|
* egil/beam/select_val/OTP-12555:
erts: Use linear search for small select_val arrays
|
|
* egil/process_dictionary-initial-size/OTP-12535:
erts: Document option 'hpds'
erts: Enable command line argument for initial pd size
|
|
|
|
The previous compilation was just plain wrong with push/pop mismatches.
Reported-by: Björn-Egil Dahlberg
|
|
|
|
* leoliu/master:
Two minor fixes
OTP-12545
|
|
|
|
Use '+hpds size' to set initial process dictionary size for spawned processes.
|
|
* Fix documentation on $char for unicode
* Remove duplicate declaration for erts_encode_ext_dist_header_size
|
|
An extra '}' were printed in remote links.
|
|
Perfctr is a Linux kernel extension that allows programmatic access
to the performance monitoring counters found in most current CPUs.
However, development of perfctr ceased after 2010, and it cannot be
used with Linux kernels newer than 2.6.32.
Therefore the perfctr support code in the Erlang VM is effectively
dead code, so this patch removes it.
|
|
Reset p->htop in the oversize bignum error case to avoid leaving a
hole in the heap, which would crash the debug emulator.
|
|
Bignums are artifically restricted in size. Arithmetic and logical
operations check the sizes of resulting bignums, and turn oversize
results into system_limit exceptions.
However, this check is not performed when bignums are constructed by
binary matching. The consequence is that such matchings can construct
oversize bignums that satisfy is_integer/1 yet don't work. Performing
arithmetic such as Term - 0 fails with a system_limit exception. Worse,
performing a logical operation such as Term band Term results in [].
The latter occurs because the size checking (e.g. in erts_band()) is
a simple ASSERT(is_not_nil(...)) on the result of the bignum operation,
which internally is [] (NIL) in the case of oversize results. However,
ASSERT is a no-op in release builds, so the error goes unnoticed and []
is returned as the result of the band/2.
This patch addresses this by preventing oversize bignums from entering
the VM via binary matching:
- the internal bytes_to_big() procedure is augmented to return NIL for
oversize results, just like big_norm()
- callers of bytes_to_big() are augmented to check for NIL returns and
signal errors in those cases
- erts_bs_get_integer_2() can only fail with badmatch, so that is the
Erlang-level result of oversize bignums from binary matches
- big_SUITE.erl is extended with a test case that fails without this
fix (no error signalled) and passes with it (badmatch occurs)
Credit goes to Nico Kruber for the initial bug report.
|
|
Conflicts:
OTP_VERSION
erts/emulator/sys/unix/sys.c
erts/vsn.mk
|
|
|
|
|
|
|
|
Closes all open socket before writing crashdump to file.
|
|
|