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.