Age | Commit message (Collapse) | Author |
|
When INT64_MIN is the value of a Sint64 we have to first cast it to
an Uint64 before negating it. Otherwise we get an integer overflow
which is undefined behaviour and in gcc 4.9 this results in -0 instead
of -9223372036854775808 in gcc 4.8.
|
|
|
|
|
|
|
|
* nox/fix-perms:
Fix permissions of some files in the repository
|
|
* rickard/binary_to_term_error/OTP-11931:
Replace erlang:binary_to_term() Erlang wrappers
Conflicts:
erts/preloaded/ebin/erts_internal.beam
|
|
* rickard/yielding-binary-list-conversions/OTP-11888:
Add test-case comparing old and new implementations
Make binary BIFs converting from lists yield on large input
Make binary BIFs converting to lists yield on large input
|
|
* rickard/disable-gc-fix/OTP-11887:
Do not GC other processes in non-smp runtime
Fix conversion of empty string in erts_convert_native_to_filename()
Add support for failing in BIF that has trapped
HiPE wrappers for BIFs disabling GC
|
|
Replace the 'erlang:binary_to_term/1' and 'erlang:binary_to_term/2'
Erlang wrappers taking care of failure after yield with management
of this in the hidden yield BIF.
|
|
* etsukata/system_info_tolerant_timeofday/OTP-11970:
Add erlang:system_info(tolerant_timeofday)
|
|
* lukas/erts/fix_trace_on_registered_procs/OTP-11968:
erts: tracing on send now works for registered processes
|
|
This bug was introduced in R16B. Testcases have been adapted to
verify the correct behaviour.
|
|
* fenek/fix/vstudio_macro:
Add Visual Studio macros to erl_driver.h and ei.h
|
|
These files aren't supposed to be executable. For reference, the command used to
find them was:
git ls-files -z | xargs -0 -J % find % -type f -perm ++x
|
|
- erlang:list_to_binary/1
- erlang:iolist_to_binary/1
- erlang:list_to_bitstring/1
- binary:list_to_bin/1
|
|
|
|
- erlang:binary_to_list/1
- erlang:binary_to_list/3
- erlang:bitstring_to_list/1
|
|
|
|
|
|
|
|
* egil/fix-erts_debug-size/OTP-11923:
erts: Update preloaded erts_internal.beam
erts: Add spec for erts_internal:map_to_tuple_keys/1
erts: Add testcase for erts_debug:size/1 Map terms
kernel: Fix erts_debug:size/1 to handle Map sizes
erts: Add erts_internal:map_to_tuple_keys/1
|
|
|
|
* sverk/ets-delete-unfix-race/OTP-11892:
Fix race between ETS table deletion and unfixation
erts: Add etp commands for alloc_util block and carrier inspection
|
|
* lukas/erts/suspend_assert/OTP-11906:
erts: Fix faulty process suspend assert
|
|
|
|
* lukas/erts/etp-lc-macros/OTP-11904:
erts: Add etp-lc-dump and etp-ppc-stacktrace macro
|
|
* Used for introspection.
* Will return the internal key tuple if applicable
* Not documented - not for public use
|
|
Symptom: VM crash running mnesia_SUITE
Scenario: Process A terminates while still having fixed table T
and process B "at the same time" deletes table T with ets:delete/1 or
by terminating.
Problem: A table scheduled for deallocation do only have a valid
'common' part. The unfix-table-at-process-exit code tried to read the
hash-specific part of such a table.
Solution: Must back off if DB_DELETE flag is set.
Since: R16B
|
|
Add erlang:system_info(tolerant_timeofday), an API to check whether
compensation for sudden changes of system time is enabled or not.
|
|
No message for large_heap monitoring was ever sent on non-smp VM.
Bug introduced in R16B.
|
|
* sverk/suspend-running-race:
erts: Fix bug of scheduling a suspended process
|
|
Reference-count the NIF before and after invoking a NIF on dirty schedulers
to prevent having the NIF purged during the call.
|
|
Dirty NIF support used an Export structure to facilitate calls to dirty
NIFs and finalizers, but Export isn't large enough to hold all necessary
data. This was causing an invalid memory read in beam_emu.c past the end of
the Export object. Add a local extended Export struct to erl_nif.c that can
hold all the necessary data.
|
|
|
|
This is a race that can cause RUNNING (instead of RUNNING_SYS)
set on a SUSPENDED process. The effect of this race happening is probably
quite benign.
The bug was discovered by process_SUITE:processes_gc_trap on debug VM
crashing on last assert in schedule():
/* Never run a suspended process */
ASSERT(!(ERTS_PSFLG_SUSPENDED & erts_smp_atomic32_read_nob(&p->state)));
|
|
to not mistake a map for an external term (pid, port or ref).
|
|
The subtag chosen for maps breaks crucial assumptions in other parts of
the system, in particular the native code generation scheme used in the
HiPE compiler. Therefore it is better to use 'the other' unused subtag.
The main change here is the use of 0xF subtag for maps instead of 0xB.
The rest of the differences are changes to and additions of comments.
One more comment from my part.
I noticed that the file contains the following two lines:
The comment of the second line is most certainly a copy and paste error
and should be appropriately fixed by the OTP developers. More importantly,
it would be great if that subtag (0x7) turned out to be unused and could
be used for maps instead of the 0xF one. This might turn out very handy
in the future. I can elaborate on this, if needed.
|
|
* sverk/maps_remove_bug:
erts: Fix heap overflow in maps:remove/2 when key is not found
|
|
* sverk/win-warning-io:
erts: Fix compile warning in io.c for windows
|
|
|
|
* paulgray/dtrace_snprintf_fix/OTP-11816:
Fix DTrace/SystemTap-related formatting
|
|
Thanks to Michał Ptaszek for bringing this embarrassing formatting error to
my attention. Many DTrace/SystemTap trace strings are incorrectly
truncated at 4/8 bytes, depending on the CPU word size. This patch expands
the work from commit d032e097 by zheng siyao.
Michał's report to the erlang-bugs list can be found at:
http://erlang.org/pipermail/erlang-bugs/2014-March/004250.html
Conflicts:
erts/emulator/beam/beam_emu.c
erts/emulator/beam/copy.c
erts/emulator/beam/dist.c
erts/emulator/beam/erl_async.c
erts/emulator/beam/erl_bif_port.c
erts/emulator/beam/erl_port_task.c
erts/emulator/beam/erl_process.c
erts/emulator/beam/io.c
|
|
* paulgray/dtrace_snprintf_fix/OTP-11816:
Pass full strings to DTrace probes
|
|
* fogfish/embedded-arm-android:
Raspberry PI / Android a minimal cross-compile configuration
OTP-11805
|
|
One key-value pair too many was copied.
|
|
|
|
Enable a cross compile Erlang/OTP platform to Android or Raspberry PI
using Android NDK. Port emulator and core application to support target
HW platform. Exclude any add-on services required for OTP platform deployment
into target hardware due to device fragmentation and jail-break requirements.
* fix erts/emulator/beam/sys.h
Disable redefinition of __noreturn macro
* port erts/emulator/sys/unix/erl_child_setup.c
Use techniques proposed by https://code.google.com/p/erlang4android to
access system properties
* fix erts/emulator/sys/unix/erl_unix_sys_ddll.c
The static linking of emulator cannot find dlerror(), dlopen() symbols
* port erts/emulator/sys/unix/sys.c
make path to shell configurable at build time
* port erts/etc/common/Makefile.in
disable librt for *-linux-androideabi
* port erts/lib_src/pthread/ethread.c
Use techniques proposed by https://code.google.com/p/erlang4android to
disable emulator crash if kernel threads are on. Replace unreliable
pthread_sigmask() by sigprocmask()
* port lib/erl_interface/src/connect/ei_connect.c
Disable call to undefined gethostid()
* port lib/erl_interface/src/connect/ei_resolve.c
Use gethostbyname_r() on Android platform
|
|
* vinoski/ds-enif-send:
enable enif_send to work from a dirty scheduler
|
|
* bjorn/erts/fix-lingering-tracer:
Teach the call_time trace to notice when the trace dies (non-SMP system)
|
|
The call_time trace is a special kind of tracing that requires
a tracer process just like ordinary call trace, but it never
actually sends anything to the tracer. It merely use the existence
of a trace process (and call trace flags) as an indication that
call_time tracing is active for the process.
If the tracer dies in a non-SMP run-time system, processes with
call_time tracing would not notice that the tracer had
died. Furthermore, if the set_on_spawn flag was active, the dead
tracer could be propagaged to newly spawned processes.
Before accumulating trace information in a non-SMP system, always
validate the tracer process. (In an SMP system, a reference to a
dead tracer will be cleared away each time a process is scheduled.)
While we could put all of the new code beam_bp.c, we have chosen to
make a function call from beam_bp.c to a function in erl_trace.c for
clarity's sake and to ease further maintenance. In the future, we
might want to handle tracing in more similar ways in the SMP and
non-SMP system.
|