Age | Commit message (Collapse) | Author | |
---|---|---|---|
2017-01-23 | Merge branch 'sverker/ASSERT_IN_ENV' | Sverker Eriksson | |
* sverker/ASSERT_IN_ENV: erts: Add macro ERTS_PROC_LOCKS_HIGHER_THAN erts: Cleanup and extra assertions in nif_SUITE.c erts: Cleanup enif_make_reverse_list erts: Add assertions for correct ErlNifEnv erts: Make erts_dbg_within_proc available # Conflicts: # erts/emulator/beam/erl_gc.h | |||
2017-01-17 | Merge branch 'maint' | Sverker Eriksson | |
2017-01-17 | Merge branch 'sverker/trace_gc-bug/OTP-14154' into maint | Sverker Eriksson | |
* sverker/trace_gc-bug: erts: Fix GC tracing to use temp heap erts: Assert sufficient space need after GC | |||
2017-01-17 | Merge branch 'rickard/ds-features-20' | Rickard Green | |
OTP-14152 * rickard/ds-features-20: Remove experimental disclaimer on dirty schedulers Scheduler wall time support for dirty schedulers Always return info from system_info(dirty_[cpu|io]_schedulers*) Improve etp-commands Switch between scheduler types when multi-scheduling is blocked Perform potentially long GC on dirty schedulers if available Return and exception trace for nif-export scheduled BIFs Optimize handling of BIF errors Support for dirty BIFs Reduction counting on non-tail return | |||
2017-01-17 | Merge branch 'maint' | Rickard Green | |
* maint: Do not automatically define HARDDEBUG when DEBUG is defined | |||
2017-01-17 | Merge branch 'rickard/no-harddebug' into maint | Rickard Green | |
* rickard/no-harddebug: Do not automatically define HARDDEBUG when DEBUG is defined | |||
2017-01-17 | Merge branch 'maint' | Rickard Green | |
* maint: Fix memory leak of temporary heap | |||
2017-01-17 | Merge branch 'rickard/abandoned-heap-bugs' into maint | Rickard Green | |
OTP-14135 * rickard/abandoned-heap-bugs: Fix memory leak of temporary heap | |||
2017-01-13 | Do not automatically define HARDDEBUG when DEBUG is defined | Rickard Green | |
2017-01-13 | Fix memory leak of temporary heap | Rickard Green | |
This bug was introduced in previous commit, and has never been released in an official OTP version. | |||
2017-01-12 | Perform potentially long GC on dirty schedulers if available | Rickard Green | |
2017-01-12 | Support for dirty BIFs | Rickard Green | |
2017-01-11 | Merge branch 'maint' | Rickard Green | |
* maint: Fix issues with abandoned heap Conflicts: erts/emulator/beam/beam_bif_load.c | |||
2017-01-11 | Merge branch 'rickard/abandoned-heap-bugs' into maint | Rickard Green | |
OTP-14134 OTP-14135 * rickard/abandoned-heap-bugs: Fix issues with abandoned heap | |||
2017-01-10 | Fix issues with abandoned heap | Rickard Green | |
2017-01-05 | erts: Fix GC tracing to use temp heap | Sverker Eriksson | |
Can't use HAlloc as it might consume part of callers 'need'. | |||
2017-01-05 | erts: Assert sufficient space need after GC | Sverker Eriksson | |
2017-01-04 | erts: Make erts_dbg_within_proc available | Sverker Eriksson | |
for debug assertions. | |||
2017-01-02 | Merge branch 'maint' | Rickard Green | |
* maint: Multi scheduling block bug-fixes Fix VM global GC info for dirty schedulers Leave dirty work in dirty run-queues on multi scheduling block Fix premature removal of process struct Fix crash due to GC of node entry on dirty scheduler | |||
2016-12-28 | Fix VM global GC info for dirty schedulers | Rickard Green | |
2016-11-23 | Merge branch 'maint' | Rickard Green | |
* maint: Update etp-commands for dirty schedulers Fix scheduling of system tasks on processes executing dirty Fix call time tracing with dirty schedulers Fix send of exit signal to process executing dirty Fix dirty scheduler process priority Fix alloc-util hard-debug Silence debug warning when no beam jump table is used with dirty schedulers Fix check_process_code() when NifExport is in use Fix GC when NifExport is in use Fix saving of original arguments when rescheduling via NifExport Conflicts: erts/emulator/beam/beam_bif_load.c erts/emulator/beam/erl_nif.c | |||
2016-11-22 | Fix GC when NifExport is in use | Rickard Green | |
2016-11-17 | erts: Fix all -Wundef errors | Sverker Eriksson | |
2016-09-14 | Merge branch 'maint' | Henrik Nord | |
Conflicts: OTP_VERSION | |||
2016-09-14 | Merge branch 'maint-19' into maint | Henrik Nord | |
2016-09-14 | Ensure we dont use an invalid live heap fragment pointer | Rickard Green | |
2016-09-14 | Update vheap size when moving msgq to heap after GC | Rickard Green | |
2016-09-14 | Merge branch 'maint' | Rickard Green | |
* maint: Updated OTP version Prepare release Fix crash due to heap fragments left after GC Conflicts: OTP_VERSION erts/emulator/beam/erl_gc.c | |||
2016-09-14 | Merge branch 'maint-19' into maint | Henrik Nord | |
2016-09-13 | Fix crash due to heap fragments left after GC | Rickard Green | |
Do not decode distribution messages as part of the GC operation. Distribution messages containing maps may generate heap fragments. | |||
2016-08-31 | Merge branch 'maint' | Rickard Green | |
* maint: Ensure correct mbuf_sz value in process structure | |||
2016-08-30 | Ensure correct mbuf_sz value in process structure | Rickard Green | |
2016-08-01 | Merge branch 'egil/erts/dont-copy-literals/OTP-13529' | Björn-Egil Dahlberg | |
* egil/erts/dont-copy-literals/OTP-13529: erts: Refactor literal purge area arguments erts: No need to literal opt message token erts: Don't copy literals in enif_send erts: Fix literal size calculation in check_process_code erts: Remove the need for copying of literals | |||
2016-08-01 | erts: No need to literal opt message token | Björn-Egil Dahlberg | |
2016-08-01 | erts: Remove the need for copying of literals | Björn-Egil Dahlberg | |
* Literals are not copied between processes for messages or spawn Increases performance of message sent and processes spawned when literals are involved in messages or arguments. | |||
2016-07-29 | Merge branch 'margnus1/erts/fix-hipe-literal-gc/PR-1122/OTP-13777' into maint | Björn-Egil Dahlberg | |
* margnus1/erts/fix-hipe-literal-gc/PR-1122/OTP-13777: check_process_code: Sweep HiPE stack for literals | |||
2016-07-14 | erts: Fix msacc for dirty scheduler and heap_limit | Lukas Larsson | |
2016-07-06 | check_process_code: Sweep HiPE stack for literals | Magnus Lång | |
Because check_process_code neglected checking the HiPE stack for references to the literal area, such references would survive the purge and subsequent deletion of a module and its literal area. These dangling references would then cause incorrect behaviour or even hard crashes of the VM. By simply adding a scan of the HiPE stack to check_process_code and erts_garbage_collect_literals, this problem is fixed. In order to support full stack walks without deleting the graylimit trap, a new stack walking interface function, nstack_walk_init_sdesc_ignore_trap() was introduced. | |||
2016-05-30 | erts: Clean up some goto spaghetti | Sverker Eriksson | |
and replace with a nice else-if chain. | |||
2016-05-30 | erts: Fix ASSERT provoked by map_SUITE:t_rare_map_overflow | Sverker Eriksson | |
The same bug was fixed for OTP 18 in cb62c989e59f0ec8556f9f1d4e9a45b by provoking yet another GC. But now in 19 we are ok with heap fragments so just remove the asserts. | |||
2016-05-26 | Fix message queue update on replacement and removal of message | Rickard Green | |
2016-05-20 | erts: Refactor ERTS_MSG_COMBINED_HFRAG to heap fragment | Björn-Egil Dahlberg | |
2016-05-11 | Merge 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-11 | Add better support for communication with a process executing dirty NIF | Rickard 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-11 | erts: Fix non-smp max_heap_size assert | Lukas Larsson | |
2016-05-10 | erts: Implement max_heap_size process flag | Lukas 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-09 | Merge branch 'sverker/trace-send-receive-matchspec/OTP-13507' | Sverker Eriksson | |
2016-05-04 | erts: Add Sender in 'receive' trace matchspec | Sverker Eriksson | |
All 'EXIT' and monitor messages are sent from 'system' Timeouts are "sent" from 'clock_service' | |||
2016-05-04 | Merge branch 'rickard/reds-fix/master/OTP-13512' | Rickard Green | |
* rickard/reds-fix/master/OTP-13512: Ensure correct reduction counting | |||
2016-05-04 | Ensure correct reduction counting | Rickard Green | |