Age | Commit message (Collapse) | Author |
|
A process calling a fun from a module currently being soft-purged
could race with failure of the soft purge. When this happened the
call triggered loading of the module which erroneously would
load new code for the module in the case no new generation was
currently loaded.
|
|
* raimo/diffserv-socket-option/OTP-13582:
Tune 'tclass' semantics
Implement IPV6_TCLASS
|
|
* bjorn/erts/on_load/ERL-240/OTP-13893:
erts: Add nif_SUITE:t_on_load
erts: Improve nif_SUITE:upgrade test
Don't leak old code when loading a modules with an on_load function
|
|
|
|
|
|
|
|
|
|
to include upgrade from deleted (old) module instance
|
|
Normally, calling code:delete/1 before re-loading the code for a
module is unnecessary but causes no problem.
But there will be be problems if the new code has an on_load function.
Code with an on_load function will always be loaded as old code
to allowed it to be easily purged if the on_load function would fail.
If the on_load function succeeds, the old and current code will be
swapped.
So in the scenario where code:delete/1 has been called explicitly,
there is old code but no current code. Loading code with an
on_load function will cause the reference to the old code to be
overwritten. That will at best cause a memory leak, and at worst
an emulator crash (especially if NIFs are involved).
To avoid that situation, we will put the code with the on_load
function in a special, third slot in Module.
ERL-240
|
|
* rickard/test-cuddle:
Ensure long enough sleep in driver_SUITE:timer_delay driver
|
|
|
|
|
|
Do not decode distribution messages as part of the GC operation.
Distribution messages containing maps may generate heap fragments.
|
|
|
|
|
|
* sverker/beam-too-few-functions/ERL-244:
erts: Reject beam file with too few functions
|
|
* rickard/thr-prgr-unmanaged-delay-bug/OTP-13869:
Fix erts_thr_progress_unmanaged_delay()
|
|
* rickard/drv-send-term-thr-bug/OTP-13866:
Fix thread calls to erl_drv_send_term()/erl_drv_output_term()
Conflicts:
erts/emulator/beam/io.c
|
|
Thread progress leader update did not cache current unmanaged index
when waiting for unmanaged threads. This caused
erts_thr_progress_unmanaged_delay() to stop working until a new leader
took over.
|
|
* lukas/erts/fix_signalhandler_errno_restore/OTP-13868:
erts: Fix child setup signal hander bug
|
|
* lukas/erts/tracing/fix_sparc_align_issue/OTP-13803:
erts: Immed tracer states also have to be alignable
|
|
|
|
|
|
|
|
|
|
When running the signal handler, the errno has to be restored
to its original value, otherwise code running in the same thread
may misbehave.
|
|
* rickard/new-purge-strategy/OTP-13833:
Fix reclaim of literal areas
Conflicts:
erts/emulator/beam/beam_bif_load.c
|
|
|
|
* rickard/mbuf_sz/OTP-13851:
Ensure correct mbuf_sz value in process structure
|
|
* rickard/premature-timeout/OTP-13698:
Improve accuracy of timeouts using premature timeouts
|
|
|
|
|
|
* rickard/time-unit/OTP-13735:
Update test-cases to use new symbolic time units
Replace misspelled symbolic time units
Conflicts:
erts/doc/src/erlang.xml
erts/emulator/test/long_timers_test.erl
|
|
* rickard/ds-win-32bit/OTP-13759:
Fix dirty schedulers build on windows
|
|
* rickard/test-cuddle:
Fix dirty_nif_SUITE:dirty_call_while_terminated test case
Adjust process_SUITE:no_priority_inversion2
Allow larger timeout delay in driver_SUITE
Ignore long time failures during high CPU utilization
Cleanup in statistics_SUITE:runtime_update test
Improve timer tests in driver_SUITE
Fix statistics_SUITE:scheduler_wall_time test
Fix scheduler_SUITE:scheduler_suspend test
Fix scheduler_SUITE:scheduler_threads test
Fix scheduler_SUITE:update_cpu_info test
Skip nif_SUITE:consume_timeslice test when debug compiled
Increase time margin in timer_bif_SUITE:start_timer_1 test
|
|
Prevent binary from being prematurely GCed
|
|
|
|
* sverker/load-corrupt-beam/ERL-216:
erts:: Unsignify a bunch of loader variables
erts: Reject an invalid beam code header size
erts: Fix load of beam with invalid imports and atom numbers
|
|
* rickard/ds-trace/OTP-13822:
Fix tracing of processes executing dirty
|
|
* rickard/ds-purge-module/OTP-13808:
Perform check_process_code while process is executing dirty
Conflicts:
erts/doc/src/erl_nif.xml
|
|
'rickard/new-purge-strategy/OTP-13833' into maint
* rickard/fun-purge-bug/OTP-13809:
Fix purge of code
Reclaim literal area after purge has completed
Separate literal area from code
Conflicts:
erts/doc/src/erlang.xml
erts/emulator/beam/beam_bif_load.c
erts/emulator/beam/erl_init.c
erts/preloaded/ebin/init.beam
|
|
|
|
|
|
Ensure that we cannot get any dangling pointers into code that
has been purged. This is done by a two phase purge. At first
phase all fun entries pointing into the code to purge are marked
for purge. All processes trying to call these funs will be suspended
and by this we avoid getting new direct references into the code.
When all processes has been checked, these processes are resumed.
The new purge strategy now also completely ignore the existence of
indirect references to the code (funs). If such exist, they will
cause bad fun exceptions to the caller, but will not prevent a
soft purge or cause a kill of a process having such live references
during a hard purge. This since it is impossible to give any
guarantees that no processes in the system have such indirect
references. Even when the system is completely clean from such
references, new ones can appear via distribution and/or disk.
|
|
|
|
|
|
Besides using two words for 'milliseconds' et. al. they are
also changed from plural to singular.
|
|
|
|
|
|
|