aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-05-11erts: Fix non-smp max_heap_size assertLukas Larsson
2016-05-11erts: Add max_heap_size remote gc testcaseLukas Larsson
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 'sverker/system_info-erts_mmap/OTP-13560'Sverker Eriksson
2016-05-09inets: Fix faulty merge commitSverker Eriksson
d5f8d55b37c9c63418b4fe8ad5a5aa197a9a4385
2016-05-09Merge branch 'anders/diameter/info/OTP-13508'Anders Svensson
* anders/diameter/info/OTP-13508: Add diameter:peer_find/1 Add diameter:peer_info/1
2016-05-09Merge branch 'anders/diameter/overload/OTP-13330'Anders Svensson
* anders/diameter/overload/OTP-13330: Suppress dialyzer warning Remove dead case clause Let throttling callback send a throttle message Acknowledge answers to notification pids when throttling Throttle properly with TLS Don't ask throttling callback to receive more unless needed Let a throttling callback answer a received message Let a throttling callback discard a received message Let throttling callback return a notification pid Make throttling callbacks on message reception Add diameter_tcp option throttle_cb
2016-05-09Merge branch 'anders/diameter/test/OTP-13438'Anders Svensson
* anders/diameter/test/OTP-13438: Don't assume list comprehension evaluation order
2016-05-09Merge branch 'sverker/trace-send-receive-matchspec/OTP-13507'Sverker Eriksson
2016-05-09Merge branch 'dgud/mnesia/ext-backend/PR-858/OTP-13058'Dan Gudmundsson
* dgud/mnesia/ext-backend/PR-858/OTP-13058: mnesia_ext: Add basic backend extension tests mnesia_ext: reuse snmp field for ext updates mnesia_ext: Create table/data containers from mnesia monitor not temporary processes mnesia_ext: Implement ext copies index mnesia_ext: Load table ext mnesia_ext: Dumper and schema changes mnesia_ext: Refactor mnesia_schema.erl mnesia_ext: Ext support in fragmented tables mnesia_ext: Backup handling mnesia_ext: Create schema functionality mnesia_ext: Add ext copies and db_fold to low level api mnesia_ext: Refactor record_validation code mnesia_ext: Add create_external and increase protocol version to monitor mnesia_ext: Add ext copies to records mnesia_ext: Add supervisor and behaviour modules
2016-05-09mnesia_ext: Add basic backend extension testsDan Gudmundsson
2016-05-09mnesia_ext: reuse snmp field for ext updatesDan Gudmundsson
Minimal impact when talking to older nodes.
2016-05-09mnesia_ext: Create table/data containers from mnesia monitor not temporary ↵Dan Gudmundsson
processes Tables or data containers should be owned and monitored by mnesia_monitor and should thus be created by that process. Always create_table before loading it We need to create tables for ram_copies at least before loading them as they are intermittent. It is also needed to get mnesia monitor as the parent and supervisor of the data storage.
2016-05-09mnesia_ext: Implement ext copies indexUlf Wiger
Make ram_copies index always use ordered_set And use index type as prefered type not a implementation requirement, the standard implmentation will currently ignore the prefered type.
2016-05-09mnesia_ext: Load table extUlf Wiger
2016-05-09mnesia_ext: Dumper and schema changesUlf Wiger
2016-05-09mnesia_ext: Refactor mnesia_schema.erlUlf Wiger
2016-05-09mnesia_ext: Ext support in fragmented tablesUlf Wiger
2016-05-09mnesia_ext: Backup handlingUlf Wiger
2016-05-09mnesia_ext: Create schema functionalityUlf Wiger
Add ext to table/system information Add add_backend_type
2016-05-09mnesia_ext: Add ext copies and db_fold to low level apiUlf Wiger
2016-05-09mnesia_ext: Refactor record_validation codeUlf Wiger
Should maybe be moved to mnesia.erl and inlined?? Or is it used elsewhere?
2016-05-09mnesia_ext: Add create_external and increase protocol version to monitorUlf Wiger
new protocol version to handle new schema fields
2016-05-09mnesia_ext: Add ext copies to recordsUlf Wiger
2016-05-09mnesia_ext: Add supervisor and behaviour modulesUlf Wiger
2016-05-09Merge branch 'raimo/polish-gen_statem/OTP-13065'Raimo Niskanen
* raimo/polish-gen_statem/OTP-13065: Fix all seealso and other minor changes Editorial update
2016-05-09Fix all seealso and other minor changesRaimo Niskanen
2016-05-09Merge branch 'kostis/hipe/add-bs_match-tests/PR-1044/OTP-13549'Björn-Egil Dahlberg
* kostis/hipe/add-bs_match-tests/PR-1044/OTP-13549: Up the limit for the timetrap used in the HiPE testsuite One more test suite for binary pattern matching
2016-05-09Merge branch 'kostis/os_mon/fix-compilation-sparc/PR-1046/OTP-13548'Björn-Egil Dahlberg
* kostis/os_mon/fix-compilation-sparc/PR-1046/OTP-13548: Fix compilation on SUN/SPARC by including <stdlib.h>
2016-05-09Merge branch 'egil/et/fix-trace-tags/OTP-13545'Björn-Egil Dahlberg
* egil/et/fix-trace-tags/OTP-13545: et: Update runtime dependencies et: Update gc trace tags in selector et: Remove unnecessary boilerplate in tests
2016-05-09Merge branch 'egil/runtime_tools/fix-runtime-deps'Björn-Egil Dahlberg
* egil/runtime_tools/fix-runtime-deps: runtime_tools: Update runtime deps
2016-05-09Merge branch 'ingela/inets/next-version'Ingela Anderton Andin
* ingela/inets/next-version: inets: Prepare for release Conflicts: lib/inets/vsn.mk
2016-05-09Merge branch 'hans/ssh/cuddle_tests'Hans Nilsson
2016-05-09Merge branch 'ingela/ssl/prepare-for-release'Ingela Anderton Andin
* ingela/ssl/prepare-for-release: ssl: Prepare for release Conflicts: lib/ssl/vsn.mk
2016-05-09Merge branch 'dgud/wx/compatible-with-wxW-3.1'Dan Gudmundsson
* dgud/wx/compatible-with-wxW-3.1: Test cuddle, increase sleep wx: Fix warnings in example Fix argv types wx: Remove non implemented wxGauge functions
2016-05-09Merge branch 'dgud/observer/fixbugs'Dan Gudmundsson
* dgud/observer/fixbugs: Fix left column text width observer: Remove ignored alignment flag observer: Fix timing issue Observer: do not create PaintDC outside of paint callbacks observer: Reduce flicker in table info on windows
2016-05-09Merge branch 'xsipewe_gen_statem1' of https://github.com/xsipewe/otp into ↵Raimo Niskanen
raimo/polish-gen_statem/OTP-13065 Conflicts: lib/stdlib/doc/src/gen_statem.xml
2016-05-09Merge branch 'kennethlakin/tls-use-negotiated-prf/PR-1042/OTP-13546'Ingela Anderton Andin
* kennethlakin/tls-use-negotiated-prf/PR-1042/OTP-13546: ssl: Use cipher suite's PRF in prf/5
2016-05-09Merge branch 'ingela/ssl/memory-foot-print'Ingela Anderton Andin
* ingela/ssl/memory-foot-print: ssl: Add reinitialization of handshake data lost in gen_statem refactorization
2016-05-09syntax_tools: Add support for new map type syntaxHans Bolinder
The pretty-printing of `...' in map types is complex. The representation of `...' can be changed before OTP 19.
2016-05-09syntax_tools: Correct types and specsHans Bolinder
2016-05-09erts: Remove some attributes from the abstract format docHans Bolinder
Some wild attributes are no longer mentioned separately.
2016-05-09edoc: Make EDoc work with typed record fieldsHans Bolinder
2016-05-09compiler: Let module_info(attributes) skip more attributesHans Bolinder
'callback' and 'optional_callbacks' are no longer wild attributes.
2016-05-09syntax_tools: Add tests for types and specsHans Bolinder
2016-05-09syntax_tools: Update igor to handle typed recordsHans Bolinder
2016-05-09syntax_tools: Add support for types and specsHans Bolinder
In particular, types and specs can be pretty-printed. There are issues with macros (left behind by epp_dodger). Typed record fields are handled. Fields are represented by triples instead of two-tuples, which is an incompatible change. Some attributes (-export_type, -spec, -type, &c) have been given meaning in recent time, but the set of wild attributes (see Barklund's spec) is not changed.