aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2016-05-26erts: Improve bucket search for hipe_mfa_infoSverker Eriksson
by actually using the cached hash value.
2016-05-26erts: Improve some bad hash functionsSverker Eriksson
Multiplying two atoms will always yield the same low 6 bits. The most important tabke 'export' was saved by the prime number table size which seemed to yield a decent uniform distribution anyway.
2016-05-20erts: Check for carrier capability specifically in testBjörn-Egil Dahlberg
2016-05-18Merge branch 'hasse/erl_docgen/datatype_anchors/OTP-13600/ERL-141'Hans Bolinder
* hasse/erl_docgen/datatype_anchors/OTP-13600/ERL-141: kernel: Remove no longer needed anchors in documentation stdlib: Remove no longer needed anchors in documentation erts: Remove no longer needed anchors in documentation erl_docgen: Add anchors to datatypes without name attribute
2016-05-18Merge branch 'bjorn/handle-bad-path/ERL-142'Björn Gustavsson
* bjorn/handle-bad-path/ERL-142: Tolerate bad directories in the code path
2016-05-18Merge branch 'bjorn/erts/raise-doc/OTP-13599'Björn Gustavsson
* bjorn/erts/raise-doc/OTP-13599: Remove the warning about using erlang:raise/3
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-17Merge branch 'sverker/trace-send-receive-matchspec/OTP-13507'Sverker Eriksson
Second merge of this branch to master with some more docs
2016-05-17Merge branch 'mikpe/otp-19-erts-integer-truncation-bugs/PR-1045/OTP-13606'Lukas Larsson
* mikpe/otp-19-erts-integer-truncation-bugs/PR-1045/OTP-13606: erl_unicode.c: fix integer truncation problems do not limit heap fragments to 4 giga-words erts_new_mso_binary(): do not truncate len Conflicts: erts/emulator/beam/erl_nif.c
2016-05-17erts: Move max_heap_size field so that ErLLVM works againLukas Larsson
2016-05-17erts: Fix OpenBSD gcc compiler bug in re codeLukas Larsson
The OpenBSD 5.8 gcc compiler emits erroneous code which results in the re:run function behaving badly, though strangely enough it does not segfault the vm. This fix moves code around a bit in order to make gcc emit correct code.
2016-05-17erts: Fix erl_tracer xml doc errorsLukas Larsson
2016-05-17erts: Fix bug when tracing in non-smp non-scheduler threadLukas Larsson
2016-05-17erts: Remove no longer needed anchors in documentationHans Bolinder
2016-05-16Tolerate bad directories in the code pathBjörn Gustavsson
A bad directory in the path would prevent the run-time system from starting: $ echo >foobar $ erl -pa foobar {"init terminating in do_boot",{load_failed,[supervisor,kernel,gen_server,file_io_server,filename,file,erl_parse,error_logger,code_server,erl_lint,proc_lib,code,application_controller,application_master,gen_event,application,error_handler,lists,heart,gen,file_server,ets,erl_eval]}} Crash dump is being written to: erl_crash.dump...done init terminating in do_boot () The reason is that when attempting to read each of the BEAM files, there would be an 'enotdir' error which erl_prim_load:get_modules/2,3 assumed was a fatal error. Update erl_prim_load:get_modules/2,3 to ignore any error and try the next directory in the path. Reported-by: http://bugs.erlang.org/browse/ERL-142 Reported-by: Michael Truog
2016-05-16Remove the warning about using erlang:raise/3Björn Gustavsson
There is no good reason to say that erlang:raise/3 is only for debugging. Here is an example where it can be extremely useful: try do_something(Args) catch Class:Error -> Stack = erlang:get_stacktrace(), io:format("Args: ~p\n", [Args]), erlang:raise(Class, Error, Stack) That is, we can let it crash, but log additional useful information before crashing. Noticed-by: Per Hedeland
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-13Merge branch 'egil/erts-epmd/modernize-tests'Björn-Egil Dahlberg
* egil/erts-epmd/modernize-tests: Eliminate use of doc and suite clauses Replace use of test_server:format/2 with io:format/2 Modernize use of timetraps Remove ?line macros
2016-05-12erts: Remove compiler warningSverker Eriksson
'hx' may be used uninitialized
2016-05-12erts: Add send/receive trace to match spec user guideSverker Eriksson
Introduce section/terminology "Match target".
2016-05-12erts: Fix confusion among match spec examplesSverker Eriksson
Tracing and ETS examples were not separated correctly under the corresponding headings.
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-12Revert "Prepare release"Erlang/OTP
This reverts commit bd64ad8e15d66e48b36dbe3584315dd5cfc8b59a.
2016-05-11erts: Document enif_snprintfBjörn-Egil Dahlberg
2016-05-11erts: Add tests for enif_snprintfBjörn-Egil Dahlberg
2016-05-11Prepare releaseErlang/OTP
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-11Add better support for communication with a process executing dirty NIFRickard Green
- Termination of a process... - Modify trace flags of process... - Process info on process... - Register/unregister of name on process... - Set group leader on process... ... while it is executing a dirty NIF.
2016-05-11erts: Add enif_snprintfBjörn-Egil Dahlberg
* Add the capability to format erlang terms to a char buffer in nifs. * Bump NIF version to 2.11
2016-05-11Merge branch 'lukas/erts/max_heap_size/OTP-13174'Lukas Larsson
* lukas/erts/max_heap_size/OTP-13174: erts: Fix non-smp max_heap_size assert
2016-05-11erts: Fix non-smp max_heap_size assertLukas Larsson
2016-05-11Merge branch 'lukas/erts/max_heap_size/OTP-13175'Lukas Larsson
* lukas/erts/max_heap_size/OTP-13174: erts: Add max_heap_size remote gc testcase
2016-05-11erts: Add max_heap_size remote gc testcaseLukas Larsson
2016-05-11Merge branch 'lukas/erts/max_heap_size/OTP-13174'Lukas Larsson
* lukas/erts/max_heap_size/OTP-13174: erts: Fix max heap size exit when in hipe mode Update preloaded modules erts: Fix pre-bif yield current_function erts: Implement max_heap_size process flag
2016-05-10Remove conditional dirty schedulers APIRickard Green
2016-05-10erts: Skip alloc_SUITE:erts_mmap if ERL_ZFLAGSSverker Eriksson
contains flags for super carrier +MMsc*
2016-05-10erts: Fix doc typo in erts_allocSverker Eriksson
2016-05-10erts: Fix max heap size exit when in hipe modeLukas Larsson
2016-05-10Update preloaded modulesLukas Larsson
2016-05-10erts: Fix pre-bif yield current_functionLukas Larsson
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 'binarin/fix-build-tool-paths/PR-1023/OTP-13562'Lukas Larsson
* binarin/fix-build-tool-paths/PR-1023/OTP-13562: Fix program paths used in build process Conflicts: erts/configure.in
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