Bug fix release : otp_src_R12B-2
Build date : 2008-04-09
This is bug fix release 2 for the R12B release.
You can find the README file for the release at
http://www.erlang.org/download/otp_src_R12B-2.readme (this file)
The source distribution and binary distribution for Windows can be
downloaded from
http://www.erlang.org/download/otp_src_R12B-2.tar.gz
http://www.erlang.org/download/otp_win32_R12B-2.exe
Beginning with this release, the distribution can also be downloaded
using the BitTorrent protocol. Use the following torrent files to
download the source distribution and binary distribution for Windows:
http://www.erlang.org/download/otp_src_R12B-2.tar.gz.torrent
http://www.erlang.org/download/otp_win32_R12B-2.exe.torrent
Note: To unpack the TAR archive you need a GNU TAR compatible program.
For installation instructions please read the README file that is part
of the distribution.
The on-line documentation can be found at: http://www.erlang.org/doc/
You can also download the complete HTML documentation or the Unix manual files
http://www.erlang.org/download/otp_doc_html_R12B-2.tar.gz
http://www.erlang.org/download/otp_doc_man_R12B-2.tar.gz
We also want to thank those that sent us patches, suggestions and bug
reports,
The OTP Team
--- asn1-1.5.1 ------------------------------------------------------------
OTP-7149 A bug related to renaming of types has been fixed.This
occured using the .set.asn functionality.
OTP-7154 syntax error in ASN1 value now correctly shown
OTP-7155 Now an COMPONENTS OF construct in an parameterized type is
expanded correctly
OTP-7169 Now the asn1-compiler also handles empty SEQUENCE DEFAULT
values as {}.
OTP-7171 Now SelectionType gets the tag of the selected type.
OTP-7193 Correction of generated code for decode of an open type in a
SEQUECNE OF/ SET OF
OTP-7199 Misc improvements and bug corrections regarding default
values.
--- compiler-4.5.1.1 ------------------------------------------------------------
OTP-7188 Corrected a compiler bug that could cause a complex binary
matching operation to fail when it shouldn't. (Thanks to
Tomas Stejskal.)
OTP-7202 In unusual circumstances, the environment for a fun could
bind wrong values.
OTP-7206 Long sequences of list comprehensions without generators
joined by the '++' operator would cause a code expansion
explosion, which could cause the compiler to run out of
memory. To resolve this problem, in
'[...||...]++Expr', Expr is now evaluated
before the list comprehension. This change is
backwards compatible (see the following note about evaluation
order if you have doubts).
Note about evaluation order: The Reference manual says
that subexpressions are evaluated in any order before
the expression itself. Therefore, in an expression such as
'LeftExpr++RightExpr', you should not depend on
LeftExpr being evaluated before RightExpr or
vice versa. The evaluation order is only important if the
expressions contains and/or depends on operations with
side-effects, such as message passing or ets
operations.
--- compiler-4.5.2 ------------------------------------------------------------
OTP-7223 A bug in the old inliner has been fixed. Some undocumented
functionality has been removed.
OTP-7227 Matching several binary patterns in parallel using the '='
operator is not allowed (an implementation limitation), but
the compiler did not reject all such attempts (depending on
the patterns, the generated code might or might not work
correctly). Now the compiler rejects all binary patterns
joined by '='.
OTP-7233 Complex combinations of record operations and binary matching
could cause the compiler to crash. (Thanks to Vladimir
Klebansky.)
OTP-7240 In rare circumstances, mixing binary matching clauses with
clauses matching other data types, the compiler could crash.
--- cosEvent-2.1.3 ------------------------------------------------------------
OTP-7011 Updated file headers.
--- cosEventDomain-1.1.3 ------------------------------------------------------------
OTP-7011 Updated file headers.
--- cosFileTransfer-1.1.5 ------------------------------------------------------------
OTP-7011 Updated file headers.
--- cosNotification-1.1.7 ------------------------------------------------------------
OTP-7011 Updated file headers.
--- cosProperty-1.1.6 ------------------------------------------------------------
OTP-7011 Updated file headers.
--- cosTime-1.1.3 ------------------------------------------------------------
OTP-7011 Updated file headers.
--- cosTransactions-1.2.4 ------------------------------------------------------------
OTP-7011 Updated file headers.
--- dialyzer-1.8.0 ------------------------------------------------------------
OTP-7241 Dialyzer's analysis is from now on exclusively based on
success typings. In particular, support for options
--old_style and --dataflow has been discontinued.
Better and more aggressive handling of type information in
records.
Dialyzer has a new warning option -Wunmatched_returns which
warns for function calls that ignore the return value. This
catches many common programming errors (e.g. calling
file:close/1 and not checking for the absence of errors),
interface discrepancies (e.g. a function returning multiple
values when in reality the function is void and only called
for its side-effects), calling the wrong function (e.g.
io_lib:format/1 instead of io:format/1), and even possible
performance defects (e.g. unnecessarily constructing a list
using a list comprehension instead of using lists:foreach/2).
Whenever a function returns a single atomic value (e.g. 'ok'
or pid()), the warning is suppressed. This allows for "void"
functions (returning a single atom like 'ok') or for calls to
certain builtins like spawn. Because not all calls which
ignore the return value are discrepancies, the option is off
by default and has to be explicitly requested by the user.
But we recommend it nevertheless.
Some warning options (-Wno_comp, -Wno_guards,
-Wno_unsafe_beam, etc.) which could be used when analyzing
bytecode produced by an old BEAM compiler have been removed.
--- docbuilder-0.9.8.4 ------------------------------------------------------------
OTP-7236 The element "code" with multiple CDATA or CDATA plus other
data now works as expected, previously it caused a crash.
--- edoc-0.7.5 ------------------------------------------------------------
OTP-7243 Minor updates, mostly cosmetic.
--- erl_interface-3.5.6 ------------------------------------------------------------
OTP-7183 Minor documentation fixes.
--- erts-5.6.1.1 ------------------------------------------------------------
OTP-7167 The {allocator_sizes, Alloc} and
alloc_util_allocators arguments are now accepted by
erlang:system_info/1. For more information see the
erlang(3) documentation.
OTP-7176 Not enough parameters were passed when sending an error
report in erl_check_io.c (Thanks to Matthew Dempsky).
OTP-7187 The finishing reallocation of the heap block when hibernating
a process is now always moving the heap block since it
drastically reduces memory fragmentation when hibernating
large amounts of processes.
OTP-7198 In rare circumstances, complex binary matching code could
cause the emulator to crash or not match when it should.
(Thanks to Rory Byrne.)
--- erts-5.6.2 ------------------------------------------------------------
OTP-7128 More checksum/hash algorithms from the zlib library are now
available as built in functions (like md5 hashes has been for
a long time).
OTP-7139 Minor improvements in the garbage collector.
OTP-7142 The switch "-detached" to the windows werl program now can
create an erlang virtual machine without any main window and
without a temporary console showing.
OTP-7147 The maximum length of an atom of 255 characters is now
strictly enforced. binary_to_term/1 will now fail with a
badarg if an encoded term contains an atom longer than 255
characters. Atoms created by drivers will now be truncated to
255 characters if necessary. (Thanks to Matthew Dempsky.)
OTP-7175 erlang:system_info/1 now accepts the logical_processors, and
debug_compiled arguments. For more info see the, erlang(3)
documentation.
The scale factor returned by
test_server:timetrap_scale_factor/0 is now also effected if
the emulator uses a larger amount of scheduler threads than
the amount of logical processors on the system.
OTP-7177 A bug in "bignum handling" on some 64bit architectures could
cause rem and div operations on large numbers to hang
indefinitely. Rem operations involving the smallest negative
number representable in 28 bits or 60 bits could also cause
access violation and emulator crash. Both errors are
corrected.
OTP-7200 A new BIF ets:update_element/3. To update individual elements
within an ets-tuple, without having to read, update and write
back the entire tuple.
OTP-7212 When doing the initial garbage collection after waking a
hibernated process, a fullsweep garbage collection was
unnecessarily triggered.
OTP-7213 A process executing the processes/0 BIF can now be preempted
by other processes during its execution. This in order to
disturb the rest of the system as little as possible. The
returned result is, of course, still a consistent snapshot of
existing processes at a time during the call to processes/0.
The documentation of the processes/0 BIF and the
is_process_alive/1 BIF have been updated in order to clarify
the difference between an existing process and a process that
is alive.
OTP-7225 The beta testing module gen_sctp now supports active mode as
stated in the documentation. Active mode is still rather
untested, and there are some issues about what should be the
right semantics for gen_sctp:connect/5. In particular: should
it be blocking or non-blocking or choosable. There is a high
probability it will change semantics in a (near) future
patch.
Try it, give comments and send in bug reports!
OTP-7226 Invalid arguments to ets:update_counter/3 were not handled
correctly. A tuple position (Pos) less than 1 caused the
element directly following the key to be updated (as if no
position at all had been specified). All invalid values for
Pos will now fail with badarg.
OTP-7260 The runtime system with SMP support could under rare
circumstances deadlock when a distribution channel was taken
down while multiple simultaneous operations were performed on
it.
--- gs-1.5.9 ------------------------------------------------------------
OTP-7242 Fixed grid_line crash, which caused tv, debugger and pman
crashes. Thanks Jan Jacobs and others.
--- hipe-3.6.6 ------------------------------------------------------------
OTP-7254 A fix for an #include problem which caused the FP exception
test to fail unnecessarily on debian/glibc-2.7/x86 systems.
Added SIGFPE loop detection to the FP exception test. This
prevents the test from looping indefinitely, which could
happen when the CPU is supported (so we can enable FP
exceptions on it) but the OS isn't (so we can't write a
proper SIGFPE handler). x86 on an unsupported OS is known to
have had this problem.
OTP-7255 HiPE now also supports little-endian ARM processors.
--- ic-4.2.17 ------------------------------------------------------------
OTP-7011 Updated file headers.
--- inets-5.0.3 ------------------------------------------------------------
OTP-7144 Updated copyright headers and fixed backwards compatibility
for an undocumented feature, for now. This feature will later
be removed and a new and documented option will take its
place.
--- inets-5.0.4 ------------------------------------------------------------
OTP-7172 Changed calls to file open to concur with the API and not use
deprecated syntax.
OTP-7173 [tftp] Server lost the first packet when the client timed out
--- inets-5.0.5 ------------------------------------------------------------
OTP-7220 [tftp] Blocks with too low block numbers are silently
discarded. For example if a server receives block #5 when it
expects block #7 it will discard the block without
interrupting the file transfer. Too high block numbers does
still imply an error. External TR HI96072.
OTP-7221 [tftp] The problem with occasional case_clause errors in
tftp_engine:common_read/7 has been fixed. External TR
HI97362.
--- kernel-2.12.1.1 ------------------------------------------------------------
OTP-7185 Fixed a problem in group that could cause the ssh server to
lose answers or hang.
--- kernel-2.12.1.2 ------------------------------------------------------------
OTP-7167 The {allocator_sizes, Alloc} and
alloc_util_allocators arguments are now accepted by
erlang:system_info/1. For more information see the
erlang(3) documentation.
OTP-7176 Not enough parameters were passed when sending an error
report in erl_check_io.c (Thanks to Matthew Dempsky).
OTP-7187 The finishing reallocation of the heap block when hibernating
a process is now always moving the heap block since it
drastically reduces memory fragmentation when hibernating
large amounts of processes.
OTP-7198 In rare circumstances, complex binary matching code could
cause the emulator to crash or not match when it should.
(Thanks to Rory Byrne.)
--- kernel-2.12.2 ------------------------------------------------------------
OTP-7175 erlang:system_info/1 now accepts the logical_processors, and
debug_compiled arguments. For more info see the, erlang(3)
documentation.
The scale factor returned by
test_server:timetrap_scale_factor/0 is now also effected if
the emulator uses a larger amount of scheduler threads than
the amount of logical processors on the system.
OTP-7186 Updated the documentation for erlang:function_exported/3 and
io:format/2 functions to no longer state that those functions
are kept mainly for backwards compatibility.
OTP-7209 A bug caused by a race condition involving disk_log and pg2
has been fixed.
OTP-7213 A process executing the processes/0 BIF can now be preempted
by other processes during its execution. This in order to
disturb the rest of the system as little as possible. The
returned result is, of course, still a consistent snapshot of
existing processes at a time during the call to processes/0.
The documentation of the processes/0 BIF and the
is_process_alive/1 BIF have been updated in order to clarify
the difference between an existing process and a process that
is alive.
OTP-7225 The beta testing module gen_sctp now supports active mode as
stated in the documentation. Active mode is still rather
untested, and there are some issues about what should be the
right semantics for gen_sctp:connect/5. In particular: should
it be blocking or non-blocking or choosable. There is a high
probability it will change semantics in a (near) future
patch.
Try it, give comments and send in bug reports!
OTP-7244 tuple_size/1 and byte_size/1 have been substituted for size/1
in the documentation.
--- megaco-3.7.2 ------------------------------------------------------------
OTP-6972 There is a race condition when cancelling requests during a
high load situations which could lead to spurious (megaco
internal) messages beeing sent to user processes. When a
request is issued using megaco:call, which returns only after
a "reply" can be delivered, the request timer might expire
during the cancelling of the request, which will cause megaco
to attempt to deliver the timeout info, which will result in
the spurious message. This problem has now been eliminated by
introducing a proxy process, which simply dies when the
"real" response has been delivered. The spurious reply will
then be sent to a non-existing process.
OTP-7138 [text] Decoding a version 2 message with an
observedEventParameter where the value of the parmValue was
CT, failes. CT is defined as the context attribute token in
version 3, and this incorrectly caused the scanner (which is
version agnostic) to create an ContextAttrToken, which caused
the version 2 parser to crash.
--- megaco-3.7.3 ------------------------------------------------------------
OTP-7168 The behaviour megaco_encoder was lacking three functions
which was made mandatory as of version 3.7.
OTP-7180 Updated the graphs of the performace chapter with to reflect
this version of megaco. Also included results with
HiPE-compiled codec's.
OTP-7189 It was possible to create permenant pending counter data for
a somewhat misbehaving (request) receiver. If a megaco entity
("sender") sends a request and the "receiver" (of the
request) responds with a pending message but never actually
sends the reply (or if it is lost), the created pending
counter data would never be deleted if the long_request_timer
was set to infinity (old default) and the recv_pending_limit
was set to an integer value (default is infinity).
OTP-7216 If a counter where reset (wrap-around) as a result of
increment larger than 1, then it was actually always set to
the min_trans_id-value.
--- megaco-3.7.4 ------------------------------------------------------------
OTP-7249 The (plain) text scanner could incorrectly identify character
strings (any 17 char long string with the char t in the
middle) as a TimeStampToken.
OTP-7251 In order to better deal with codec's not implementing the
entire megaco_encoder behaviour, translations of undefined
(not implemented) functions to the {error, not_implemented}
return value has been added for the functions
megaco_encoder:encode_transaction,
megaco_encoder:encode_action_requests and
megaco_encoder:encode_action_reply.
--- mnesia-4.4.1 ------------------------------------------------------------
OTP-7170 Snmp index tables was not initialized correctly in mnesia-4.4.
--- mnesia-4.4.2 ------------------------------------------------------------
OTP-7205 Sticky locks could lead to hanging transactions.
OTP-7208 mnesia:snmp_get_next_index/2 didn't work with partial
index keys. Argument checking is now done according to
documentation, in functions mnesia:snmp_get_row/2,
mnesia:snmp_get_mnesia_key/2 and
mnesia:snmp_get_next_index/2. These functions now
require that RowIndexis a list.
--- orber-3.6.9 ------------------------------------------------------------
OTP-7011 Updated file headers.
--- parsetools-1.4.4 ------------------------------------------------------------
OTP-7224 The size of the code generated by Yecc has been reduced. The
code is also faster.
Macros can now be used in actions.
--- percept-0.7 ------------------------------------------------------------
OTP-7162 Percept no longer depends on external c-libraries. The
graphical rendering is now done via erlang code.
--- percept-0.7.1 ------------------------------------------------------------
OTP-7215 Fixed out of bounds rendering problem in egd which could
cause the rendering process to crash.
--- runtime_tools-1.7.2 ------------------------------------------------------------
OTP-7164 etop now collects process information faster and more
reliably than before (a race condition reported by Igor
Goryachev has been eliminated).
Trace messages could be lost when ttb:stop/0 was called.
--- snmp-4.10.2 ------------------------------------------------------------
OTP-7152 snmp_generic:table_set_cols/3 did not handle unexpected
return values correctly when setting column values. Serge
Aleynikov
OTP-7153 [agent] Uninstalling MEs when unloading mibs incorrect and
therefor never done.
OTP-7157 When sending a trap, the order of the variable bindings not
provided by the trap-sender, could be mangled by the agent.
OTP-7158 The MIB-compiler did not suppport a name assignment which was
sequence of numbers, only a parent object name followed by a
sequence of numbers.
OTP-7159 Invalid variable value causes crashing agent worker process
when sending traps.
OTP-7160 The MIB-compiler did not recognize well-known-names as top
parents. The names 'ccitt' (0) , 'iso' (1) and
'joint-iso-ccitt' (2) is now also recognized by the MIB
compiler.
--- snmp-4.10.3 ------------------------------------------------------------
OTP-7219 [manager] The config option inform_request_behaviour was not
properly parsed, which caused the manager to revert to the
default value, auto.
--- ssh-0.9.9.6 ------------------------------------------------------------
OTP-7246 Updated asn1 file due to change in the asn1 compiler. This
has no semantical effect on the ssh application.
OTP-7247 Allows for the option {fd, FD} in listen and connect calls.
The option is passed on to gen_tcp:listen and gen_tcp:connect
--- stdlib-1.15.2 ------------------------------------------------------------
OTP-7064 The queue module has been rewritten to make it easier to use.
Suggestions and discussion from and with among others Lev
Walkin, Anders Ramsell and Rober Virding in december 2007 on
erlang-questions@erlang.org. It was also discussed to change
the internal representation to contain length information
which would speed up len/1 but that change has been
postponed. Anyone interested may write an EEP and try to
reach an acceptable compromise for queue overhead and thereby
the speed of all other operations than len/1. The queue
module is now optimized for fast and minimal garbage in/2 and
out/1 and such. See the documentation.
New functions: is_queue/1, get/1, get_r/1, peek/1, peek_r/1,
drop/1, drop_r/1 and liat/1. is_queue/1 is a new predicate,
liat/1 is a correction of an old misspelling, and the others
(get*, peek* and drop*) are new interface functions.
OTP-7084 The functions io_lib:write/1,2 and io_lib:print/1,4 have been
changed when it comes to writing floating point numbers. This
change affects the control sequences p, P, w, and W of the
io_lib module. (Thanks to Bob Ippolito for code
contribution.)
OTP-7146 When inserting many small objects, Dets sometimes crashed
when reaching the maximum number of slots. (Thanks to Daniel
Goertzen.)
OTP-7184 Processes linked to the Erlang shell did not get an exit
signal when the evaluator process was killed. This bug,
introduced in R12B-0, has been fixed.
OTP-7186 Updated the documentation for erlang:function_exported/3 and
io:format/2 functions to no longer state that those functions
are kept mainly for backwards compatibility.
OTP-7200 A new BIF ets:update_element/3. To update individual elements
within an ets-tuple, without having to read, update and write
back the entire tuple.
OTP-7226 Invalid arguments to ets:update_counter/3 were not handled
correctly. A tuple position (Pos) less than 1 caused the
element directly following the key to be updated (as if no
position at all had been specified). All invalid values for
Pos will now fail with badarg.
OTP-7229 For certain terminals, io:columns/0 could return 0 instead of
enotsup. That is now corrected.
OTP-7231 string:join/2 now accepts an empty list as first argument.
OTP-7232 qlc:info() can now handle port identifiers, pids, references,
and funs. (Thanks to Wojciech Kaczmare for reporting this
bug.)
When evaluating the parent_fun messages sent to the process
calling qlc:cursor() were sometimes erroneously consumed.
This bug has been fixed.
OTP-7234 erl_parse:abstract() can now handle bit strings.
OTP-7238 qlc:info/1,2 accepts a new option, depth. The type
SelectedObjects used in the description of qlc:table/2 has
been augmented.
OTP-7244 tuple_size/1 and byte_size/1 have been substituted for size/1
in the documentation.
--- syntax_tools-1.5.4 ------------------------------------------------------------
OTP-7243 Minor updates, mostly cosmetic.
--- test_server-3.2.2 ------------------------------------------------------------
OTP-7175 erlang:system_info/1 now accepts the logical_processors, and
debug_compiled arguments. For more info see the, erlang(3)
documentation.
The scale factor returned by
test_server:timetrap_scale_factor/0 is now also effected if
the emulator uses a larger amount of scheduler threads than
the amount of logical processors on the system.
--- tv-2.1.4.2 ------------------------------------------------------------
OTP-7261 Minor updates.
--- typer-0.1.2 ------------------------------------------------------------
OTP-7243 Minor updates, mostly cosmetic.
--- xmerl-1.1.7 ------------------------------------------------------------
OTP-7190 xmerl's schema validation now takes default facets into
account
--- xmerl-1.1.8 ------------------------------------------------------------
OTP-7211 A Kleene Closure child in a sequence consumed all following
childs. This problem has been fixed.
OTP-7214 Now validating xhtml1-transitional.dtd. A certain contentspec
with a succeding choice, that didn't match all content,
followed by other child elements caused a failure. This is
now corrected.