aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-02-17runtime_tools: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17stdlib: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17test_server: Add suppression of Dialyzer warningsHans Bolinder
2016-02-17tools: Add suppression of Dialyzer warningsHans Bolinder
2016-02-16Merge branch 'maint'Ingela Anderton Andin
2016-02-16Merge branch 'ia/pr/958/OTP-13334' into maintIngela Anderton Andin
* ia/pr/958/OTP-13334: ssl: verify cert signature against original cert binary
2016-02-16kernel: Fix heart dialyzer typesBjörn-Egil Dahlberg
2016-02-16Merge branch 'rickard/ds-fixes-master'Rickard Green
* rickard/ds-fixes-master: Fix unique_SUITE for dirty schedulers Add dirty scheduler process termination test Ensure that work is done on the correct type of schedulers
2016-02-16Update preloaded erts_internal.beamBjörn-Egil Dahlberg
2016-02-16heart: Remove dead codeBjörn-Egil Dahlberg
2016-02-16kernel: Add heart callback testBjörn-Egil Dahlberg
2016-02-16kernel: Add basic system check of schedulers on heartbeatBjörn-Egil Dahlberg
Before a heartbeat to the port program a responsiveness check of the schedulers is performed. If the responsiveness check fails, stalls, the heartbeat will not be performed (as intended).
2016-02-16erts: Add BIF erts_internal:system_check/1Björn-Egil Dahlberg
This commit implements erts_internal:system_check(schedulers) with the intent of a basic responsiveness test check of the schedulers.
2016-02-16kernel: Add validation callback for heartBjörn-Egil Dahlberg
* heart:set_callback/2 * heart:get_callback/0 * heart:clear_callback/0 The callback is called before every heartbeat to the heart port. The callback needs to return 'ok' if the validation is correct.
2016-02-16Change to {next_state,...} and {stop,...} return formatRaimo Niskanen
2016-02-15Merge branch 'bjorn/cuddle-with-tests'Björn Gustavsson
* bjorn/cuddle-with-tests: erl_prim_loader_SUITE: Refactor helper functions Move record compilation errors to erl_lint_SUITE compile_SUITE: Use get_files/3 in more places compile_SUITE: Replace confusing files/2 with get_files/3
2016-02-15kernel: Refactor heart codeBjörn-Egil Dahlberg
2016-02-15Merge branch 'maint'Henrik Nord
2016-02-15Merge branch 'tuncer/ei-breakage' into maintHenrik Nord
* tuncer/ei-breakage: ei: fix breakage reported by Sergei Golovan Revert "musl: fix gethostbyname_r/gethostbyaddr_ selection" OTP-13328
2016-02-15Prettify default error_logger output somewhatMagnus Henoch
The default error logger, the one in use before a more sophisticated error logger can be installed, has rather terse output, in part because it cannot rely on io:format. This patch attempts to improve the error logger within that constraint: - Print timestamps as YYYY-MM-DD HH:MM:SS - For error reports with format strings, just print the format string and the format arguments on separate lines - For error reports with tuple lists, print each pair on a separate line
2016-02-15Merge branch 'maint'Björn Gustavsson
* maint: asn1: Suppress warnings for improper lists in generated code
2016-02-15Merge branch 'bjorn/asn1/suppressions/OTP-13324' into maintBjörn Gustavsson
* bjorn/asn1/suppressions/OTP-13324: asn1: Suppress warnings for improper lists in generated code
2016-02-15Unify comparison macros in erl_utils.hJosé Valim
This removes the duplication in having both `cmp_eq` and `CMP_EQ` and normalizes their name to uppercase.
2016-02-15Avoid erts_cmp jump in atom, int and float comparisonsJosé Valim
Given the function definition below: check(X) when X >= 0, X <= 20 -> true. @nox has originally noticed that perfoming lt and ge guard tests were performing slower than they should be. Further investigation revealed that most of the cost was in jumping to the erts_cmp function. This patch brings the operations already inlined in erts_cmp into the emulator, removing the jump cost. After applying these changes, invoking the check/1 function defined above 30000 times with different values from 0 to 20 has fallen from 367us to 213us (measured as average of 3 runs). This is a considerably improvement over Erlang 18 which takes 556us on average. Floats have also dropped their time from 1126us (on Erlang 18) to 613us.
2016-02-15Merge branch 'rickard/ds-fixes' into rickard/ds-fixes-masterRickard Green
* rickard/ds-fixes: Fix unique_SUITE for dirty schedulers Add dirty scheduler process termination test Ensure that work is done on the correct type of schedulers Conflicts: erts/emulator/beam/erl_process.c erts/emulator/beam/erl_process.h erts/emulator/beam/erl_process_dump.c
2016-02-15Fix unique_SUITE for dirty schedulersRickard Green
2016-02-15Add dirty scheduler process termination testSteve Vinoski
In scheduler_SUITE add a new test that runs a single dirty I/O scheduler and launches a number of dirty I/O NIF calls that each sleep for 3 seconds. Given the single scheduler, the first of these will run while the rest queue up. Then start killing these processes, and verify they call exit correctly.
2016-02-15Ensure that work is done on the correct type of schedulersRickard Green
Only the actual call to the dirty nif is allowed to execute on dirty schedulers. The dirty nif is not allowed to execute on normal schedulers if dirty schedulers are available. Arrival of exit signals and system tasks, while a process was scheduled for execution on a dirty scheduler, could mess up the process internal state. Preparation for dirty system task has been made, but is currently unused.
2016-02-12tftp: support transfer of files > 65535 blocksMichael Santos
The block count is an unsigned 2 byte integer. The common behaviour of tftp clients and servers is to overflow the block count and wrap the counter to 0 in order to support files larger than 32M. Modify the tftp implementation to do the same rollover. Interoperability was tested by transferring a 1.4G file using the HPA tftp client.
2016-02-12erts: Fix wobbling test failure in nif_SUITESverker Eriksson
ResA may have been GC'd after its last use.
2016-02-12asn1: Suppress warnings for improper lists in generated codeBjörn Gustavsson
2016-02-12Merge branch 'maint'Dan Gudmundsson
* maint: mnesia: let loader check if tablelock is needed mnesia: Avoid deadlock possibility in mnesia:del_table_copy schema
2016-02-12Merge branch 'dgud/mnesia/del_schema_hangs/OTP-13284' into maintDan Gudmundsson
* dgud/mnesia/del_schema_hangs/OTP-13284: mnesia: let loader check if tablelock is needed mnesia: Avoid deadlock possibility in mnesia:del_table_copy schema
2016-02-11erl_prim_loader_SUITE: Refactor helper functionsBjörn Gustavsson
Eliminate duplicated code by factoring out the common code for starting erl_boot_server and a slave node. Also, in the new start_boot_server/0 helper, fix a problem with Linux systems that assign 127.0.1.1 as the IP address for the hostname. Also stop using the -setcookie option when starting a node using -loader inet. The inet loading method doesn't use the distribution anymore.
2016-02-11Merge branch 'maint'Björn-Egil Dahlberg
2016-02-11Merge branch 'egil/fix-lcnt-dead-code/OTP-13319' into maintBjörn-Egil Dahlberg
* egil/fix-lcnt-dead-code/OTP-13319: tools: Remove dead code in lcnt
2016-02-10epmd: support IPv6 node registrationMichael Santos
Allow IPv6 nodes to register with and query epmd. On systems with IPv6 support: * epmd listens on both the IPv4 and IPv6 ANY or loopback sockets * the epmd cli client connects to epmd over the IPv6 loopback * distributed nodes started with "-proto_dist inet6_tcp" will register with epmd over IPv6 To work on IPv6 capable systems that have IPv6 support disabled, epmd ignores errors opening the socket if the protocol is not supported. Similarly, the epmd client will fall back to IPv4 if the IPv6 socket is not available. Update the minimum supported version of Windows to Windows Vista to support IPv6.
2016-02-10tools: Remove dead code in lcntBjörn-Egil Dahlberg
2016-02-10Merge branch 'maint'Björn Gustavsson
* maint: Eliminate crash because of unsafe delaying of sub-binary creation
2016-02-10Merge branch 'bjorn/compiler/beam_bsm/OTP-13309' into maintBjörn Gustavsson
* bjorn/compiler/beam_bsm/OTP-13309: Eliminate crash because of unsafe delaying of sub-binary creation
2016-02-10Merge branch 'maint'Siri Hansen
Conflicts: lib/stdlib/src/supervisor.erl
2016-02-10Merge branch 'nybek/speed_up_supervisor_count_children' into maintSiri Hansen
* nybek/speed_up_supervisor_count_children: Speed up supervisor:count_children/1; simple_one_for_one Add supervisor:get_callback_module/1 OTP-13290
2016-02-10Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Correct byte_size() and comparisons Conflicts: lib/hipe/cerl/erl_bif_types.erl
2016-02-10Merge branch 'hb/dialyzer/fix_bitstr_bug/OTP-13312' into maintHans Bolinder
* hb/dialyzer/fix_bitstr_bug/OTP-13312: dialyzer: Correct byte_size() and comparisons
2016-02-09Improved maps:with/2 and maps:without/2 algorithmBen Wilson
The current implementation is roughly O(N*M) where N is the number of items to be removed, and M is the number of items in the map. This does not include the cost of `maps:from_list` or `maps:to_list`. This leads to pretty horrifying execution times on large maps regardless of how many or few keys are to be removed. The new implementation is O(N) where N is the number of items to be removed. For each N there's the cost of removing a key from a map, and but in practice that turns out to be a vast improvement for all map sizes I tested The new maps:take/2 implementation similarly builds a list of keys and values by iterating only the list of desired keys, and then hands it off to maps:from_list. This turned out to be faster than N maps:put calls.
2016-02-09mnesia: let loader check if tablelock is neededDan Gudmundsson
move_table_copy needs the lock that was set previously in del_table_copy. This doesn't work on old nodes, so bump protocol version and check it. Remove old protocol conversion code, which have been around since OTP-R15. Checking if lock is needed requires rpc communication via mnesia_gvar ets table to be backwards compatible.
2016-02-09Correct grammar errors found by Magnus HenochRaimo Niskanen
2016-02-09dialyzer: Correct byte_size() and comparisonsHans Bolinder
The argument of byte_size() is a bitstring(). The code in erl_bif_types that finds cases where comparisons always return true or false is corrected when it comes to maps and bit strings.
2016-02-09ssl: fix hibernate_after with short timeoutsAndrey Mayorov
Too wide function clause was used in ssl_connection which led to ssl connection process crashes when `{hibernate_after, N}` with extremely small N was passed among other options to `ssl:connect`.
2016-02-09Make peer handling more efficientAnders Svensson
Each service process maintains a dictionary of peers, mapping an application alias to a {pid(), #diameter_caps{}} list of connected peers. These lists are potentially large, peers were appended to the end of the list for no particular reason, and these long lists were constructed/deconstructed when filtering them for pick_peer callbacks. Many simultaneous outgoing request could then slow the VM to a crawl, with many scheduled processes mired in list manipulation. The pseudo-dicts are now replaced by plain ets tables. The reason for them was (once upon a time) to have an interface interchangeable with a plain dict for debugging purposes, but strict swapablity hasn't been the case for some time now, and in practice a swap has never taken place. Additional tables mapping Origin-Host/Realm have also been introduced, to minimize the size of the peers lists when peers are filtered on host/realm. For example, a filter like {any, [{all, [realm, host]}, realm]} is probably a very common case: preferring a Destination-Realm/Host match before falling back on Destination-Realm alone. This is now more efficiently (but not equivalently) expressed as {first, [{all, [realm, host]}, realm]} to stop the search when the best match is made, and extracts peers from host/realm tables instead of searching through the list of all peers supporting the application in question. The code to try and start with a lookup isn't exhaustive, and the 'any' filter is still as inefficient as previously.