aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel
AgeCommit message (Collapse)Author
2017-06-12Merge branch 'hasse/unicode_atoms/OTP-14285'Hans Bolinder
* hasse/unicode_atoms/OTP-14285: compiler: Handle (bad) Unicode parse transform module names kernel: Improve handling of Unicode filenames stdlib: Handle Unicode atoms in ms_transform stdlib: Improve Unicode handling of the Erlang parser stdlib: Handle unknown compiler options with Unicode stdlib: Handle Unicode macro names stdlib: Correct Unicode handling in escript dialyzer: Improve handling of Unicode parsetools: Improve handling of Unicode atoms stdlib: Handle Unicode atoms when formatting stacktraces stdlib: Add more checks of module names to the linter stdlib: Handle Unicode atoms better in io_lib_format stdlib: Handle Unicode atoms in c.erl
2017-06-12Merge branch ↵Raimo Niskanen
'raimo/kernel/inet_ntoa_1-IPv6-lowercase/ERIERL-20/ERL-429/OTP-13006' * raimo/kernel/inet_ntoa_1-IPv6-lowercase/ERIERL-20/ERL-429/OTP-13006: Accept IPv6 address %suffixes when parsing Adjust inet:ntoa/1 to RFC5952, but not deeper Update inet:ntoa according to modern RFCs
2017-06-12Accept IPv6 address %suffixes when parsingRaimo Niskanen
This only implements decimal suffixes, and furthermore only with a leading "0". A complete implementation would probably allow one and probably two digit suffixes without. But what primarily is missing is translating interface names to and from interface indexes. This also only implements the parsing, and uses the FreeBSD trick of squeezing in the Scope Id in the second 16-bit word of the fe80::/64 or ff02:/64 address prefix. But inet_drv is not prepared to handle this word, so it might only work on FreeBSD, not being supported even there... So inet_drv needs to handle this too.
2017-06-09kernel: Improve handling of Unicode filenamesHans Bolinder
2017-06-07Adjust inet:ntoa/1 to RFC5952, but not deeperRaimo Niskanen
There are a multitude of RFC:s that point to each other and some of them suggest different addresses with IPv4 suffixes. Use the IPv4 suffix text representation only for the old well known ::a.b.c.d and ::ffff:a.b.c.d prefixes. The others seems to be moving targets.
2017-06-07Merge branch 'lukas/erts/sendfile_sunos_fix/OTP-14424'Lukas Larsson
* lukas/erts/sendfile_sunos_fix/OTP-14424: erts: Fix sendfile closeduring scenario on sunos
2017-06-07erts: Fix sendfile closeduring scenario on sunosLukas Larsson
On Solaris, giving a too long sfv_len results in an EINVAL error, but data is still transmitted and len is correctly. So we translate this to a success with that amount of data sent. This may hide some other errors that causes EINVAL, but it is the best we can do for now.
2017-06-05Merge branch 'lukas/erts/20_minor_fixes'Lukas Larsson
* lukas/erts/20_minor_fixes: kernel: Iterate for correct time in os_SUITE:perf_counter
2017-06-02kernel: Iterate for correct time in os_SUITE:perf_counterLukas Larsson
2017-05-31Update inet:ntoa according to modern RFCsRaimo Niskanen
2017-05-31Revert "Prepare release"Hans Nilsson
This reverts commit eaf8ca41dfa4850437ad270d3897399c9358ced0.
2017-05-30Prepare releaseErlang/OTP
2017-05-24Stop the cover server after running code_SUITE:module_status/1Björn Gustavsson
Leaving the cover server running could cause problems in other test cases.
2017-05-24kernel: Make sure to cleanup after distr testsLukas Larsson
Because this test suite did not cleanup after itself, the error_logger_warn_SUITE:file_utc failed to start its node that it needed for the test.
2017-05-23Merge branch 'lukas/kernel/ipv6_skip_tc_fixes'Lukas Larsson
* lukas/kernel/ipv6_skip_tc_fixes: kernel: Skip ipv6 tcs when cpiv6 is disabled
2017-05-23Merge branch 'lukas/kernel/distribution_early_reject/OTP-14426'Lukas Larsson
* lukas/kernel/distribution_early_reject/OTP-14426: kernel: Add early reject of invalid node names
2017-05-23Merge pull request #1440 from jj1bdx/jj1bdx-inet-ipv6-doc-fixRaimo Niskanen
kernel: inet - fix invalid IPv4-mapped-address examples
2017-05-23kernel: Add early reject of invalid node namesLukas Larsson
2017-05-23Merge branch 'lukas/doc/extend-secure-distr-warn/OTP-14425'Lukas Larsson
* lukas/doc/extend-secure-distr-warn/OTP-14425: otp: Extend secure distribution docs warnings
2017-05-23otp: Extend secure distribution docs warningsLukas Larsson
Warnings have been added to the relevant documentation about not using un-secure distributed nodes in exposed environments.
2017-05-23kernel: Add doc link from os man page to signal serviceLukas Larsson
2017-05-22kernel: Skip ipv6 tcs when cpiv6 is disabledLukas Larsson
For some reason doing a gen_udp:open(0, [inet6,{ipv6_v6only,true}]) works on some systems where ipv6 is disabled. So instead we explicitly require the localhost ip to do the test at which seems to work better. ipv6 was disabled in sysctl using the line net.ipv6.conf.all.disable_ipv6=1 when this behaviour was found.
2017-05-19Merge branch 'hasse/kernel/global_read_concurrency/OTP-14419'Hans Bolinder
* hasse/kernel/global_read_concurrency/OTP-14419: kernel: Create table 'global_names' with read_concurrency
2017-05-19Merge branch 'hasse/kernel/limit_crash_reports/OTP-14417'Hans Bolinder
* hasse/kernel/limit_crash_reports/OTP-14417: stdlib: Limit the size of gen_statem's error events kernel: Introcude error_logger:get_format_depth() stdlib: Limit the size of proc_lib's crash reports stdlib: Limit the size of gen_server's error events kernel: Add error_logger:limit_term/1 stdlib: Add io_lib:limit_term/2
2017-05-19kernel: Create table 'global_names' with read_concurrencyHans Bolinder
Measurements showed contention on one of the ETS tables created by the 'global' module.
2017-05-19Merge branch 'bjorn/cuddle-with-tests'Björn Gustavsson
* bjorn/cuddle-with-tests: code_SUITE: Remove unused functions Eliminate warning for variable 'Config' being unused compile_SUITE: Don't create a directory called 'core' Don't crash in end_per_testcase/2 in code_SUITE:on_load_embedded/1
2017-05-18kernel: Introcude error_logger:get_format_depth()Hans Bolinder
2017-05-18kernel: Add error_logger:limit_term/1Hans Bolinder
Calling error_logger:limit_term/1 before sending terms as events to the error_logger can be used for limiting the size of the messages. Doing so will not change the output, but potentially save memory. The Kernel variable error_logger_format_depth is used when limiting the size of terms.
2017-05-17Add persistence to history of the non-legacy shellFred Hebert
This patch adds a mechanism by which shell history gets stored persistently on disk and gets loaded whenever a new shell session begins. The log files are added to the user's cache directory, with multiple files in it, although the location is configurable. All Erlang instances on a given host will share the same log file. There are two hook points in group.erl that are used: when instantiating the buffer, where we fetch from disk, and when adding a line to the buffer (gets stored). This allows all shell instances to use the same base set of lines when loaded, but to keep their history separate after the fact. As lines are added as you go, a new shell session (with ^G -> s -> c) will have access to previous sessions' lines. The implementation makes use of the disk_log library with a rotating log in order to store data, and allow automated repairs. By default, the feature is disabled and must be turned on through OTP environment variable part of the kernel application. The options include: | Option | Accepted values | Default | Description | | ------------------------ | ----------------- |---------- | -------------------- | | shell_history | enabled, disabled | disabled | turn feature on/off | | shell_history_path | any string | user cache| where to put files | | shell_history_file_bytes | 51200..N bytes | 512kb | max data size (>50kb)| | shell_history_drop | ["q().", ...] | [] | blacklisted lines | A version header is added to the disk_log configuration, allowing changes in the storage format to be enacted in the future (i.e. adding segmentation by node name in the same file, or encoding) without conflict. Log rotation is used with multiple log files to ensure proper enforcement of resizing without too much data loss. Because disk_log does not allow to just flush bits of content on rewrite (it truncates any full file), we instead use a wrap log and try to divide the configured size into up to 10 log files so that every time we rotate a log, we lose only 10% of the data. This remains true for corrupted files that cannot fully be repaired. This many-logs-based approach in turn forces the use of a minimal log size for the `shell_history_file_bytes` configuration, since it has to be divided by 10. The shell history is not loaded for the `user` process which, despite running the group.erl module, does not actually require history as it mostly just forwards IO protocol information.
2017-05-17add option 'quiet' to disk_logFred Hebert
This option allows to suppress output of info_msgs to error_logger when recoverable errors are encountered in disk_log by setting the value to 'true'. Defaults to 'false', the backwards compatible behaviour.
2017-05-17Fix type declaration for disk_log.hrlFred Hebert
A specific type was given as an atom rather than an actual type defintion.
2017-05-12Don't crash in end_per_testcase/2 in code_SUITE:on_load_embedded/1Björn Gustavsson
2017-05-06Fix typo in child spec for file_serverBen Tyler
'modeules' -> 'modules' Introduced in 3edc6dbf8f150bb6ba7c800ed5cc379771f8b279 (present in 20.0-rc1, but not in the 19 release series).
2017-05-05Revert "Prepare release"Raimo Niskanen
This reverts commit dc57404252c47520f352834ad9be45ad684f96c9.
2017-05-04Prepare releaseErlang/OTP
2017-05-04Update copyright yearRaimo Niskanen
2017-05-04inet.xml: fix invalid IPv4-mapped-address examplesKenji Rikitake
* IPv6 address FFFF::192.168.42.2 is an invalid form as an IPv4-mapped address. This should be fixed as ::FFFF:192.168.42.2. The assigned address block is ::ffff:0:0/96. See RFC6890 Table 20 in the Section 2.2.2 for the further details. And for this IPv4-mapped address use *only*, the 32bit LSB of the IPv6 address can be written with the respective IPv4 address. See RFC4291 Section 2.2 Form 3 for the further details.
2017-05-04Fix missing release noteRaimo Niskanen
2017-04-28Merge branch 'zandra/kernel/nodenames/OTP-13805'Zandra Norman
* zandra/kernel/nodenames/OTP-13805: kernel: Do not allow unicode in nodenames
2017-04-28kernel: Do not allow unicode in nodenamesZandra Norman
Verify that unicode isn't used in a node name and logi an info message if it is. Filter the head part of the name a bit harder to work with epmd.
2017-04-25Kernel: fix file_name_SUITE:icky test caseZandra Norman
2017-04-20implement SO_BINDTODEVICE for inet protocolsAndreas Schultz
bind to device is needed to properly support VRF-Lite under Linux (see [1] for details). [1]: https://www.kernel.org/doc/Documentation/networking/vrf.txt
2017-04-20Merge branch 'lukas/erts/20_minor_fixes'Lukas Larsson
* lukas/erts/20_minor_fixes: erts: Rebuild etc executables if config.h changes erts: Fix new gcc warning in check io kernel: Add mem check to prim_file:large_write tc erts: Fix two compiler warnings on OS X erts: Fix erts_debug:df function info output erts: Get rid of some unused function warnings on os x
2017-04-20kernel: Add mem check to prim_file:large_write tcLukas Larsson
2017-04-12Merge branch sverker/remove-latin1-atom-encoding/OTP-14337Sverker Eriksson
* 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
2017-04-07Merge branch 'bjorn/cuddle-with-tests'Björn Gustavsson
* bjorn/cuddle-with-tests: Ensure code_SUITE:on_load_embedded/1 does not leak links
2017-03-31Merge branch 'egil/kernel/refactor-supervisor/OTP-14315'Björn-Egil Dahlberg
* egil/kernel/refactor-supervisor/OTP-14315: Update primary bootstrap kernel: Refactor supervision tree
2017-03-30kernel: Refactor supervision treeBjörn-Egil Dahlberg
Use maps in definitions to make them more readable.
2017-03-28Merge branch 'lukas/kernel/gen_tcp_close_docs'Lukas Larsson
* lukas/kernel/gen_tcp_close_docs: kernel: Expand gen_tcp:close docs with send text
2017-03-28kernel: Expand gen_tcp:close docs with send textLukas Larsson
This commit attempts to clarify some of the guarantees given by the TCP standard when issuing close. This is quite a complex topic so there are probably corner cases still left, but this at least tells the user that things can go wrong when doing a close.