Age | Commit message (Collapse) | Author |
|
to get a nicer error on FreeBSD and others that does not support
MAP_NORESERVE for mmap.
Q: How to support this?
A: Implement the "literal tag" in hipe
or another way to reserve virtual address space in erl_mmap.c
|
|
* sverk/float_SUITE-arith:
erts: Add new test cases to float_SUITE
|
|
* sverk/check_process_code-fix:
erts: Fix bug in check_process_code for literals
|
|
* maint:
Light weight statistics of run queue lengths
Conflicts:
erts/preloaded/ebin/erlang.beam
|
|
* rickard/rq-len/OTP-13201:
Light weight statistics of run queue lengths
|
|
- statistics(total_run_queue_lengths)
- statistics(run_queue_lengths)
- statistics(total_active_tasks)
- statistics(active_tasks)
Conflicts:
erts/emulator/beam/erl_process.c
|
|
* maint:
Use monotonic time for call_time trace
|
|
* rickard/trace_call_time/OTP-13216:
Use monotonic time for call_time trace
|
|
* rickard/ohmq-fixup/OTP-13047:
Fix asynchronous BIF timer cancellation message reply
|
|
|
|
|
|
|
|
|
|
|
|
* binarin/maint:
Don't wait for twice the delay_write timeout
OTP-13220
|
|
|
|
The nature of aux work is such that dirty schedulers should not
attempt to perform it. Modify the code to ensure that dirty schedulers
avoid aux work.
Also fix an incorrect assumption about the size of a Uint in the
ErtsDirtySchedId type.
|
|
Compiling OTP 18.2.1 with gcc-5.3 shows the following warning:
drivers/common/efile_drv.c:1538:23: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
The code in question is:
if (! (status =
erts_gzwrite((ErtsGzFile)d->fd,
iov[i].iov_base,
iov[i].iov_len)) == iov[i].iov_len) {
d->errInfo.posix_errno =
d->errInfo.os_errno = errno; /* XXX Correct? */
break;
}
If we hoist the assignment out of the if for clarity, it becomes:
status = erts_gzwrite(..., iov[i].iov_len);
if (! status == iov[i].iov_len) { ...; break; }
iov_len is > 0 here, and status will equal iov_len if erts_gzwrite
succeeded, but will be less than iov_len if an error occurred.
"! status" is 0 or 1, which can only equal iov_len if iov_len is 1 and
erts_gzwrite detected an error and returned 0.
The effect of this mistake is that any error when iov_len >= 2 will
skip the conditional code and break statement. In particular, partial
writes (0 < status && status < iov_len) will not be flagged as errors.
All releases since OTP R8B-0 are affected.
The variable "status" is really a boolean, which is to be set to zero
on error. The fix is to set status to 1 if erts_gzwrite() returned iov_len
and 0 otherwise, and to change the condition to "if (! status) ...".
I'm also hoisting the assignment out of the condition since it obscures
the code while providing not benefit (the condition in a while or for
loop would be a different matter).
|
|
* lv/fix-compilation-with-vm-probes/OTP-13209:
Fix compilation with `--enable-vm-probes`
|
|
Conflicts:
OTP_VERSION
erts/vsn.mk
|
|
* rickard/ohmq-fixup/OTP-13047:
Fix offset_mqueue
|
|
|
|
|
|
* jj1bdx/jj1bdx-18.2-freebsd-hipe-fix-2:
hipe_x86_signal.c: add FreeBSD sigaction code
|
|
This reverts commit 731890f3b4ac62eed1221aa7d9fd2bfa6bf51d8c.
|
|
* erts/emulator/hipe/hipe_x86_signal.c:
add FreeBSD sigaction code, based on the Darwin (OS X) code
|
|
|
|
Custom loaders are no longer supported. Most of the documentation
for them were removed in c8a7d2d7.
|
|
Part of the return value for string_match/3 is not used by
its only caller. Eliminate the unused part of the return value
and the accumulator argument for string_match().
|
|
We don't need absolute paths unless we are dealing with archives.
Since it is not free to turn a relative path absolute (we will need a
call to prim_file to fetch the current directory), it's better to
delay the call to absname/1 until we are sure it's needed.
|
|
|
|
There is no need to use the concat/1 function since all arguments
that are passed to it have known types.
|
|
The 'init' module fetches command line parameters and passes them
to erl_prim_loader:start/3.
The code can be simplified if 'init' calls a new
erl_prim_loader:start/0 function that itself fetches the necessary
command line parameters. Also remove the documentation for the start()
function, since it there is no way that it can be usefully called by
a user application.
While we are at it, also get rid of '-id' command line parameter,
which is fetched and stored but never actually used.
|
|
erl_prim_loader:get_files/2 was an optimization introduced before the
SMP emulator (that is, before R11). The idea was to use the async
threads in the efile driver to read multiple BEAM files from the disk
in parallel.
In a modern computer with the SMP emulator, loading a BEAM module
seems to be more time-consuming than reading it from disk. To optimize
loading we would need to load several modules in parallel. We could
modify get_files/2 so that it would support parallel loading, but it
is cleaner to first remove get_files/2 and then (in a future commit),
introduce new functions to support parallel loading.
|
|
|
|
The deep indentation makes loop/3 difficult to read and maintain.
Break out the request handling code into a separate function.
|
|
Kostis Sagonas pointed out that there is a dialyzer warning
for constructing an improper list in the following clause:
translate_response(?FILE_RESP_N2DATA = X,
[<<_:64, _:64, _:64>> | <<>>] = Data) ->
{error, {bad_response_from_port, [X | Data]}};
I don't want to change the code to somehow eliminate the warning. An
improper list has already been constructed in the efile driver itself,
and that would be difficult to fix.
Therefore, tell dialyzer to ignore warnings for improper lists
in translate_response/2.
|
|
The compact wall of arguments makes it hard to see what is actually
happening in eval_script().
Collect the arguments into a record.
|
|
Expansion of $ROOT in paths are handled specially compared to boot
variables. There is no reason $ROOT can't be handled as a boot
variable.
We can simplify the expansion of boot variables if we spend a little
extra effort upfront collecting all boot variables into a map.
Make the error checking for -boot_var arguments stricter. Only allow
-boot_var followed by exactly two arguments to help users catch
errors earlier.
|
|
The last clause in start_it/1 calls a function in some module.
It goes to great length to catch any exception and pass them on
unchanged, and if there was a normal return, it will just return
the return value. It can been seen that the entire 'catch'
construction with the reference trick is totally unnecessary.
|
|
The get_flag/3 function which returns a default value if the
flag doesn't exist, is implemented in terms of get_flag/2
which throws an exception if the flag doesn't exist.
get_flag/3 is frequently used for the flags that don't exist,
which means that means that an exception will be generated and
catched for no good reason.
Reimplement get_flag/3 so that it doesn't have to call get_flag/2
and catch an exception. Eliminate the get_flag/2 function by
writing a special purpose function for the only time it's used,
that is for retrieving the value for the -root flag. As a
side-effect, we will get a nicer error message if there is
something wrong with the -root flag.
Similarly, simplify get_flag_list/3 and remove get_flag_list/2.
We can also eliminate search/3 and use the lists:keyfind/3
BIF instead.
|
|
The handling of flags has been incrementally messed up over
time, leading to convoluted code. Rewrite the parsing and
lookup of flags. By using the appropriate data structures,
the code will become simpler.
|
|
|
|
|
|
=== OTP-18.2 ===
Changed Applications:
- asn1-4.0.1
- common_test-1.11.1
- compiler-6.0.2
- crypto-3.6.2
- dialyzer-2.8.2
- diameter-1.11.1
- erl_docgen-0.4.1
- erl_interface-3.8.1
- erts-7.2
- eunit-2.2.12
- hipe-3.14
- inets-6.1
- jinterface-1.6.1
- kernel-4.1.1
- observer-2.1.1
- parsetools-2.1.1
- public_key-1.1
- runtime_tools-1.9.2
- sasl-2.6.1
- snmp-5.2.1
- ssh-4.2
- ssl-7.2
- stdlib-2.7
- test_server-3.9.1
- tools-2.8.2
- typer-0.9.10
- wx-1.6
- xmerl-1.3.9
Unchanged Applications:
- cosEvent-2.2
- cosEventDomain-1.2
- cosFileTransfer-1.2
- cosNotification-1.2
- cosProperty-1.2
- cosTime-1.2
- cosTransactions-1.3
- debugger-4.1.1
- edoc-0.7.17
- eldap-1.2
- et-1.5.1
- gs-1.6
- ic-4.4
- megaco-3.18
- mnesia-4.13.2
- odbc-2.11.1
- orber-3.8
- os_mon-2.4
- ose-1.1
- otp_mibs-1.1
- percept-0.8.11
- reltool-0.7
- syntax_tools-1.7
- webtool-0.9
Conflicts:
OTP_VERSION
erts/vsn.mk
|
|
|
|
* rickard/ohmq-fixup/OTP-13047:
Fix check_process_code()
|
|
to make it easy to provoke GC inside/after a BIF or instruction.
|
|
for naming style consistency.
|
|
which is same as old homeSize + splitPosition.
|