aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/test
AgeCommit message (Collapse)Author
2016-05-31Add dirty_process_main functionSteve Vinoski
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.
2016-05-27Merge branch 'rickard/rm-mqd-mixed/OTP-13366'Rickard Green
* rickard/rm-mqd-mixed/OTP-13366: Remove the 'message_queue_data' option 'mixed'
2016-05-27Merge branch 'lukas/erts/tracing/tracer-move-extra-to-map/OTP-10267'Lukas Larsson
* 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
2016-05-25Add tests for -start_epmd and -epmd_module optionsMagnus Henoch
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.
2016-05-25Remove the 'message_queue_data' option 'mixed'Rickard Green
2016-05-24Merge branch 'egil/erts/fix-purge_code-literals'Björn-Egil Dahlberg
* 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
2016-05-24erts: Move tracer SecondTraceTerm to Opts mapLukas Larsson
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.
2016-05-20erts: Add testcase for purge of literalsBjörn-Egil Dahlberg
Specifically t_copy_literals_frags/1 tries to test literals in message heap fragments.
2016-05-20erts: Check for carrier capability specifically in testBjörn-Egil Dahlberg
2016-05-18Merge branch 'bjorn/erts/cuddle-with-tests'Björn Gustavsson
* bjorn/erts/cuddle-with-tests: time_SUITE: Make consistency/1 work in any timezone
2016-05-17Merge branch 'sverker/hipe-amd64-code-alloc/OTP-13359'Sverker Eriksson
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.
2016-05-17erts: Fix bug when tracing in non-smp non-scheduler threadLukas Larsson
2016-05-13Merge branch 'egil/erts/nif-format_term/OTP-13580'Björn-Egil Dahlberg
* 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
2016-05-12time_SUITE: Make consistency/1 work in any timezoneBjörn Gustavsson
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".
2016-05-11erts: Add tests for enif_snprintfBjörn-Egil Dahlberg
2016-05-11Merge branch 'lukas/trace-fix'Rickard Green
* lukas/trace-fix: erts: Only allow remove from trace_status callback
2016-05-11Merge branch 'rickard/ds-proc-exit/OTP-13123'Rickard Green
* 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
2016-05-11erts: Only allow remove from trace_status callbackLukas Larsson
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.
2016-05-11Add dirty_heap_access test caseRickard Green
2016-05-11Add dirty_call_while_terminated test caseRickard Green
2016-05-11Move dirty nif test cases into dirty_nif_SUITERickard Green
2016-05-11erts: Add max_heap_size remote gc testcaseLukas Larsson
2016-05-10erts: Skip alloc_SUITE:erts_mmap if ERL_ZFLAGSSverker Eriksson
contains flags for super carrier +MMsc*
2016-05-10erts: Implement max_heap_size process flagLukas Larsson
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}
2016-05-09Merge branch 'sverker/system_info-erts_mmap/OTP-13560'Sverker Eriksson
2016-05-09Merge branch 'sverker/trace-send-receive-matchspec/OTP-13507'Sverker Eriksson
2016-05-04erts: Add send and 'receive' to trace_info/2Sverker Eriksson
to obtain match specs
2016-05-04erts: Change receive matchspec to [NodeOrOther, Pid, Msg]Sverker Eriksson
2016-05-04erts: Add Sender in 'receive' trace matchspecSverker Eriksson
All 'EXIT' and monitor messages are sent from 'system' Timeouts are "sent" from 'clock_service'
2016-05-04erts: Add matchspec restrictions for 'receive' traceSverker Eriksson
and non-call-trace. This is the easy way out to avoid difficult locking scenarios when accessing tracing flags on another process.
2016-05-04erts: Add matchspec to 'receive' traceSverker Eriksson
2016-05-04erts: Add match spec for send traceSverker Eriksson
2016-05-04Merge branch 'rickard/reds-fix/master/OTP-13512'Rickard Green
* rickard/reds-fix/master/OTP-13512: Ensure correct reduction counting
2016-05-04Ensure correct reduction countingRickard Green
2016-05-03Merge branch 'egil/erts/doc-lttng-beam-tps/OTP-10282'Björn-Egil Dahlberg
* 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
2016-05-03Merge branch 'lukas/erts/rename_xmqd_to_hmqd/OTP-13366'Lukas Larsson
* lukas/erts/rename_xmqd_to_hmqd/OTP-13366: erts: Rename erl flag +xmqd to +hmqd in erlexec Fix proc_lib message_queue_data spec erts: Fix total_heap_size calculation for on_heap erts: Rename erl flag +xmqd to +hmqd
2016-05-03Merge branch 'lukas/erts/tracing/misc_fixes/OTP-13503'Lukas Larsson
* lukas/erts/tracing/misc_fixes/OTP-13503: erts: Add test for new procs trace with spawn_link kernel: Remove seq_trace event order dep in tc erts: Add tests for set on link tracing erts: Expand trace tests for refc binaries erts: Remove erl_tracer with invalid state erts: Remove some dead code erts: Fix broken doc link to erl_tracer Conflicts: erts/emulator/beam/erl_trace.c
2016-05-02erts: Rename LTTng tracepoint aio_pool_add to aio_pool_putBjörn-Egil Dahlberg
* Be consistent.
2016-04-29Merge branch 'egil/erts/tracing-support-lttng/OTP-13532'Björn-Egil Dahlberg
* egil/erts/tracing-support-lttng/OTP-13532: (28 commits) runtime_tools: User's guide to LTTng and dyntrace runtime_tools: Fix Dtrace build erts: Fix gc messages in tracer_SUITE erts: Fix gc messages in sensitive_SUITE erts: Fix gc messages in trace_port_SUITE tools: Update fprof tests tools: Update fprof with new gc traces runtime_tools: Update dyntrace_lttng_SUITE tests runtime_tools: Add 'return_to' for call tracing erts: Fix return_to trace callback erts: Update erl_tracer documentation erts: Fix erl_tracer documentation typos Update preloaded erl_tracer.beam erts: Update erl_tracer type specs runtime_tools: Add lttng dyntrace tests runtime_tools: Extend 'trace' and 'enabled' tracer callbacks erts: Extend 'enabled' and 'trace' tracer callbacks runtime_tools: Extend 'enabled' tracer callbacks erts: Extend 'enabled' tracer callbacks runtime_tools: Update lttng garbage collection trace ...
2016-04-29erts: Fix gc messages in tracer_SUITEBjörn-Egil Dahlberg
2016-04-29erts: Fix gc messages in sensitive_SUITEBjörn-Egil Dahlberg
2016-04-29erts: Fix gc messages in trace_port_SUITEBjörn-Egil Dahlberg
2016-04-27erts: Add tests for maps:take/2Björn-Egil Dahlberg
2016-04-26erts: Add test for new procs trace with spawn_linkLukas Larsson
2016-04-26erts: Add tests for set on link tracingLukas Larsson
2016-04-26erts: Expand trace tests for refc binariesLukas Larsson
Make sure to cover all of the refc binary cases in tracing
2016-04-26erts: Fix total_heap_size calculation for on_heapLukas Larsson
2016-04-26erts: Rename erl flag +xmqd to +hmqdLukas Larsson
Flags that control the heap should all fall under the +h flag
2016-04-20erts: Produce statistics for literal and hipe super carriersSverker Eriksson
called 'literal_mmap' and 'exec_mmap'. Also moved existing erts_mmap info from 'mseg_alloc' to its own system_info({allocator, erts_mmap}) with "allocators" default_mmap, literal_mmap and exec_mmap.
2016-04-18Merge branch 'bjorn/erts/beam_load'Björn Gustavsson
* bjorn/erts/beam_load: Optimize get_tuple_element instructions that target Y registers Mend beam_SUITE:packed_registers/1 Correct unpacking of 3 operands on 32-bit archictectures Eliminate misleading #ifdef ARCH_64 in beam_opcodes.h beam_debug: Correct masking when unpacking packed operands