aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
AgeCommit message (Collapse)Author
2013-04-25Add long_schedule detection for ports and testcasesPatrik Nyblom
2013-04-19Add erlang:system_monitor(Pid,[{long_schedule,Millis}])Patrik Nyblom
2012-11-30erts: Change default of erl_crash.dumpBjörn-Egil Dahlberg
* Create an erl_crash.dump if no heart exists and no ERL_CRASH_DUMP_SECONDS is set (behaviour changed) * Don't create an erl_crash.dump if heart do exists and no ERL_CRASH_DUMP_SECONDS is set (behaviour not changed) This changes the behaviour back to the R15B02 default considering if a beam was running with no heart. The motivation is that we want a fast heart to fast restart erlang if it crashes but to be able to get non-truncated erl_crash.dumps via setting ERL_CRASH_DUMP_SECONDS if we so desire.
2012-11-23Merge branch 'pan/bs_append_crash' into maintPatrik Nyblom
* pan/bs_append_crash: Teach erts_bs_append not to dump core OTP-10590
2012-11-23Update copyright yearsBjörn-Egil Dahlberg
2012-11-23Merge branch 'egil/fix-crash_dump-lc-assert' into maintBjörn-Egil Dahlberg
* egil/fix-crash_dump-lc-assert: erts: Suppress lock assertion when dumping a crash
2012-11-22Teach erts_bs_append not to dump corePatrik Nyblom
When erts_bs_append() calls the garbage collector, it has set the PB_ACTIVE_WRITER flag in the ProcBin for the binary object is about to be appended to. Therefore, it is expected that the garbage collector should neither move nor shrink the binary object. But if the garbage collector does a minor collection (thereby clearing the PB_ACTIVE_WRITER flag in the ProcBin) and there is still not enough heap space, there will be a second major garbage collection. During the major collection (since the the PB_ACTIVE_WRITER flag was cleared), the binary object may be shrunk or moved (depending on sizes and how many other writable binaries there are in the process). Avoid the problem by clearing the PB_ACTIVE_WRITER flags in a separate pass after the garbage collection(s). Thanks to Denis Titoruk for helping us find this bug.
2012-11-16Merge branch 'rickard/ets-mem-bug/OTP-10558' into maintRickard Green
* rickard/ets-mem-bug/OTP-10558: Fix erlang:memory(ets)
2012-11-16erts: Suppress lock assertion when dumping a crashBjörn-Egil Dahlberg
2012-11-12Merge branch 'rickard/port-sched-bug/OTP-10556' into maintRickard Green
* rickard/port-sched-bug/OTP-10556: Fix bug in erts_port_task_schedule()
2012-11-12Merge branch 'rickard/sched-wakeup/OTP-10476' into maintRickard Green
* rickard/sched-wakeup/OTP-10476: Use reduction limit in order to determine when to do wakeup
2012-11-08Merge branch 'bjorn/erts/binary-append/OTP-10524' into maintBjörn Gustavsson
* bjorn/erts/binary-append/OTP-10524: Fix binary append exceptions
2012-11-06Fix erlang:memory(ets)Rickard Green
2012-11-06Fix bug in erts_port_task_schedule()Rickard Green
2012-11-05Fix binary append exceptionsBjörn Gustavsson
Code such as the following should cause an exception: Bin = <<0:1>>, <<Bin/binary,...>> (Because the "binary" type implies that the binary must have a size in bits that is a multiple of 8.) Depending on the binary, either no exception was thrown or the wrong exception was thrown (because c_p->freason was not set). Noticed-by: Adam Rutkowski
2012-10-24Merge branch 'egil/ensure-erl_crash.dump/OTP-10422' into maintBjörn-Egil Dahlberg
* egil/ensure-erl_crash.dump/OTP-10422: test: Relax timeouts for heart_SUITE erts: Fix crash dump write to port hack erts: Fix lock check assertion doc: Document ERL_CRASH_DUMP_SECONDS behaviour test: Add test for heart restart on crash test: Add test for heart restart on crash erts: Change ERL_CRASH_DUMP_SECONDS behaviour test: Refactor away ?line macros in heart_SUITE erts: Search for heart in ports that are alive heart: Refactor heart debugging erts, heart: Ensure erl_crash.dump is written
2012-10-23erts: Fix lock check assertionBjörn-Egil Dahlberg
2012-10-16erts: Change ERL_CRASH_DUMP_SECONDS behaviourBjörn-Egil Dahlberg
Not setting ERL_CRASH_DUMP_SECONDS will now terminate beam immediately on a crash without writing a crash dump file. Setting ERL_CRASH_DUMP_SECONDS to 0 will also terminate beam immediately on a crash without writing a crash dump file, i.e. same as not setting ERL_CRASH_DUMP_SECONDS environment variable. Setting ERL_CRASH_DUMP_SECONDS to a negative value will let the beam wait indefinitely on the crash dump file being written. Setting ERL_CRASH_DUMP_SECONDS to a positive value will let the beam wait that many seconds on the crash dump file being written. A positive value will set both an alarm in beam AND a heart timeout for restart if heart is running. This is due to the change of 'heart' behavior when 'heart' is listening for a crash.
2012-10-15erts: Search for heart in ports that are aliveBjörn-Egil Dahlberg
2012-10-15erts, heart: Ensure erl_crash.dump is writtenBjörn-Egil Dahlberg
When a crash dump is about to be written and we have heartbeat enabled on a system. We need time to write it before heart explicitly kills the beam.
2012-10-09Use reduction limit in order to determine when to do wakeupRickard Green
2012-10-09Add comment about eproviderfailedinit errorLukas Larsson
2012-08-31Update copyright yearsBjörn-Egil Dahlberg
2012-08-29Merge branch 'sverk/port-data-lock-bug' into maintSverker Eriksson
* sverk/port-data-lock-bug: Fix premature deallocation bug of port data lock
2012-08-29Merge branch 'ta/docsmaint' into maintHenrik Nord
* ta/docsmaint: Fix various doc typos for R15B02 Fix various code typos for R15B02 OTP-10245
2012-08-28Fix premature deallocation bug of port data lockSverker Eriksson
Release port data lock *after* "async_ready" or "free" callback has been called.
2012-08-27Merge branch 'psi/fix-leap-seconds/OTP-10227' into maintFredrik Gustafsson
2012-08-24Merge branch 'msp/double_middle_endian/OTP-10209' into maintLukas Larsson
* msp/double_middle_endian/OTP-10209: Configure now assumed normal doubles Revise the autoconf tests for double middle endianness. Add test for floating-point output to float_SUITE. Unbreak floating point on middle-endian machines.
2012-08-23Merge branch 'sverk/ets-test_ms-bug/OTP-10190' into maintSverker Eriksson
* sverk/ets-test_ms-bug/OTP-10190: Fix bug in ets:test_ms/2.
2012-08-21Fix bug in ets:test_ms/2.Sverker Eriksson
copy_shallow was called when using '$_'
2012-08-20Merge branch 'pan/unicode_home/OTP-10160' into maintPatrik Nyblom
* pan/unicode_home/OTP-10160: Teach release_handler_SUITE about file:native_name_encoding/0 Add documetation about Unicode in environment Make get/putenv and erlexec understand Unicode
2012-08-20Merge branch 'slf/slf-relocate-dtrace-N-probes/OTP-10189' into maintFredrik Gustafsson
* slf/slf-relocate-dtrace-N-probes/OTP-10189: Relocate bodies of DTrace probes to the statically-linked VM.
2012-08-20Merge branch 'psi/fix-clever-mktime/OTP-10187' into maintFredrik Gustafsson
* psi/fix-clever-mktime/OTP-10187: Fix use of "clever" mktime
2012-08-17Relocate bodies of DTrace probes to the statically-linked VM.Scott Lystig Fritchie
Due to various operating systems (in both the DTrace and SystemTap worlds) not fully supporting DTrace probes (or SystemTap-compatibility mode probes) in shared libraries, we relocate those probes to the statically-linked virtual machine. This could be seen as pollution of the pristine VM by a (yet) experimental feature. However: 1. This code can be eliminated completely by the C preprocessor. 2. Leaving the probes in the dyntrace NIF shared library simply does not work correctly on too many platforms. *Many* thanks to Macneil Shonle at Basho for assisting when my RSI-injured fingers gave out. Tested on: * CentOS 5, SystemTap 1.3 * Solaris 10 (note) * Solaris 11 * OpenIndiana 151 * SmartOS 20120809T221258Z * FreeBSD 9.0-RELEASE (note) I had hoped to be able to test CentOS 6 + SystemTap 1.7, but the details of dealing with all dependencies for a 2.6.32-279.5.1.el6.x86_64 kernel are too time consuming right now. (note: Solaris 10 and FreeBSD 9.0-RELEASE can take a long time to compile)
2012-08-14Make get/putenv and erlexec understand UnicodePatrik Nyblom
Putenv and getenv needs to convert to the proper environment strings in Unicode depending on platform and user settings for filename encoding. Also erlexec needs to pass environment strings in an appropriate way for kernel to pick up. All environment strings on the command line, as well as home directory, is now passed in UTF8 on windows and in whatever encoding you have on Unix, kernel tries to convert all parameters and environments from UTF8 before making strings.
2012-08-14Fix corrupted binaries in compressed ETS tablesSverker Eriksson
2012-08-14Make ETS compile with #define DEBUG_CLONESverker Eriksson
2012-08-01Fix support for leap seconds-aware timezonesPiotr Sikora
erlang:universaltime_to_localtime is leap seconds-aware (since 2008), however erlang:localtime_to_universaltime is not, which gives surprising results on systems configured with leap seconds-aware timezones: 1> erlang:universaltime_to_localtime({{2012,1,1},{0,0,0}}). {{2012,1,1},{0,0,0}} 2> erlang:localtime_to_universaltime({{2012,1,1},{0,0,0}}). {{2012,1,1},{0,0,24}} and completely breaks calendar:local_time_to_universal_time_dst: 3> calendar:local_time_to_universal_time_dst({{2011,1,1},{0,0,0}}). [] Signed-off-by: Piotr Sikora <[email protected]>
2012-08-01Fix use of "clever" mktimePiotr Sikora
Commit 1eef765 introduced regression (conditional _always_ evaluates to true) in which erlang:localtime_to_universaltime/2 stopped working on systems configured with timezone without DST (i.e. UTC) on *BSD platforms: 1> erlang:localtime_to_universaltime({{2012,1,1},{0,0,0}}, true). ** exception error: bad argument Signed-off-by: Piotr Sikora <[email protected]>
2012-07-31Merge branch 'rickard/proc-lock-queues/OTP-10163' into maintRickard Green
* rickard/proc-lock-queues/OTP-10163: Use static allocation of process lock queues
2012-07-31Merge branch 'rickard/dealloc/OTP-10162' into maintRickard Green
* rickard/dealloc/OTP-10162: Improve the enqueue operation of delayed dealloc Implement delayed aux work wake up
2012-07-31Use static allocation of process lock queuesRickard Green
By using statically allocated lock queues there is no longer any need for locking corresponding pix lock when process locks have been transferred after a wait. This costs us 3 words extra in process structure, but improves performance during contention.
2012-07-31Improve the enqueue operation of delayed deallocRickard Green
The enqueue operation have been re-written to behave better during heavy contention by spreading writes over multiple locations. This enqueue operation also take advantage of the delayed aux work wake up functionality and can by this omit one memory barrier.
2012-07-31Implement delayed aux work wake upRickard Green
By using a delayed aux work wake up approach, a memory barrier can be omitted in the delayed dealloc enqueue operation. The amount of operations, on the potentially contended, wake up structure is also reduced.
2012-07-06Merge branch 'sz/dtrace-message-send-fix' into maintHenrik Nord
* sz/dtrace-message-send-fix: DTrace bug in message-send OTP-10142
2012-07-05Fix various code typos for R15B02Tuncer Ayaz
2012-06-20Merge branch 'rickard/thr-prgr-use/OTP-10116' into maintRickard Green
* rickard/thr-prgr-use/OTP-10116: Fix faulty use of thread progress in handle_aux_work()
2012-06-18Fix faulty use of thread progress in handle_aux_work()Rickard Green
As an optimization old thread progress data was kept and used in handle_aux_work() in erl_process.c. This could cause memory to be deallocated at a later time than intended, which is quite harmless. This has, however, now been fixed.
2012-05-11DTrace bug in message-sendzheng siyao
dtrace doesn't print sender pid and receiver pid in message related probe correctly, it truncates pid string to 7 characters on 64bit platform(or 3 characters on 32bit platform). The dtrace related code did not set the string length correctly, it sets the string length to the length of a pointer rather than the buffer length.
2012-05-10Remove stale code for hybrid heap and incremental GCBjörn Gustavsson
The hybrid heap emulator was last working in the non-SMP R11B run-time system. When the constant pools were introduced in R12B, the hybrid heap emulator was not updated to handle them. At this point, the harm from reduced readability of the code is greater than any potential usefulness of keeping the code.