Age | Commit message (Collapse) | Author |
|
* lukas/doc/extend-secure-distr-warn/OTP-14425:
otp: Extend secure distribution docs warnings
|
|
Warnings have been added to the relevant documentation
about not using un-secure distributed nodes in exposed
environments.
|
|
* lukas/erts/etp-processes-ports-optimization:
erts: Optimize etp-processes and etp-ports
|
|
* sverker/enif_select-testing:
erts: Fix nif_SUITE:monitor_frenzy for threadless
erts: Improve message flush in nif_SUITE
erts: Test monitor resource destructor from thread
|
|
|
|
Pass number of expected messages in order to
wait longer for messages (for slow machines)
while not wasting test time waiting for nothing.
|
|
which is scheduled on non-smp VM.
|
|
Not calculating the max, table and invalid addresses
each loop speeds up iterating through the processes list
by about 5x.
|
|
* sverker/nif-docs:
erts: Improve erl_nif docs
|
|
OTP-14152
* rickard/ds-runqs:
Make statistics/1 aware of dirty run-queues and tasks
|
|
|
|
* raimo/erts/use-all-bytes-in-abstract-addresses/OTP-14305:
Do not zero terminate Linux abstract addresses
|
|
|
|
|
|
* bjorn/erts/refactor-beam_makeops:
Allow multiple types per argument for specific instructions
Modernize subroutine calls by removing '&'
Eliminate the -gen_dest macro flag
|
|
* bjorn/cuddle-with-tests:
code_SUITE: Remove unused functions
Eliminate warning for variable 'Config' being unused
compile_SUITE: Don't create a directory called 'core'
Don't crash in end_per_testcase/2 in code_SUITE:on_load_embedded/1
|
|
Inroduce syntactic sugar so that we can write:
get_list xy xy xy
instead of:
get_list x x x
get_list x x y
get_list x y x
get_list x y y
get_list y x x
get_list y x y
get_list y y x
get_list y y y
|
|
In Perl 5, '&' on direct subroutine calls are optional.
|
|
Instructions that take a 'd' argument needs a -gen_dest flag in their
macros. For example:
%macro:put_list PutList -pack -gen_dest
put_list s s d
-gen_dest was needed when x(0) was stored in a register, since it is
not possible to take the address of a register. Now that x(0) is stored
in memory and we can take the address, we can eliminate gen_dest.
|
|
|
|
|
|
Simplify building a lock-counting emulator
|
|
* lukas/erts/trace_recv_esdp_bug/OTP-14411:
erts: the esdp is not always available in matchspec
|
|
enif_monitor_process() typo
|
|
erts: Remove old unused functions
|
|
The functions have been found using: https://github.com/caolanm/callcatcher
|
|
erts: Make erts_schedule_proc2port_signal static
|
|
Add the option -emu_type to start an emulator of a certain
type. For exampe, "-emu_type lcnt" will start beam.lcnt.smp.
Any string will be accepted after -emu_type. If there is no
corresponding emulator, there will be an error similar to:
erlexec: The emulator '.../bin/x86_64-unknown-linux-gnu/beam.foo.smp' does not exist.
On Windows, there is an undocumented option "-debug". Remove
that option, because -emu_type can be used instead.
|
|
"./configure --enable-lock-counter" would modify the behavior
of the default emulator (usually SMP).
To make lock counting more accessible, change --enable-lock-counter
to build an additional emulator in the same way as:
(cd erts/emulator && make lcnt)
(The next commit will make it easier to start the built lock-counter
emulator.)
|
|
|
|
erlang:get_stacktrace/0 returns the stacktrace for the latest
exception. The problem is that the stacktrace is kept until the next
exception occurs. If the last exception was a 'function_clause' or a
'badarg', the arguments for the call are also kept forever. The
arguments can be terms of any size (potentially huge).
In a future release, we would like to only allow
erlang:get_stacktrace/0 from within a 'try' expression. That would
make it possible to clear the stacktrace when the 'try' expression is
exited.
The 'catch' expression has no natural end where the stacktrace could
be cleared. The stacktrace could be cleared at the end of the function
that the 'catch' occurs in, but that would cause problems in the
following scenario (from real life, but simplified):
try
...
catch _:_ ->
io:format(...),
io:format("~p\n", [erlang:get_stacktrace()])
end.
%% In io.erl.
format(Fmt, Args) ->
Res = case ... of
SomePattern ->
catch...
...;
SomeOtherPattern ->
%% Output the formatted string here
...
end,
clear_stacktrace(), %% Inserted by compiler.
Res.
The call to io:format() would always clear the stacktrace before
it could be retrieved.
That problem could be solved by tightning the scope in which the
stacktrace is kept, but the rules for how long erlang:get_stacktrace/0
would work would become complicated.
Therefore, the solution we suggest for a future major release of
OTP is that erlang:get_stacktrace/0 will return [] if it is called
outside the 'catch' part of a 'try' expression.
To help users prepare, introduce a warning when it is likely that
erlang:get_stacktrace/0 will always return an empty list, for example
in this code:
catch error(foo),
Stk = erlang:get_stacktrace()
or in this code:
try Expr
catch _:_ -> ok end,
Stk = erlang:get_stacktrace()
|
|
* sverker/fix-lc-with-lcnt:
erts: Add minor lock optimization for lcnt
erts: Unbreak --enable-lock-checking --enable-lock-counter
|
|
* maint:
Updated OTP version
Prepare release
|
|
* maint-18:
Updated OTP version
Prepare release
Conflicts:
erts/doc/src/notes.xml
|
|
=== OTP-18.2.4.0.1 ===
Changed Applications:
- erts-7.2.1.1
Unchanged Applications:
- asn1-4.0.1
- common_test-1.11.2
- compiler-6.0.2
- cosEvent-2.2
- cosEventDomain-1.2
- cosFileTransfer-1.2
- cosNotification-1.2
- cosProperty-1.2
- cosTime-1.2
- cosTransactions-1.3
- crypto-3.6.2
- debugger-4.1.1
- dialyzer-2.8.2
- diameter-1.11.1
- edoc-0.7.17
- eldap-1.2
- erl_docgen-0.4.1
- erl_interface-3.8.1
- et-1.5.1
- eunit-2.2.12
- gs-1.6
- hipe-3.14
- ic-4.4
- inets-6.1.1
- jinterface-1.6.1
- kernel-4.1.1
- megaco-3.18
- mnesia-4.13.2
- observer-2.1.1
- odbc-2.11.1
- orber-3.8
- os_mon-2.4
- ose-1.1
- otp_mibs-1.1
- parsetools-2.1.1
- percept-0.8.11
- public_key-1.1
- reltool-0.7
- runtime_tools-1.9.2
- sasl-2.6.1
- snmp-5.2.1
- ssh-4.2.1
- ssl-7.2
- stdlib-2.7
- syntax_tools-1.7
- test_server-3.9.1
- tools-2.8.2
- typer-0.9.10
- webtool-0.9
- wx-1.6
- xmerl-1.3.9
* tag 'OTP-18.2.4.0.1':
Updated OTP version
Prepare release
Conflicts:
OTP_VERSION
erts/vsn.mk
otp_versions.table
|
|
|
|
* rickard/rq-len/OTP-13201:
Fix testcase
Light weight statistics of run queue lengths
|
|
* siri/system/testcuddle:
Add typer to excluded applications in upgrade_SUITE
|
|
* sverker/ets-select-replace-const:
stdlib: Add examples for ets:select_replace docs
erts: Fix ets:select_replace with {const, NewTuple}
|
|
Enable ets:select_replace to do a generic single object
compare-and-swap operation of any ets-tuple using
a matchspec like this:
[{Old, [], [{const, New}]}]
The only exception when this does not work is if the key
contains maps or atoms looking like variables (like '$1').
|
|
|
|
* sverker/is_module_native-trace-bug/OTP-14390:
erts: Fix code:is_module_native for local trace
erts: Move and rename erts_is_native_break()
|
|
|
|
both together.
Broken in OTP-20.0-rc1 by 7d161f5b475575bd79bd90977b3a79334a8ec658.
|
|
This happens for instance when a receive_trace is run in the
sys_msg_dispatcher thread when the trace_delivered trace message
is traced.
|
|
This reverts commit dc57404252c47520f352834ad9be45ad684f96c9.
|
|
p->fvalue will be set by BIFs that generate exceptions
(such as throw/1), and it will not be cleared before another
exception is generated. Potentially, p->fvalue may contain a
huge term (e.g. after throw(HugeTerm)) which will be kept in
the heap.
We can shorten the lifetime of f->value by clearing it in
the instructions that handle catches: catch_end and try_end.
That is safe because BEAM code will never access p->fvalue.
If BEAM code needs to rethrow an exception it will use a
reference to the value passed in an X register.
The reason that p->fvalue must not be cleared already in
handle_error() is that native code trap handlers will use
it. (See the comment before handle_error() and the comment
at the end of handle_error() in beam_emu.c for some more
information about exception handling.)
|
|
|
|
|
|
Local trace on first function in module
made code:is_module_native/1 return true.
Use new erts_is_function_native() to make a proper check.
|