Age | Commit message (Collapse) | Author |
|
* rickard/misc-ds:
Replace enif_is_on_dirty_scheduler() with enif_thread_type()
No GC on dirty IO schedulers
|
|
|
|
* zandra/test_server/unmatched_returns/OTP-13345:
vts - Fix unmatched_return warnings
test_server_sup - Fix unmatched_return warnings
test_server_node - Fix unmatched_return warnings
test_server_io - Fix unmtached_return warnings
test_server_gl - Fix unmatched_return warnings
test_server_ctrl - Fix unmatched_return warnings
test_server - fix unmatched_return warnings
remove unused purify functions
|
|
|
|
* egil/lttng-cuddle-tests:
erts: Cuddle with lttng_SUITE
runtime_tools: Cuddle with t_receive tests
|
|
* rickard/dirty_nif_SUITE-win-fix:
Fix windows
|
|
* vinoski/dirty_process_main/OTP-13123:
Add dirty_process_main function
|
|
Dirty schedulers only execute NIFs, so having them execute the full
process_main function isn't necessary. Add dirty_process_main for
dirty schedulers to execute instead.
Add erts_pre_dirty_nif(), called when preparing to execute a dirty
nif.
Add more dirty NIF tests to verify that activities requiring the
process main lock can succeed when the process is executing a dirty
NIF.
|
|
|
|
|
|
* egil/erts/cuddle-tests:
stdlib: Fix small inconsistencies in ets_SUITE
stdlib: Strengthen or relax test cases
kernel: Don't test negative time values in file info
erts: Fix free_mem calculation in bs_construct tests
|
|
Removed in f9cb80861f169743 when changed impl from C to Erlang.
But seems they are needed to keep dialyzer tests happy.
Also improved bif_SUITE:shadow_comments to include all exported
in module erlang, not just the "snifs".
...which detected that apply/2 was missing Shadowed comment as well.
|
|
|
|
|
|
* rickard/rm-mqd-mixed/OTP-13366:
Remove the 'message_queue_data' option 'mixed'
|
|
* lukas/erts/tracing/tracer-move-extra-to-map/OTP-10267:
runtime_tools: Fix erl_tracer testcases
runtime_tools: Fix documentation for dbg:p
erts: Move tracer SecondTraceTerm to Opts map
|
|
For -start_epmd, check that the node starts properly and that we can
ping it.
For -epmd_module, start two nodes that can communicate only because we
supply the correct port number through a command line argument.
|
|
|
|
if too long.
|
|
* egil/erts/fix-purge_code-literals:
erts: Refactor ERTS_MSG_COMBINED_HFRAG to heap fragment
erts: Copy literals in messages on module purge
erts: Add testcase for purge of literals
|
|
The extra trace data has been moved to the opts map in order
for the tracer to be able to distinguish inbetween extra
trace data 'undefined' and no extra trace data. In the same
commit all opts associations have been changed so that if
the tracer should not use them, the key is left unassicated
instead of being sent to undefined. This should be give a
small performance gain and also makes the API easier to work
with.
|
|
Specifically t_copy_literals_frags/1 tries to test literals
in message heap fragments.
|
|
|
|
* bjorn/erts/cuddle-with-tests:
time_SUITE: Make consistency/1 work in any timezone
|
|
This merge is actually only some left overs.
The bulk work for hipe-amd64-code-alloc has already been
merge (without ticket number) at 42a1166b47721cd444.
|
|
|
|
* Previous free_mem calculation did not work on all platforms
* Increase test timeout for bs_construct_SUITE:huge_binary/1
|
|
* egil/erts/nif-format_term/OTP-13580:
runtime_tools: Change erts_snprintf to enif_snprintf
erts: Document enif_snprintf
erts: Add tests for enif_snprintf
erts: Add enif_snprintf
Conflicts:
erts/emulator/beam/erl_nif_api_funcs.h
|
|
time_SUITE:consistency/1 would only work in CET, which was
reasonable when the test suites were always run in Stockholm.
Nowadays it is expected that you can run the test suite in any
timezone. Therefore, only make sure that that difference between
localtime/1 and universaltime/1 is "reasonable".
|
|
|
|
* lukas/trace-fix:
erts: Only allow remove from trace_status callback
|
|
* rickard/ds-proc-exit/OTP-13123:
Add dirty_heap_access test case
Add dirty_call_while_terminated test case
Move dirty nif test cases into dirty_nif_SUITE
Add better support for communication with a process executing dirty NIF
Remove conditional dirty schedulers API
|
|
Make it so that it is only possible to remove a tracer via
returning remove from an erl_tracer. This limition is put in
place in order to avoid a lot of lock checking and taking
in various places, especially in regards to trace events
happening on dirty schedulers.
|
|
|
|
|
|
|
|
|
|
contains flags for super carrier +MMsc*
|
|
The max_heap_size process flag can be used to limit the
growth of a process heap by killing it before it becomes
too large to handle. It is possible to set the maximum
using the `erl +hmax` option, `system_flag(max_heap_size, ...)`,
`spawn_opt(Fun, [{max_heap_size, ...}])` and
`process_flag(max_heap_size, ...)`.
It is possible to configure the behaviour of the process
when the maximum heap size is reached. The process may be
sent an untrappable exit signal with reason kill and/or
send an error_logger message with details on the process
state. A new trace event called gc_max_heap_size is
also triggered for the garbage_collection trace flag
when the heap grows larger than the configured size.
If kill and error_logger are disabled, it is still
possible to see that the maximum has been reached by
doing garbage collection tracing on the process.
The heap size is defined as the sum of the heap memory
that the process is currently using. This includes
all generational heaps, the stack, any messages that
are considered to be part of the heap and any extra
memory the garbage collector may need during collection.
In the current implementation this means that when a process
is set using on_heap message queue data mode, the messages
that are in the internal message queue are counted towards
this value. For off_heap, only matched messages count towards
the size of the heap. For mixed, it depends on race conditions
within the VM whether a message is part of the heap or not.
Below is an example run of the new behaviour:
Eshell V8.0 (abort with ^G)
1> f(P),P = spawn_opt(fun() -> receive ok -> ok end end, [{max_heap_size, 512}]).
<0.60.0>
2> erlang:trace(P, true, [garbage_collection, procs]).
1
3> [P ! lists:duplicate(M,M) || M <- lists:seq(1,15)],ok.
ok
4>
=ERROR REPORT==== 26-Apr-2016::16:25:10 ===
Process: <0.60.0>
Context: maximum heap size reached
Max heap size: 512
Total heap size: 723
Kill: true
Error Logger: true
GC Info: [{old_heap_block_size,0},
{heap_block_size,609},
{mbuf_size,145},
{recent_size,0},
{stack_size,9},
{old_heap_size,0},
{heap_size,211},
{bin_vheap_size,0},
{bin_vheap_block_size,46422},
{bin_old_vheap_size,0},
{bin_old_vheap_block_size,46422}]
flush().
Shell got {trace,<0.60.0>,gc_start,
[{old_heap_block_size,0},
{heap_block_size,233},
{mbuf_size,145},
{recent_size,0},
{stack_size,9},
{old_heap_size,0},
{heap_size,211},
{bin_vheap_size,0},
{bin_vheap_block_size,46422},
{bin_old_vheap_size,0},
{bin_old_vheap_block_size,46422}]}
Shell got {trace,<0.60.0>,gc_max_heap_size,
[{old_heap_block_size,0},
{heap_block_size,609},
{mbuf_size,145},
{recent_size,0},
{stack_size,9},
{old_heap_size,0},
{heap_size,211},
{bin_vheap_size,0},
{bin_vheap_block_size,46422},
{bin_old_vheap_size,0},
{bin_old_vheap_block_size,46422}]}
Shell got {trace,<0.60.0>,exit,killed}
|
|
|
|
|
|
to obtain match specs
|
|
|
|
All 'EXIT' and monitor messages are sent from 'system'
Timeouts are "sent" from 'clock_service'
|
|
and non-call-trace.
This is the easy way out to avoid difficult locking
scenarios when accessing tracing flags on another process.
|
|
|
|
|
|
* rickard/reds-fix/master/OTP-13512:
Ensure correct reduction counting
|
|
|
|
* egil/erts/doc-lttng-beam-tps/OTP-10282:
erts: Rename LTTng tracepoint aio_pool_add to aio_pool_put
erts: Change argument order for LTTng driver_stop
runtime_tools: Document BEAM lttng tracepoints
|