Age | Commit message (Collapse) | Author |
|
|
|
|
|
(First attempt to fix in 23f132d9ab776a.)
If an synchronous GC was requested by calling:
erlang:garbage_collect(Pid, [{async,Ref}])
the reply message could in certain circumstances be
lost.
The problem is that cleanup_sys_tasks() is never called
if there are dirty tasks, but no other active system tasks.
Also shorten the long waiting times in the test case
binary_SUITE:trapping/1 to make it much more likely that
the GC have not already finished when the process is killed.
|
|
The garbage_collect message could be received while waiting for trace messages,
causing the test to crash erroneously.
|
|
* bjorn/cuddle-with-tests:
bs_construct_SUITE: Correct calculation of free memory
|
|
free_mem/0 returned the number of free Kb, but the caller
assumed that it was in Mb.
Also add another clause to further scale down the size of
the binaries created.
|
|
and base allowed hash deviation on nr of standard deviations
to make it easier to fiddle with the work load.
|
|
* sverker/enif_select-testing:
erts: Fix nif_SUITE:monitor_frenzy for threadless
erts: Improve message flush in nif_SUITE
erts: Test monitor resource destructor from thread
|
|
|
|
Pass number of expected messages in order to
wait longer for messages (for slow machines)
while not wasting test time waiting for nothing.
|
|
which is scheduled on non-smp VM.
|
|
#### Why do we need this new feature?
There are cases when a NIF needs to send a message, using `enif_send()`, to a long-lived process with a registered name.
A common use-case is logging, where asynchronous fire-and-forget messages are the norm.
There can also be cases where a yielding or dirty NIF or background thread may request a callback from a service with additional information it needs to complete its operation, yielding or waiting (with suitable timeouts, etc) until its state has been updated through the NIF module's API.
NIFs can only send messages to pids, and the lack of name resolution leaves a complicated dance between separate monitoring processes and the NIF as the only way to keep a NIF informed of the whereabouts of such long-lived processes.
Providing a reliable, built-in facility for NIFs to resolve process (or port) names simplifies these use cases considerably.
#### Risks or uncertain artifacts?
Testing has not exposed any significant risk.
The implementation behaves as expected on regular and dirty scheduler threads as well as non-scheduler threads.
By constraining the `enif_whereis_...()` functions to their minimal scopes and using patterns consistent with related functions, the implementation, testing, and maintenance burden is low.
The API and behavior of existing functions is unchanged.
#### How did you solve it?
While extending `enif_send()` to operate on a pid or an atom (as `erlang:send/2` does) was attractive, it would have entailed changing the type of its `to_pid` parameter and thereby breaking backward compatibility.
The same consideration applies to `enif_port_command()`.
That leaves a choice between 1, 2, or 3 new functions:
1. `enif_whereis()`
2. `enif_whereis_pid()` and `enif_whereis_port()`
3. All of the above.
While option (1), directly mimicking the behavior of `erlang:whereis/1`, is appealing, it poses potential problems if `pid()` or `port()` are subsequently implemented as non-integral types that must be bound to an owning `ErlNifEnv` instance.
Therefore, option (2) has been chosen to use `ErlNifPid`/`ErlNifPort` structures in the API to maintain proper term ownership semantics.
|
|
OTP-14152
* rickard/ds-runqs:
Make statistics/1 aware of dirty run-queues and tasks
|
|
|
|
|
|
|
|
* sverker/is_module_native-trace-bug/OTP-14390:
erts: Fix code:is_module_native for local trace
erts: Move and rename erts_is_native_break()
|
|
|
|
Local trace on first function in module
made code:is_module_native/1 return true.
Use new erts_is_function_native() to make a proper check.
|
|
|
|
Support hashing terms from NIF code
|
|
* lukas/erts/list_to_port/OTP-14348:
erts: Add erlang:list_to_port/1 debug bif
erts: Auto-import port_to_list for consistency
erts: Polish off erlang:list_to_ref/1
|
|
|
|
* lukas/erts/deprecate-non-smp/OTP-14272:
erts: Fix testcases for smp +S 1:1
erts: Deprecate the non-smp emulators
|
|
|
|
|
|
Allow for expanding support to 64-bit hashes without breaking the
interface.
|
|
|
|
|
|
|
|
|
|
A more generic hashing function which can also hash terms based on
`make_internal_hash'.
|
|
|
|
|
|
It is no longer possible to commuicate with R9B nodes.
|
|
It is no longer possible to communicate with R15B nodes.
|
|
These allow one to hash VM terms from NIF code.
|
|
* sverker/remove-latin1-atom-encoding:
kernel: Fix erl_distribution_wb_SUITE:whitebox
kernel: Remove pg2_SUITE:compat
erts: Remove fun_r13_SUITE
stdlib: Remove test cases for R12 io protocol
kernel: Make DFLAG_UTF8_ATOMS mandatory
kernel: Rewrite distribution flag verification
tools: Update assumptions in lcnt about external atom format
stdlib: Tweak beam_lib_SUITE whitebox assumptions
orber: Remove hard dependency to external atom format
kernel: Try mend disk_log whitebox tests
erts: Mark latin1 atom encoding as deprecated
jinterface: Do not generate atoms on old latin1 external format
erl_interface: Do not generate atoms on old latin1 ext format
erts: Do not generate atoms on old latin1 external format
erts: Fix faulty ASSERT for failed dec_term
|
|
* rickard/node_container_SUITE.spec:
Add node_container_SUITE spec
|
|
* rickard/test-fix:
Fix scheduler_SUITE:update_cpu_info test-case
|
|
OTP-14331
* rickard/pcre-8.40:
Update documentation
Update README.pcre_update.md
Stack guard for PCRE
Adjust for incompatibility between PCRE 8.40 and perl 5.22.1
Generate re replacement and split tests with perl vsn 5.22.1
Fix re_SUITE:pcre_compile_workspace_overflow/1
Skip line with lockout of modifiers in PCRE tests
Update tests for PCRE version 8.40
Update PCRE to version 8.40
Conflicts:
erts/emulator/beam/beam_debug.c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* maint:
Ensure prim_eval:'receive' wont clobber def_arg_reg[0]
Conflicts:
erts/preloaded/ebin/prim_eval.beam
|
|
OTP-14241
* rickard/prim_eval_receive:
Ensure prim_eval:'receive' wont clobber def_arg_reg[0]
|
|
* egil/pretty-print-maps-smaller/OTP-14239:
stdlib: Use erts_internal:maps_to_list/2 in io_lib_pretty
Update preloaded erts_internal.beam
erts: Test erts_internal:maps_to_list/2
erts: Introduce erts_internal:maps_to_list/2
|