Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-10-12 | erts: Refactor out func_info into struct | Lukas Larsson | |
This commit adds two new structs to be used to represent erlang code in erts. ErtsCodeInfo is used to describe the i_func_info header that is part of all Export entries and the prelude of each function. This replaces all the BeamInstr * that were previously used to point to these locations. After this change the code should never use BeamInstr * with offsets to figure out different parts of the func_info header. ErtsCodeMFA is a struct that is used to descripe a MFA in code. It is used within ErtsCodeInfo and also in Process->current. All function that previously took Eterm * or BeamInstr * to identify a MFA now use the ErtsCodeMFA or ErtsCodeInfo where appropriate. The code has been tested to work when adding a new field to the ErtsCodeInfo struct, but some updates are needed in ops.tab to make it work. | |||
2016-09-23 | erts: Make cerl -dump core work on mac | Sverker Eriksson | |
2016-09-06 | doc: Use groff with -Tutf8 | Hans Bolinder | |
2016-08-10 | Merge branch 'sverker/run_erl-pty-race/OTP-13795' into maint | Sverker Eriksson | |
2016-08-10 | run_erl: Add sleepy_child test case | Sverker Eriksson | |
with run_erl option -sleepy-child to provoke race when slave pty is late | |||
2016-07-05 | run_erl: Fix failing run_erl invokation on OpenBSD | Sverker Eriksson | |
Symptom: run_erl does exit(0) and child program (erl) does not seem to start. Running run_erl again however brings the previous child program to life. Problem: A race causing run_erl to read 0 from master pty and exit because the child has not yet opened its corresponding slave pty. Solution: Use the non standard openpty() function instead that does not expose this race as the slave fd is opened in the parent. Question: Is there a race free way to do this with posix_openpt on OpenBSD? | |||
2016-07-05 | run_erl: Beautify #ifdef jungle | Sverker Eriksson | |
2016-06-22 | erts: Fix etp-carrier-blocks for non smp | Sverker Eriksson | |
2016-06-14 | erts: Make etp-*-info take any value as input | Lukas Larsson | |
2016-06-14 | erts: Add etp commands to re-compile erlang | Lukas Larsson | |
2016-06-14 | Merge branch 'dotsimon/erts/heart_no_kill/OTP-13650' | Lukas Larsson | |
* dotsimon/erts/heart_no_kill/OTP-13650: erts: Fix HEART_NO_KILL logic | |||
2016-06-10 | erts: Fix HEART_NO_KILL logic | Lukas Larsson | |
2016-06-07 | Merge branch 'dotsimon/erts/heart_no_kill/OTP-13650' | Lukas Larsson | |
* dotsimon/erts/heart_no_kill/OTP-13650: erts: make HEART_NO_KILL have to be set to TRUE Don't kill old erlang if HEART_NO_KILL is set Conflicts: lib/kernel/doc/src/heart.xml | |||
2016-06-03 | erts: make HEART_NO_KILL have to be set to TRUE | Lukas Larsson | |
2016-06-01 | Don't kill old erlang if HEART_NO_KILL is set | Simon Cornish | |
If the environment variable HEART_NO_KILL is set then heart won't kill the old erlang process. This is desirable if the command executed by heart takes care of this. | |||
2016-05-31 | Update process state flags in etp-commands | Rickard Green | |
2016-05-25 | Add -start_epmd command line option | Magnus Henoch | |
Add a command line option that lets you disable automatic starting of epmd when starting a distributed node. This differs from the undocumented setting -no_epmd, in that it does not affect the starting of an erl_epmd process within erl_distribution: the newly started node will expect an epmd instance to have been started previously. | |||
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-10 | Remove conditional dirty schedulers API | Rickard Green | |
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-04-28 | erts: Rename erl flag +xmqd to +hmqd in erlexec | Lukas Larsson | |
2016-04-20 | Merge branch 'sverker/hipe-code-alloc' | Sverker Eriksson | |
2016-04-15 | erts: Add 'exec_alloc' for hipe code | Sverker Eriksson | |
that uses its own super carrier (erts_exec_mmapper) to guarantee low addressed and executable memory (PROT_EXEC). Currently only used on x86_64 that needs low memory for HiPE/AMD64's small code model. By initializing erts_exec_mapper early we secure its low memory area before erts_literal_mmapper might steal it. | |||
2016-04-13 | Merge branch 'henrik/update-copyrightyear' | Henrik Nord | |
* henrik/update-copyrightyear: update copyright-year | |||
2016-04-11 | Merge branch 'msantos/erts/cli-abort-on-alloc-fail/PR-948/OTP-13486' | Björn-Egil Dahlberg | |
* msantos/erts/cli-abort-on-alloc-fail/PR-948/OTP-13486: erts/common: check for OOM on Windows | |||
2016-03-24 | erts: Fix etp pid print on big endian | Lukas Larsson | |
2016-03-18 | Merge branch 'lukas/erts/fix-vsyslog-freebsd/OTP-13427' | Lukas Larsson | |
* lukas/erts/fix-vsyslog-freebsd/OTP-13427: erts: Fix run_erl syslog prototypes for freebsd Conflicts: erts/etc/unix/run_erl.c | |||
2016-03-15 | update copyright-year | Henrik Nord | |
2016-03-15 | run_erl: Don't define _XOPEN_SOURCE on OS X | Björn Gustavsson | |
On MacOS X, defining _XOPEN_SOURCE usually *removes* features from header files. Therefore, we should not set _XOPEN_SOURCE to 600 since that will remove the prototype for vsyslog(). Setting it to an empty value or not including it will ensure that the vsyslog() prototype is included. | |||
2016-03-08 | Merge branch 'sverk/literal-alloc-polish' | Sverker Eriksson | |
* sverk/literal-alloc-polish: erts: Add emulator flag +MIscs for literal super carrier size erts: Refactor init of erts_literal_mmapper erts: Make literal_alloc documented and configurable | |||
2016-02-29 | erts: Fix run_erl syslog prototypes for freebsd | Lukas Larsson | |
2016-02-25 | Merge branch 'maint' | Björn-Egil Dahlberg | |
Conflicts: erts/emulator/beam/erl_alloc.types erts/emulator/beam/erl_bif_info.c erts/emulator/beam/erl_process.c erts/preloaded/ebin/erts_internal.beam | |||
2016-02-25 | Merge branch 'egil/heart-callback/OTP-13250' into maint | Björn-Egil Dahlberg | |
2016-02-23 | erts: Add emulator flag +MIscs for literal super carrier size | Sverker Eriksson | |
2016-02-23 | erts: Make literal_alloc documented and configurable | Sverker Eriksson | |
Except it cannot be disabled and cannot be multi-threaded. The bit-vector 'erts_literal_vspace_map' on 32-bit is currently only protected by the literal allocator mutex. We could allow multiple instances on 64-bit (I think), but what would be the point? | |||
2016-02-18 | Merge branch 'maint' | Henrik Nord | |
2016-02-16 | heart: Remove dead code | Björn-Egil Dahlberg | |
2016-01-28 | erts/common: check for OOM on Windows | Michael Santos | |
Fix the command line tools to abort on allocation failures when run on Windows. Modify the malloc() wrapper to consistently return void* across all the tools. | |||
2016-01-20 | Fix typo in Windows build scripts | Michael Santos | |
2015-12-18 | Merge branch 'maint' | Henrik Nord | |
Conflicts: OTP_VERSION erts/vsn.mk | |||
2015-12-17 | Revert "Fix erroneous splitting of emulator path" | Björn-Egil Dahlberg | |
This reverts commit 731890f3b4ac62eed1221aa7d9fd2bfa6bf51d8c. | |||
2015-12-08 | Merge branch 'rickard/ohmq-fixup/OTP-13047' | Rickard Green | |
* rickard/ohmq-fixup/OTP-13047: Replace off_heap_message_queue option with message_queue_data option Always use literal_alloc Distinguish between GC disabled by BIFs and other disabled GC Fix process_info(_, off_heap_message_queue) Off heap message queue test suite Remove unused variable Fix memory leaks | |||
2015-12-08 | Replace off_heap_message_queue option with message_queue_data option | Rickard Green | |
The message_queue_data option can have the values - off_heap - on_heap - mixed | |||
2015-11-27 | Merge branch 'maint' | Sverker Eriksson | |
2015-11-27 | Merge branch 'sverk/cpool_fetch-dc_list-fix' into maint | Sverker Eriksson | |
OTP-13147 * sverk/cpool_fetch-dc_list-fix: erts: Reduce alloc_SUITE:rbtree runtime for valgrind erts: Remove double free in efile_drv erts: Improve alloc_SUITE:migration test erts: Pass free mem and build type to alloc_SUITE tests erts: Fix snprintf in alloc_SUITE for windows erts: Workaround for strange crash on win64 in alloc_SUITE test code erts: Refactor alloc_SUITE to use NIFs instead of drivers erts: Add enif_getenv erts: Make key argument constant for erl_drv_{get|put}env erts: Add alloc_SUITE:migration erts: Add TEST allocator erts: Fix confusion of callbacks destroying_mbc() vs remove_mbc() erts: Fix resurrection of carriers from dc_list | |||
2015-11-17 | Merge branch 'maint' | Zandra | |
2015-11-17 | Merge branch 'legoscia/heart-remove-obsolete-comment' into maint | Zandra | |
* legoscia/heart-remove-obsolete-comment: Remove obsolete comment in heart.c | |||
2015-11-17 | Merge branch 'maint' | Zandra | |
2015-11-17 | Merge branch 'evnu/fix-whitespace-splitting' into maint | Zandra | |
* evnu/fix-whitespace-splitting: Fix erroneous splitting of emulator path | |||
2015-11-16 | Merge branch 'maint' | Henrik Nord | |