Age | Commit message (Collapse) | Author |
|
* egil/percept/fix-ug-doc:
egd: Fix User's Guide lint
|
|
* bjorn/asn1/dialyzer-warnings/OTP-13579:
Eliminate dialyzer warnings for unmatched returns
|
|
* bjorn/common_test/dialyzer-warnings:
ct_logs: Eliminate dialyzer warnings
|
|
* mururu/stdlib/fix-deprecated-warnings/PR-1050/OTP-13594:
Fix deprecated warnings
|
|
* bjorn/compiler/badfun-literal/ERL-138/OTP-13552:
sys_core_fold: Don't generated failing calls such as 3(4)
fun_SUITE: Test for failing calls to funs
|
|
|
|
|
|
|
|
Dialyzer's dependency calculation was throwing an error when
encountering an 'apply' node with something that was not a variable
(e.g., a literal). The rest of the code did not know what to do with
this error, which resulted in dialyzer crashing. Fix this by ingoring
the detected error in the dependency calculation phase; later dialyzer
passes know how to properly handle and report this kind of errors
anyway.
This fixes [Erlang-JIRA] (ERL-138).
|
|
Fix mistakes found by 'xmllint'.
|
|
Fix mistakes found by 'xmllint'.
|
|
|
|
Rewrite code such as:
X = not_a_fun,
X()
to:
error({badfun,not_a_fun})
Also generate a warning.
|
|
|
|
This reverts commit bd64ad8e15d66e48b36dbe3584315dd5cfc8b59a.
|
|
Dialyzer complains that three calls to gen_dec_line/7 ignore
the return value. It turns out that when the last argument to
gen_dec_line/7 is 'false', the return value will always be
{[],[]}. Introduce gen_dec_line/6 as helper to make it clear
that we don't ignore a useful return value.
|
|
|
|
* ingela/ssl/test-cuddle:
ssl: Correct test suite
|
|
* raimo/polish-gen_statem/OTP-13065:
Reword 'dispatch' into 'branch depending'
|
|
|
|
* lukas/erts/max_heap_size/OTP-13174:
erts: Fix max heap size exit when in hipe mode
Update preloaded modules
erts: Fix pre-bif yield current_function
erts: Implement max_heap_size process flag
|
|
|
|
* anders/diameter/19.0-rc1/OTP-12913:
vsn -> 1.12
Update appup for 19.0-rc1
Update documentation for CEA/DWA/DPA Result-Code counters
|
|
* ingela/ssl/tls-1.2-available-hashsigns:
ssl: ordsets:intersection/2 did not give the expected result
|
|
Turns out we can not count on the "hashsigns" sent by the client and
the supported "hashigns" sets to have required properties of ordsets.
|
|
common_test uses its own IO server that is group leader for the
test case processes. By default, the IO server escapes characters
with significance to HTML (e.g. '<'). In order to output HTML
tags directly, the IO server must be told not to escape the output.
The way to tell the IO server is to wrap the format string like this:
["$ct_html",Format]
That works with common_test's own IO server, but in general not
with other IO servers. Dialyzer will rightly complain that the
call breaks the contract for io:format/3.
To avoid the Dialyzer warning, we must obscure the wrapping of
the format string.
While we are at it, also refactor print_style/4 to make the code
somewhat cleaner and shorter.
|
|
|
|
The max_heap_size process flag can be used to limit the
growth of a process heap by killing it before it becomes
too large to handle. It is possible to set the maximum
using the `erl +hmax` option, `system_flag(max_heap_size, ...)`,
`spawn_opt(Fun, [{max_heap_size, ...}])` and
`process_flag(max_heap_size, ...)`.
It is possible to configure the behaviour of the process
when the maximum heap size is reached. The process may be
sent an untrappable exit signal with reason kill and/or
send an error_logger message with details on the process
state. A new trace event called gc_max_heap_size is
also triggered for the garbage_collection trace flag
when the heap grows larger than the configured size.
If kill and error_logger are disabled, it is still
possible to see that the maximum has been reached by
doing garbage collection tracing on the process.
The heap size is defined as the sum of the heap memory
that the process is currently using. This includes
all generational heaps, the stack, any messages that
are considered to be part of the heap and any extra
memory the garbage collector may need during collection.
In the current implementation this means that when a process
is set using on_heap message queue data mode, the messages
that are in the internal message queue are counted towards
this value. For off_heap, only matched messages count towards
the size of the heap. For mixed, it depends on race conditions
within the VM whether a message is part of the heap or not.
Below is an example run of the new behaviour:
Eshell V8.0 (abort with ^G)
1> f(P),P = spawn_opt(fun() -> receive ok -> ok end end, [{max_heap_size, 512}]).
<0.60.0>
2> erlang:trace(P, true, [garbage_collection, procs]).
1
3> [P ! lists:duplicate(M,M) || M <- lists:seq(1,15)],ok.
ok
4>
=ERROR REPORT==== 26-Apr-2016::16:25:10 ===
Process: <0.60.0>
Context: maximum heap size reached
Max heap size: 512
Total heap size: 723
Kill: true
Error Logger: true
GC Info: [{old_heap_block_size,0},
{heap_block_size,609},
{mbuf_size,145},
{recent_size,0},
{stack_size,9},
{old_heap_size,0},
{heap_size,211},
{bin_vheap_size,0},
{bin_vheap_block_size,46422},
{bin_old_vheap_size,0},
{bin_old_vheap_block_size,46422}]
flush().
Shell got {trace,<0.60.0>,gc_start,
[{old_heap_block_size,0},
{heap_block_size,233},
{mbuf_size,145},
{recent_size,0},
{stack_size,9},
{old_heap_size,0},
{heap_size,211},
{bin_vheap_size,0},
{bin_vheap_block_size,46422},
{bin_old_vheap_size,0},
{bin_old_vheap_block_size,46422}]}
Shell got {trace,<0.60.0>,gc_max_heap_size,
[{old_heap_block_size,0},
{heap_block_size,609},
{mbuf_size,145},
{recent_size,0},
{stack_size,9},
{old_heap_size,0},
{heap_size,211},
{bin_vheap_size,0},
{bin_vheap_block_size,46422},
{bin_old_vheap_size,0},
{bin_old_vheap_block_size,46422}]}
Shell got {trace,<0.60.0>,exit,killed}
|
|
* binarin/fix-build-tool-paths/PR-1023/OTP-13562:
Fix program paths used in build process
Conflicts:
erts/configure.in
|
|
This reverts commit 7fbcbf4d1f2c81d44a5c6a4889c98f32cd4505ae.
|
|
d5f8d55b37c9c63418b4fe8ad5a5aa197a9a4385
|
|
* anders/diameter/info/OTP-13508:
Add diameter:peer_find/1
Add diameter:peer_info/1
|
|
* anders/diameter/overload/OTP-13330:
Suppress dialyzer warning
Remove dead case clause
Let throttling callback send a throttle message
Acknowledge answers to notification pids when throttling
Throttle properly with TLS
Don't ask throttling callback to receive more unless needed
Let a throttling callback answer a received message
Let a throttling callback discard a received message
Let throttling callback return a notification pid
Make throttling callbacks on message reception
Add diameter_tcp option throttle_cb
|
|
* anders/diameter/test/OTP-13438:
Don't assume list comprehension evaluation order
|
|
|
|
|
|
|
|
* dgud/mnesia/ext-backend/PR-858/OTP-13058:
mnesia_ext: Add basic backend extension tests
mnesia_ext: reuse snmp field for ext updates
mnesia_ext: Create table/data containers from mnesia monitor not temporary processes
mnesia_ext: Implement ext copies index
mnesia_ext: Load table ext
mnesia_ext: Dumper and schema changes
mnesia_ext: Refactor mnesia_schema.erl
mnesia_ext: Ext support in fragmented tables
mnesia_ext: Backup handling
mnesia_ext: Create schema functionality
mnesia_ext: Add ext copies and db_fold to low level api
mnesia_ext: Refactor record_validation code
mnesia_ext: Add create_external and increase protocol version to monitor
mnesia_ext: Add ext copies to records
mnesia_ext: Add supervisor and behaviour modules
|
|
|
|
Minimal impact when talking to older nodes.
|
|
processes
Tables or data containers should be owned and monitored by mnesia_monitor and
should thus be created by that process.
Always create_table before loading it
We need to create tables for ram_copies at least before loading
them as they are intermittent. It is also needed to get mnesia
monitor as the parent and supervisor of the data storage.
|
|
Make ram_copies index always use ordered_set
And use index type as prefered type not a implementation requirement,
the standard implmentation will currently ignore the prefered type.
|
|
|
|
|
|
|
|
|
|
|
|
Add ext to table/system information
Add add_backend_type
|
|
|
|
Should maybe be moved to mnesia.erl and inlined??
Or is it used elsewhere?
|