Age | Commit message (Collapse) | Author |
|
Conflicts:
erts/emulator/beam/erl_process.c
|
|
Ensure that the return value from a dirty NIF call is made part of the GC
rootset. Add a new regression test to nif_SUITE.
Thanks to Daniel Goertzen for reporting the error and providing a test
case, and to Sverker Eriksson for making test case reproducible and finding
the fix.
|
|
|
|
* sverk/beam-ranges-bug/OTP-12273:
erts: Fix bug in beam_ranges
|
|
* sverk/yielding-distr-send/OTP-12232:
erts: Add constant TERM_TO_BINARY_MEMCPY_FACTOR
erts: Optimize some repeated calls to {E,W}STACK_PUSH
erts: Yield in term_to_binary when encoding big maps
erts: Remove unnecessary goto for fun encoding
erts: Yield in term_to_binary while copying large binaries
erts: Implement yielding for distributed send of large messages
|
|
and do not piggyback on B2T_MEMCPY_FACTOR
|
|
This patch allows checking for NIF API version in a way similar to
driver version. E.g. by calling erlang:system_info(nif_version).
Signed-off-by: Peter Lemenkov <[email protected]>
|
|
Symptom: VM on OSX (darwin11.4.2) with +Meamin running sasl tests,
crashing when init:reboot() does erlang:purge_module(installer).
Problem: Off-by-one bug in beam_ranges:find_range, returning the wrong
range if the 'end' of one module is the 'start' of the next. This is only
possible if using sys_alloc (+Meamin) as our own allocators always put
block headers between allocated payload data.
|
|
|
|
* sverk/cpool_fetch-dc_list-bug/OTP-12249:
erts: Fix bug when delayed deallocated carrier is reused by cpool_fetch
|
|
* egil/nox/maps-match_specs/OTP-12270:
erts: Fix return value from erts_maps_get to be const
Properly support maps in match_specs
Support maps in ms_transform
Return pointer to value in erts_maps_get()
|
|
* maint:
Use isfinite() instead of finite() when available
|
|
* sv/isfinite/OTP-12268:
Use isfinite() instead of finite() when available
|
|
OS X Mavericks builds result in a number of warnings about finite() being
deprecated, like these:
beam/erl_arith.c:451:7: warning: 'finite' is deprecated: first deprecated in OS X 10.9 [-Wdeprecated-declarations]
ERTS_FP_ERROR(p, f1.fd, goto badarith);
^
sys/unix/erl_unix_sys.h:319:33: note: expanded from macro 'ERTS_FP_ERROR'
^
sys/unix/erl_unix_sys.h:244:51: note: expanded from macro '__ERTS_FP_ERROR'
^
/usr/include/math.h:718:12: note: 'finite' has been explicitly marked deprecated here
extern int finite(double) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_9, __IPHONE_NA, __IPHONE_NA);
Add checks to use isfinite() instead of finite() where available. Verified
on OS X Mavericks 10.9.5 and Ubuntu 12.04.
|
|
|
|
OTP-12266
* vinoski/erl-nif-init:
Fix missing field initializer in ERL_NIF_INIT macro
|
|
From "warning: assignment discards qualifiers from pointer target type"
|
|
* egil/fix-instruction-counter:
erts: Fix SMP for ERTS_OPCODE_COUNTER_SUPPORT
erts: Add icount build type for opcode counter
|
|
Running "erl -smp disable" on an emulator built with dirty scheduler
support caused problems such as segmentation violations and emulator status
line outputs containing garbage. For example:
$ erl -smp disable
Segmentation fault (core dumped)
and:
$ erl -smp disable
Erlang/OTP 17 [DEVELOPMENT] [erts-6.2] [source] [64-bit] [ds:10:4297895689:4299948152] [async-threads:280]
This problem also caused the emulator smoke_test_SUITE to hit these same
problems if run in an emulator started with the "-smp disable" option.
Fix this segmentation violation by ensuring that dirty scheduler
information is printed in the status line only when the emulator is
compiled with ERTS_SMP enabled.
With this fix in place, the smoke_test_SUITE now passes when the "-smp
disable" option is used, and the emulator status line prints correctly for
both "-smp enable" and "-smp disable":
$ erl -smp enable
Erlang/OTP 17 [DEVELOPMENT] [erts-6.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:10] [kernel-poll:false]
and:
$ erl -smp disable
Erlang/OTP 17 [DEVELOPMENT] [erts-6.2] [source] [64-bit] [async-threads:10] [kernel-poll:false]
|
|
* sverk/hipe-inline-reserve-trap-frame:
erts: Extend usage of ASM macro to avoid including asm macros in C code
erts: Make hipe_{un}reserve_beam_trap_frame INLINE
|
|
|
|
* rickard/default-eager-check-io/OTP-12254:
Change default to "eager check I/O"
|
|
* rickard/master/eager-check-io/OTP-12117:
No eager check I/O on OSE
Introduce support for eager check I/O scheduling
|
|
* rickard/maint-17/eager-check-io/OTP-12117:
No eager check I/O on OSE
Introduce support for eager check I/O scheduling
|
|
* lukas/erts/non-blocking-shell:
Fix io:columns/0 timeout when invoked via user
kernel,ssh: Add synchronous user_drv protocol
erts: Make writing to non-tty fds non-blocking
erts: Make tty driver non-blocking
|
|
Set IN_POOL flag _after_ mbc has been actually inserted.
Earlier it did not matter if IN_POOL was set early as it was not possible
to find a carrier before is was fully inserted. Now when searching
pooled_list and traitor_list we must make sure a found carrier has been
fully inserted into cpool before removing it.
|
|
If the fd_driver is given non-tty fds it will now use an async thread
instead of doing a blocking write. An example of a non-tty fd is the
fd used by stderr, but could be anything handed down to the driver.
|
|
Cleanup macro code.
|
|
|
|
Clear both IN_POOL and BUSY flags when empty carrier is removed
is removed from pool to be destroyed.
Earlier it was enough to leave BUSY flag set but now with pooled_list
we must clear IN_POOL to avoid using it as cpool_entrance in cpool_fetch().
|
|
|
|
The delayed dealloc queue destroyes one word but cpool_fetch() is expected
to return healthy carriers.
So we restore that overwritten word with a little bit of hackish code.
|
|
|
|
In the ERL_NIF_INIT macro, add a missing static initializer for the new
options field which was added to the ErlNifEntry struct for 17.3. This fix
prevents compile-time errors in NIFs when the compiler is instructed to
treat missing field initializers as errors.
|
|
Always update prt->data with atomic xchg-op.
Check for NULL data to detect racing port terminator.
Use NULL, as THE_NON_VALUE can be a valid pointer on debug VM.
|
|
hsize field was not set leading to VM crash
|
|
Conflicts:
erts/emulator/beam/erl_process.c
|
|
rickard/master/eager-check-io/OTP-12117
* rickard/maint-17/eager-check-io/OTP-12117:
No eager check I/O on OSE
Introduce support for eager check I/O scheduling
Conflicts:
erts/preloaded/ebin/erlang.beam
|
|
|
|
rickard/maint-17/eager-check-io/OTP-12117
* rickard/eager-check-io/OTP-12117:
Introduce support for eager check I/O scheduling
Conflicts:
erts/emulator/beam/erl_bif_info.c
erts/emulator/beam/erl_init.c
erts/emulator/beam/erl_process.c
erts/preloaded/ebin/erlang.beam
|
|
|
|
|
|
* sverk/bin-alloc-refactor:
erts: Fix gdb command etp-carrier-blocks for 32-bit
erts: Refactor binary allocation interface to also initialize Binary
|
|
Enables ERTS_OPCODE_COUNTER_SUPPORT.
|
|
|
|
and add 'dirty_scheduler_support' to ErlNifSysInfo
|
|
enif_schedule_nif() put LAST of the unconditional functions to keep the
order which is vital for ABI compatibility on Windows.
The conditional dirty scheduler stuff moved down at the end of the list
to keep them out of the way. We don't want them mess things up then they
become unconditional some day.
|
|
* egil/erlang-get_keys/OTP-12151:
Update preloaded erlang.beam
erts: Document erlang:get_keys/0
stdlib: Auto-import erlang:get_keys/0
erts: Add spec for erlang:get_keys/0
kernel: Test BIF erlang:get_keys/0
erts: Add BIF erlang:get_keys/0
|
|
Change so that we print that the we generating a crash dump
before we actually generate it. So that if a huge crashdump is
being dumped, the user knows that something is going on.
|
|
* maint:
Fix leak of NIF exports
Use separate allocation type for NIF export
|