aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
AgeCommit message (Collapse)Author
2017-08-30erts: Fix memory leak when sending to terminating portSverker Eriksson
Error: Leak_DefinitelyLost erts_alloc:230 (-> 0x52E54D) [erl_alloc.h] port_task_alloc:154 (-> 0x52F3CA) [erl_port_task.c] erts_port_task_alloc_p2p_sig_data:212 (-> 0x52F5D3) [erl_port_task.c] erts_port_output:2147 (-> 0x4F6057) [io.c] erts_port_command:4126 (-> 0x4FA10E) [io.c] do_send:2200 (-> 0x4E4C64) [bif.c] erl_send:2494 (-> 0x4E5E09) [bif.c] process_main:1730 (-> 0x43ADA5) [beam_emu.c]
2017-08-28erts: Fix harmless use of uninitialised valueSverker Eriksson
Conditional jump or move depends on uninitialised value(s): erts_msgq_update_internal_pointers:487 (-> 0x5A7AF9) [erl_message.h] erts_msgq_replace_msg_ref:496 (-> 0x5A7B4C) [erl_message.h] move_msgq_to_heap:2487 (-> 0x5AED4F) [erl_gc.c] minor_collection:1380 (-> 0x5AB3F4) [erl_gc.c]
2017-08-24Merge branch 'rickard/btm-auto-cleanup-bug/OTP-14554' into maintRickard Green
* rickard/btm-auto-cleanup-bug/OTP-14554: Fix BIF timer race between timeout and auto cleanup
2017-08-24Merge branch 'rickard/timer-sid-bug/OTP-14548' into maintRickard Green
* rickard/timer-sid-bug/OTP-14548: Fix scheduler id field in timers Conflicts: erts/emulator/beam/erl_hl_timer.c
2017-08-24Merge branch 'maint-20' into maintRaimo Niskanen
* maint-20: Updated OTP version Prepare release Accept non-binary options as socket-options Bump version Fix broken handling of default values in extensions for PER compiler: Fix live regs update on allocate in validator Take fail labels into account when determining liveness in block ops Check for overflow when appending binaries, and error out with system_limit
2017-08-23Fix BIF timer race between timeout and auto cleanupRickard Green
2017-08-23Fix scheduler id field in timersRickard Green
2017-08-23Merge branch 'rickard/unicode-display_string/OTP-14545' into maintRickard Green
* rickard/unicode-display_string/OTP-14545: Unicode support for erlang:display_string/1
2017-08-23Unicode support for erlang:display_string/1Rickard Green
2017-08-23Merge branch 'sverker/halt-unicode-slogan/OTP-14553' into maintSverker Eriksson
* sverker/halt-unicode-slogan/OTP-14553: erts: Allow any unicode string as crash dump slogan erts: Generate crash_dump slogan string as UTF8 erts: Refactor erts_unicode_list_to_buf
2017-08-23erts: Allow any unicode string as crash dump sloganSverker Eriksson
i.e the first argument to erlang:halt
2017-08-23Merge branch 'john/erts/fix-binary-append-syslimit/OTP-14524' into maint-20Erlang/OTP
* john/erts/fix-binary-append-syslimit/OTP-14524: Check for overflow when appending binaries, and error out with system_limit # Conflicts: # erts/emulator/test/bs_construct_SUITE.erl
2017-08-16Merge branch 'lukas/erts/fix_dirty_trace_message_flush/OTP-14538' into maintLukas Larsson
* lukas/erts/fix_dirty_trace_message_flush/OTP-14538: erts: Must have main lock when flushing trace messages
2017-08-01Check for overflow when appending binaries, and error out with system_limitJohn Högberg
This fixes the following bug: A = <<0:((1 bsl 32)-8)>>, B = <<2, 3>>. B =:= <<A/binary,1,B/binary>>. %% Evaluated to true...
2017-07-26Merge branch 'sverker/big-bxor-bug/ERL-450/OTP-14514' into maint-20Erlang/OTP
* sverker/big-bxor-bug/ERL-450/OTP-14514: erts: Fix bug in bxor of a big negative number
2017-07-25Merge branch 'sverker/enif_whereis-bug/OTP-14523' into maintSverker Eriksson
* sverker/enif_whereis-bug: erts: Fix bug in enif_whereis_pid/port
2017-07-25Merge branch 'john/erts/use-lock-flags-in-lc' into maintJohn Högberg
2017-07-13Merge branch 'sverker/big-bxor-bug/ERL-450/OTP-14514' into maintSverker Eriksson
* sverker/big-bxor-bug/ERL-450/OTP-14514: erts: Fix bug in bxor of a big negative number
2017-07-12erts: Fix bug in bxor of a big negative numberSverker Eriksson
Wrong result for (X bsl WS) bxor Y. where X is any negative integer Y is any integer that does not require more words than X WS is erlang:system_info(wordsize) or larger Fix: The subtraction of 1 (for 2-complement conversion) must be carried along all the way to the last words.
2017-07-11erts: Fix bug in enif_whereis_pid/portSverker Eriksson
that could cause heap corruption if whereis lookup conflicts with other register updater AND other thread sends on-heap message while main lock is released. Also improved enif_whereis from dirty nifs by passing c_p as NULL.
2017-07-11Use erl_lock_flags in lock checkingJohn Högberg
2017-07-07Add a proper type for lock optionsJohn Högberg
2017-07-06erts: Generate crash_dump slogan string as UTF8Sverker Eriksson
the same as atoms.
2017-07-06Merge branch 'john/erts/runtime-lcnt' into maintJohn Högberg
* john/erts/runtime-lcnt: Document rt_mask and add warnings about copy_save Add an emulator test suite for lock counting Break erts_debug:lock_counters/1 into separate BIFs Allow toggling lock counting at runtime Move lock flags to a common header Enable register_SUITE for lcnt builds Enable lcnt smoke test on all builds that have lcnt enabled Make lock counter info independent of the locks being counted OTP-14412 OTP-13170 OTP-14413
2017-07-06Break erts_debug:lock_counters/1 into separate BIFsJohn Högberg
2017-07-06Allow toggling lock counting at runtimeJohn Högberg
The implementation is still hidden behind ERTS_ENABLE_LOCK_COUNT, and all categories are still enabled by default, but the actual counting can be toggled at will. OTP-13170
2017-07-06Move lock flags to a common headerJohn Högberg
2017-07-06Merge branch 'sverker/prealloc-race-bug/maint' into maintSverker Eriksson
* sverker/prealloc-race-bug/maint: erts: Increase pre-allocated blocks #ifdef DEBUG
2017-07-06erts: Refactor erts_unicode_list_to_bufSverker Eriksson
to get bytes written when truncated.
2017-07-04Merge branch 'maint-20' into maintJohn Högberg
* maint-20: Updated OTP version Update release notes Update version numbers erts: Fix bug in quick alloc Fix old length usage in string stdlib: Fix bug in proc_lib Support arbitrary crash report in proc_lib.
2017-06-30erts: Increase pre-allocated blocks #ifdef DEBUGSverker Eriksson
Choose a "lagom" low value to provoke both fallback on erts_alloc AND thread racing in lockless deallocation queue.
2017-06-30Merge branch 'sverker/prealloc-race-bug/OTP-14491' into maint-20Erlang/OTP
* sverker/prealloc-race-bug/OTP-14491: erts: Fix bug in quick alloc
2017-06-30Merge branch 'rickard/statistics/OTP-14484' into maint-20Erlang/OTP
* rickard/statistics/OTP-14484: Fix statistics(wall_clock) and statistics(runtime) implementation
2017-06-30Merge branch 'lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481' ↵Erlang/OTP
into maint-20 * lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481: fixup! erts: Cleanup dropped port tasks correctly erts: Add tests to detect port close race erts: Cleanup dropped port tasks correctly
2017-06-30erts: Fix bug in quick allocSverker Eriksson
The effect of the race is that a pre-allocated memory block is inserted last without updating tail.data.last, which will cause all subsequent insertions to also fail to update tail.data.last. Hence all pre-allocation for this quick alloc instance is leaked for this thread and will fallback on erts_alloc.
2017-06-29Merge branch 'sverker/erts/apply-badarg/ERL-432/OTP-14490' into maintSverker Eriksson
* sverker/erts/apply-badarg/ERL-432/OTP-14490: erts: Make apply throw 'badarg' if Args is not a list
2017-06-28Merge branch 'bjorn/erts/fix-gen-dest' into maintBjörn Gustavsson
* bjorn/erts/fix-gen-dest: Eliminate potential unsafe use of general destination
2017-06-27erts: Make apply throw 'badarg' if Args is not a listSverker Eriksson
instead of a strange 'undef' exception.
2017-06-27Merge branch 'maint-19' into maintJohn Högberg
* maint-19: Updated OTP version Update release notes Update version numbers Fix statistics(wall_clock) and statistics(runtime) implementation fixup! erts: Cleanup dropped port tasks correctly erts: Add tests to detect port close race Add a testcase for OTP-13939/ERL-193 erts: Cleanup dropped port tasks correctly Mark socket disconnected on tcp_send_or_shutdown_error
2017-06-26Merge branch 'rickard/statistics/OTP-14484' into maint-19Erlang/OTP
* rickard/statistics/OTP-14484: Fix statistics(wall_clock) and statistics(runtime) implementation
2017-06-26Merge branch 'lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481' ↵Erlang/OTP
into maint-19 * lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481: fixup! erts: Cleanup dropped port tasks correctly erts: Add tests to detect port close race erts: Cleanup dropped port tasks correctly
2017-06-26Eliminate potential unsafe use of general destinationBjörn Gustavsson
a3407eaa2104d6 eliminated the -gen_dest flag for macros in ops.tab. It turns out that the new implementation (taking the address of the X or X destination register) is unsafe if the destination is a Y register and there can be a GC. The problem is that the address to the Y register will change if there is a GC. Fortunately, the few instructions in OTP 20 that have a general destinations are safe. The put_list_ssd instruction never does a GC. The bit syntax instructions that may do a GC will always store the result to an X register. To be completely sure, rewrite the destination register from 'd' to 'x' for the bit syntax instructions. That means that a bit syntax instruction with a Y register destionation will abort the loading if it is encountered.
2017-06-22Fix statistics(wall_clock) and statistics(runtime) implementationRickard Green
2017-06-15erts: Must have main lock when flushing trace messagesLukas Larsson
If we don't have the main lock, multiple threads may come in and do the flush at the same time which will lead to all kinds of strang problems.
2017-06-15Merge branch 'hans/otp/update_copyright'Hans Nilsson
2017-06-14fixup! erts: Cleanup dropped port tasks correctlyLukas Larsson
2017-06-14Fix minor vsn 1 in term_to_binary/2 broken in this branchRickard Green
2017-06-14Update copyright yearHans Nilsson
2017-06-14Introduce minor vsn 2 in term_to_binary/2Rickard Green
2017-06-14erts: Cleanup dropped port tasks correctlyLukas Larsson
Before this fix, the extra data attached to a port task had to be cleaned up by the calling function. This caused problems because the outputv call, co-allocates the extra data with the port task. So in rare circumstances the port task would be free'd before the extra data was free'd which led to segfault when looking at the port task. This has been fixed by the generic PORT_TASK_ABORT behaviour being used even for tasks dropped in the erts_schedule_proc2port_signal API.