Kernel Release Notes
Kernel 2.6.2
Fixed errors and malfunctions
-
inet_res:nslookup/4
has been made backwards compatible.
Own Id: OTP-3763
Aux Id: Seq 4972
-
When R6 nodes and unpatched R7 nodes are in the same
network,
global:register_name
hangs. This is fixed
with a patch to R7. Patched R7 nodes can communicate with
unpatched R7 nodes.
Own Id: OTP-3714
-
A hanging bug in the protocol between dist_ac and
application_controller has been fixed. It occurred
when dist_ac had stopped an application with
{ac_change_application_req,AppName,stop_it} and then
tried to start it with {ac_change_application_req,
AppName,{takeover,FromNode,RestartType}}.
Own Id: OTP-3773
Aux Id: Seq 4996
-
If a new application was added using code:replace_path/2,
the code:lib_dir/1 function would fail on the new application
name. This has been corrected.
Own Id: OTP-3780
Aux Id: Seq 5003
-
The internal inet_db counter next_id did not keep within
the bounds [0, 65535] imposed by DNS query field width.
The reply was then not recognized since the reply
id was truncated to 16 bits. This bug is now fixed.
Own Id: OTP-3798
Aux Id: Seq 5001
-
The default receive buffer size for UDP has been
restored to 8192 bytes, which it was before R7.
Own Id: OTP-3807
Aux Id: OTP-3797
-
gen_upd:recv/2,3 now works better. The option
combination [binary, {active, false}] was broken.
Own Id: OTP-3823
-
A bug in efile_drv that randomly caused memory access
violation when using file:get_cwd() has been fixed.
Own Id: OTP-3832
-
gen_tcp:connect/3,4, and gen_udp:send/4 now exits with
badarg if an IP address tuple with a field
integer value that is is not in the range 0 through
255 is passed as argument. Previously this caused a
function clause.
Own Id: OTP-3836
Aux Id: Seq 5091
-
The function inet:gethostbyname/2,3 sometimes returned
{error, timeout} when failing to lookup a name. This
has been changed to the more appropriate response
{error, nxdomain}.
Own Id: OTP-3883
-
The function inet:gethostbyname/2,3 now accepts an
IP-string as the Name argument for all resolver
types. This previously did not work for the built in
DNS resolver, nor for the /etc/hosts file resolver.
Own Id: OTP-3886
-
The native version of the resolver for erlang no longer may
crash the system due to external causes like catatonic DNS
servers.
Own Id: OTP-3887
-
When a host machine was misconfigured so that
inet:gethostbyname/1 returned an empty hostname
for the host on which an erlang node was started,
inet_config crashed with a function clause during node
start on some platforms. This has now been fixed.
Own Id: OTP-3894
Aux Id: Seq 5127
Improvements and new features
-
disk_log
handles huge terms better when reading
log files using chunk/2
. Bugs in
chunk/2
and chunk_step/3
as well as in
wrap_log_reader
have been fixed.
Own Id: OTP-3716
-
A number of bug fixes and improvements have been done
to applications
runtime_tools
,
kernel
and erts
:
- A read timeout no longer resets the sequential
trace token. This is an incompatibility towards
the previous behaviour. Use
seq_trace:set_token([])
to reset the
sequential trace token.
seq_trace:get_token/0
and
seq_trace:set_token/1
now have compatible
token formats.
dbg:trace_port/2
and
dbg:trace_client/2,3
now supports trace
to and read from a size limited "wrap file set".
dbg:trace_port_control/1
now supports
operation get_listen_port
for the ip
trace driver.
- New match spec functions
{is_seq_trace}
and
{get_seq_trace}
has been added to test
and read the sequential trace token in match specs.
- New match spec functions
{get_tcw}
and
{set_tcw Value}
that reads and sets
a "trace control word" in the node has been added.
The "trace control word" is a word in each
Erlang node of at least 24 bits.
There are also enhancements of BIFs:
erlang:system_info(trace_control_word)
and
erlang:system_flag(trace_control_word, Value)
for the same purpose.
- A new match spec function
{silent, TrueOrFalse}
for setting a
silent call trace flag per process that inhibits
call trace messages, both local and global, has
been added. The BIF
erlang:trace/3
has been extended to
recognize the flag 'silent' to start a call
trace in silent mode.
- Some bugs in the
dbg
module has been
fixed, e.g the 'old_trace_call' flag has been
removed from the 'all' flags list, and the dbg server
no longer hangs if the supplied tracer fails to
start.
- A bug in the emulator that made 'EXIT' messages
from a process involved in a sequential call trace
get overwritten by the sequential trace token
itself has been fixed.
- The documentation regarding the above has
been updated. Especially, the fact that the match spec
function
{return_trace}
destroys the
tail recursiveness of the traced function has been
pointed out.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-3747
Aux Id: OTP-3592, OTP-3744
Kernel 2.6.1 (R7B)
Fixed errors and malfunctions
-
A new better and more portable hash BIF, erlang:phash/2, has been
introduced. The dets module will use the erlang:phash/2
for newly created tables. To rebuild an old table and start to use the
new hash BIF, give the {repair,force} option to dets:open_file/2.
See the documentation.
Own Id: OTP-3397
-
In OTP R7A, command line arguments could not be longer than
255 characters. This restriction has been removed again, but
since the length limit on atoms is enforced more thoroughly
than in earlier releases,
init:get_args/0
will fail
for such arguments. A new function
init:get_plain_arguments/0
has been introduced,
which returns strings, and should be used instead.
The same problem with the command line flag -s
is
solved by the introduction of a new command line flag
-run
with the same semantics as -s
, except that the
user's function is called with a list of strings instead
of a list of atoms.
Own Id: OTP-3687
Improvements and new features
-
On Unix,
os:cmd/1
previously used a dedicated
subprocess, which meant that calls to os:cmd/1
were
serialized. This is no longer the case.
(For R7A users: the solution in R7A was too simple;
compatibility with earlier releases has been restored.)
The kernel configuration parameter start_os
has
been removed.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-3466
Aux Id: seq4333
-
A new callback
Mod:prep_stop/1
has been introduced
in application
, for actions that need to be performed
before the children are terminated.
Own Id: OTP-3590
Aux Id: Seq 4578
-
disk_log
: lclose/2
is a new function.
Own Id: OTP-3685
-
When supplying option {packet, PacketType} to
gen_udp:open(Portnum, Options) it now exits with badarg.
In previous releases this option was silently ignored,
which was too forgiving since UDP datagrams
are packets by definition, and hence this option
was obsolete. Furthermore, the more exotic
PacketType values, e.g. asn1, cdr, sunrm, fcgi,
has never been implemented for UDP.
Programs that supply this obsolete option
to gen_udp:open/2 will probably crash
when running on this release.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-3690
Kernel 2.6 (R7A)
Known problems
-
code:is_loaded/1
doesn't type check its arguments.
Own Id: OTP-2607
-
If more than 1024 bytes of text (more than 256 in release R4)
are pasted into the shell, and this text consists of
more than one expression sequence (each ending with a period),
text after the first 1024 bytes may be lost.
Own Id: OTP-3041
Fixed errors and malfunctions
-
If an error occurred when accessing a file, the file
process died, and further attempts to access the file
could cause the caller to hang. Now, it will no longer
hang, but return
{error, terminated}
.
Own Id: OTP-1400
Aux Id: OTP-1034, OTP-2400
-
Using
gen_tcp:send
on a closed socket no
longer causes the caller to hang.
Own Id: OTP-2714
Aux Id: seq 1122
-
A few problems having to do with start phases in the application
controller were corrected.
Own Id: OTP-3380
Aux Id: Seq 4166
-
net_adm:names
always returned the empty list.
This is now corrected. A similar error was corrected
in inet_db.
Own Id: OTP-3432
Aux Id: Seq 4274
-
rpc:multicall
could leave a nodedown
message
in the caller's message queue under some circumstances.
This has been fixed.
Own Id: OTP-3449
Aux Id: Seq 4305
-
A fix in the
disk_log
module: changing the size of a
non-full wrap log could return the error einval
.
Own Id: OTP-3484
Aux Id: seq4354, seq4259
-
After using
erlang:demonitor/1
on a remote process,
a DOWN
message would appear anyway if the remote
node went down. This has been fixed.
Own Id: OTP-3499
Aux Id: Seq 4393
-
global:register_name
and similar functions could
sometimes fail to modify the names consistently on all nodes,
if new nodes appeared in the network during the operation.
Own Id: OTP-3552
Aux Id: Seq 4490
-
If a partly partitioned net is brought together again,
global
could enter deadlock.
Own Id: OTP-3575
Aux Id: OTP-2766
-
In a net which had been partly partitioned and brought
together again, it could happen that the name registry
would remain inconsistent indefinitely.
Own Id: OTP-3576
-
When starting up a configured network, a deadlock could
occur, especially if the nodes were much different in
speed. This has been fixed.
Own Id: OTP-3625
Aux Id: Seq 4552
Improvements and new features
-
When several versions of an application existed
simultaneously in the lib directory, the code server
did not neccessarily pick the latest version of the
application case any version number was greater than
9, when in interactive mode (for instance, 1.9 was
considered later that 1.10).
Own Id: OTP-2976
-
Documentation for the function application:get_key/1/2
has been improved.
Own Id: OTP-3379
Aux Id: seq4164
-
On Unix,
os:cmd/1
previously used a dedicated
subprocess, which meant that calls to os:cmd/1
were
serialized. This is no longer the case.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-3466
Aux Id: seq4333
-
The
disk_log
module has been improved as regards
distribution. The value returned from open/1
when
opening a distributed log has been modified. The modification
is incompatible with the previously returned value. Attempts
to open a distributed log on a node running new code from
a node running old code, and vice versa, results in a
nodedown
error message.
info/1
returns two more tags, 'node' and 'distributed'.
The new function lclose/1
closes a log on the current
node. The layout of the continuation returned from
chunk{_step}
has been changed,
and the new function chunk_info/1
returns the node where chunks are read from. The new
function accessible_logs/0
returns the names
of disk logs accessible on the current node.
(*** POTENTIAL INCOMPATIBILITY ***)
Own Id: OTP-3531
Aux Id: Seq 4426, Seq 4258
-
The BIF erlang:monitor(process, Proc) has been extended
to accept named processes, local and remote.
See the documentation for erlang:monitor/2 and
erlang:demonitor/1.
Own Id: OTP-3657
-
The gen_ family (mostly gen_server and gen_fsm)
and rpc has been rewritten to use the new BIF
erlang:monitor/2 as much as possible. This should
improve performance and remove some possibilities
of hanging gen_server calls. In particular,
gen_server:multi_call/2..4 and
rpc:multi_server_call/2,3 should now never hang,
at least not when all nodes are of this
release. See also the documentation for
gen_server and rpc.
Own Id: OTP-3660
-
The inet driver (inet_drv, i.e the driver for
(TCP&UDP)/IP) and a lot of supporting Erlang
code in the application kernel, has been replaced.
The new code, courtesy of Tony Rogvall,
eliminates one data relay process per socket
and thereby gives a throughput boost.
Own Id: OTP-3661
-
For completeness, a new function
rpc:nb_yield/2 has been added.
See the documentation.
Own Id: OTP-3662
-
The
erlang:info/1
and erlang:system_info/1
BIFs have been
merged into one. The recommended way to use the combined
BIF is by the name erlang:system_info/1
, but
erlang:info/1
will also work.
Own Id: OTP-3669
-
There is a new os:getenv/0 function that retrieves a list
of all (operating system) environment variables.
Own Id: OTP-3670
-
New socket options for TCP/IP sockets:
'tpkt' and 'line'. See the documentation for
inet:setopts/2.
Own Id: OTP-3674
-
Most of the previously undocumented BIFs in the
erlang
module have been documented. Still undocumented are BIFs
which are of no use in applications, for instance the set
of BIFs used to implement the distribution protocol.
The newly documented BIFs are:
append_element/2
,
bump_reductions/1
,
display/1
,
function_exported/3
,
garbage_collect/0,1
,
is_builtin/3
,
loaded/0
,
make_tuple/2
,
md5/1
,
md5_final/1
,
md5_init/1
,
md5_update/2
,
port_close/1
,
port_command/2
,
port_connect/2
,
port_control/3
,
port_to_list/1
,
ref_to_list/1
,
system_info/1
, and
yield/0
.
Own Id: OTP-3675
-
The new BIF term_to_binary/2 can be used for automatically
compressing the external representation of an Erlang term.
The binary_to_term/1 BIF in R7 automatically recognises
and decompresses such compressed terms.
Own Id: OTP-3676
There are also release notes for
older versions.