Erlang/OTP-3 has been released

Bjorn Gustavsson bjorn@REDACTED
Thu Feb 10 11:43:59 CET 2005

Bug fix release     : otp_src_R10B-3
Build from snapshot : 2005-02-10

This is a bug fix release 3 for the R10B release.
You can download the full source distribution from

Note: To unpack the TAR archive you need a GNU TAR compatible
program. For instance, on MacOS X you need to use the 'gnutar' command;
you can't use the 'tar' command or StuffIt to unpack the sources.

For installation instructions please read the README that is part of
the distribution.

The Windows binary distribution can be downloaded from

The documentation at will be updated. You can
also download the complete HTML documentation or the Unix manual files

For some OTP applications there are more detailed release notes in the
HTML documentation.

We also want to thank those that sent us patches, suggestions and bug

The OTP Team

--- otp --------------------------------------------------------------

    OTP-5346  Linked in drivers in the crypto, and asn1 applications are
	      now compiled with the -D_THREAD_SAFE and -D_REENTRANT
	      switches on unix when the emulator has thread support

	      Linked in drivers on MacOSX are not compiled with the
	      undocumented -lbundle1.o switch anymore. Thanks to Sean Hinde
	      who sent us a patch.

	      The linked in driver in crypto, and the port program in ssl,
              now compile on OSF1.

	      Minor Makefile improvements in runtime_tools.

--- erts -------------------------------------------------------------

    OTP-5234  Minor update of the internal documentation of the epmd

	      The listen port of epmd has now been registered at IANA:

    OTP-5297  The function erlang:float/1 can now be used in match
	      specifications and is recognized by dbg:fun2ms/1 and
	      ets:fun2ms/1. This addition is part of the work to
	      "harmonize" match specification guards with Erlang guards.

    OTP-5324  The register/2 BIF would return 'true' even if the second
	      argument was not a pid for living process. Corrected to cause
	      an exception.

    OTP-5340  In the 'bag' type of ets tables, elements having the same key
	      were supposed to be ordered in insertion order. That was not
	      the if a rehash occurred.

    OTP-5361  Fixed a bug in the hybrid heap in distributed send

    OTP-5376  A BIF erlang:raise/3 has been added. See the manual for
	      details. It is intended for internal system programming only
	      and advanced error handling.

    OTP-5384  run_erl.c now works on Mac OS X and FreeBSD.

    OTP-5386  Mikael Pettersson (HiPE) corrected a few bugs in the emulator
	      that caused problems when compiled with the experimental

--- kernel -----------------------------------------------------------

    OTP-5363  The application master for an application now terminates the
	      application faster, which reduces the risk for timeouts in
	      other parts of the system

    OTP-5376  A BIF erlang:raise/3 has been added. See the manual for
	      details. It is intended for internal system programming only
	      and advanced error handling.

--- stdlib -----------------------------------------------------------

    OTP-5276  The deprecated attribute is now checked by the linter.
	      See xref(3) for a description of the deprecated

    OTP-5327  Several bugs in the Erlang shell have been fixed.

    OTP-5329  Some dead code reported by Dialyzer was eliminated.

    OTP-5335  The restricted shell will now indicate if the return value
	      from a user predicate is on an incorrect form.

    OTP-5338  The linter could output invalid warnings about bit patterns
	      in record initializations. This problem has been fixed.

    OTP-5341  ordsets:is_set(NoList), where NoList is any term except a
	      list, would crash. For consistency with sets:is_set/1
	      and gb_sets:is_set/1, it now returns 'false'.

--- compiler ---------------------------------------------------------

    OTP-5342  Given bit syntax construction in certain complex contexts
	      involving a catch, the compiler would either crash or
	      terminate due to failure in an internal consistency check.
	      (Thanks to Fredrik Thulin.)

	      Matches such as '<<103133:64/float>> = <<103133:64/float>>'
	      used to fail. Now they succeed.

	      Shadowing of variables in bit syntax matches
	      in fun heads such as in 'L = 8, F = fun(<<L:L,B:L>>) -> B
	      end' was handled incorrectly by the compiler. The fun used to
	      be compiled as if it was written 'fun(<<8:8,B:8>>)', while it
	      should be compiled in the same way as 'fun(<<L:8,B:L>>)'.

	      A bug in the validation pass has been corrected. It
	      sometimes occurred when the compiler optimized by reusing
	      code for causing an exception when the reused code was called
	      from within catch or try-catch statements. Then the validator
	      refused to approve the code and complained about

	      Corrected a bug in the optimizer that would cause the
	      compiler to crash. (Thanks to Peter-Henry Mander.)

	      There a now warnings generated if a bit syntax construction
	      will fail at run-time because of a type mismatch (e.g. <<an_atom:8>>).

    OTP-5371  Binary pattern mattern such as 't(<<A:8>> = <<A:8>)' used to
	      silently fail at runtime (i.e. never match). The compiler now
	      generates an error for any such patterns.

--- parsetools -------------------------------------------------------

    OTP-5369  A bug in the file parsetools/include/yeccpre.hrl
	      caused yecc:parse_and_scan/1 to always report a parse
	      failure when the lexer reported end-of-file. This problem has
	      been fixed.
--- hipe -------------------------------------------------------------

    OTP-5385  A few bugs were corrected in the hipe application.

--- runtime_tools ----------------------------------------------------

    OTP-5329  A bug in 'dbg' when tracing to wrap trace files has been corrected.
	      It failed to delete any already existing wrap trace files
	      with the same names when starting a new wrap trace.
	      (The bug was found by Dialyzer.)

--- tools ------------------------------------------------------------

    OTP-5071  The Xref analysis 'locals_not_used' could return too many
	      functions. This problem has been fixed.

    OTP-5305  The cover tool could not always compile parse
	      transformed modules. This problem has been fixed.

--- sasl -------------------------------------------------------------

    OTP-5287  A bug that made it impossible to call rb:show(N) (N being an
	      integer) twice without getting an error has been fixed.

--- gs, tv, appmon, debugger, pman, toolbar --------------------------

    OTP-5381  The graphic applications now search for HTML documentation in
	      the correct place.

--- inets ------------------------------------------------------------

    OTP-5188  The inets supervision tree has been reorganized to create a
	      better balance between the inets services. Preferably they
	      should not effect each other. The ftp service has also been
	      included in the inets supervision tree, it was for reasons
	      unknown, not included before.

    OTP-5189  The service concept in inets is now better documented.

    OTP-5249  The URI check that disables relative links that goes outside
	      the server-root still missed a few cases, in spite of the
	      improvement in OTP-5140.

    OTP-5261  The inets shutdown times have proven to be too short under
	      some circumstances, as a heavy load, therefore they have been

    OTP-5303  The http client pipelining implementation has been rewritten
	      as the old implementation was too optimistic about when to
	      pipeline. In the process of doing this also the error
	      handling was improved, better clean up is performed when the
	      request handling process terminates and better handling of
	      the case that the httpc_manager process dies and is

    OTP-5304  Options for automatic redirection and pipelining is now
	      available in the http client API.

    OTP-5309  Improved handling of status codes 30X and 50X.
	      Fixed Bugs and Malfunctions:

    OTP-5368  When sending a request through a proxy the absolute URI must
	      be used.
	      Improvements and New Features:

    OTP-5331  Basic support for cookies was implemented. Later some more
	      functions to inspect cookies may be added.

    OTP-5379  A top tftp supervisor was added in preparation for adding a
	      tftp service in a future inets release.

--- megaco ------------------------------------------------------------

    OTP-5296  The error counter medGwyGatewayNumErrors not working. This
	      counter is incremented by the megaco application when decode
	      of a message fails. Due to the construction of the decoders,
	      nothing beyond the error reason (in the text case, basically
	      an unintelligible list of tokens) is returned. E.g. not the
	      Mid needed to be able to deduce which MG (conn-handle), this
	      message came from. This resulted in an increment of the
	      "global" medGwyGatewayNumErrors counter instead of the
	      connection specific. This has been fixed. In the text case by
	      adding a mini decoder, that basically only decodes the
	      message as far as the Mid (if the error is in or before the
	      Mid, then this decoder also fails).

    OTP-5310  When the megaco:cancel/2 function is called, the megaco
	      application is supposed to perform a cleanup. E.g. remove
	      aut-dated request and reply records. For the reply-records
	      this did not work, since it only removed those record which
	      had the state field set to wait_for_ack, and not aborted! If
	      the state had been set to aborted and not yet been removed
	      (which normally happens when the reply_timer times out) when
	      the disconnect and cancel functions where called, those
	      records would never be removed. This means that if eventually
	      a transaction was received which had the same transaction-id
	      as the aborted reply, this whould just be ignored!

    OTP-5312  Incorrect definition of hexdig in the flex-scanner.

    OTP-5313  Various cleanup of the v2 text parser: 
	      1) Removed unused Nonterminal and rule digitMapName. 
	      2) Removed superflous transactionRequest rule's. 
	      (this was probably a leftover from RFC2885)
	      Improvements and new features:

    OTP-5204  Implementation of the Megaco v2 corrigendum 1 (03/2004).
	      This means in short:
	      - The ModemDescriptor has been deprecated. If this 
	      descriptor is found in a received message it will be 
	      ignored (removed from the message). 
	      If an attempt is made to encode a message containing a 
	      ModemDescriptor, an error will be returned. 
	      If in the binary codec case, encoding-config contains native, 
	      then the ModemDescriptor will however be included in the message 
	      when encoding and also decoded. This means that it in this case 
	      it is up the user to never include the ModemDescriptor in a
	      transmitted message and to ignore it, if received.
	      - Addition of the EmergencyOffToken, which is used in the 

    OTP-5220  Added receiving pending limit config property. This is the limit for 
	      the number of pending messages that is accepted before a request is 
	      considered "a lost cause".

    OTP-5236  Added support for preliminary version 3. Based on TD-33. See chapter 
	      Handling megaco versions on how to configure and use the preliminary 
	      version 3 (prev3a).

    OTP-5351  Added configure thread support.
	      Fixed bugs and malfunctions:

    OTP-5352  When text encoding the ServiceChangeParm in v2, the serviceChangeInfo 
	      field was ignored.

    OTP-5353  When text parsing serviceChangeParm in v2, all of auditItem was put 
	      into the auditToken field of the AuditDescriptor (the serviceChangeInfo 
	      field of the ServiceChangeParm record). The indAudterminationAudit 
	      should go into the auditPropertyToken field.

    OTP-5220  The config property orig_pending_limit has been renamed to 
--- mnesia ------------------------------------------------------------

	      Fixed Bugs and Malfunctions:

    OTP-5289  Reading bad backup files failed completly, now it just
	      ignores the bad parts.

    OTP-5300  Disk tables could be loaded in wrong order at startup,
	      changes made when a node was down could be missed.

    OTP-5328  A call to mnesia:add_table_copy could hang if the node which
	      the table was copied from crashed.

    OTP-5358  Mnesia could crash during the start phase if a mnesia table
	      was deleted by another node.
	      Improvements and New Features:

    OTP-5347  Introduced a new env parameter pid_sort_order which
	      should be set to r9b_plain on non unpatched R9B
	      systems to be able to use mnesia on mixed systems with
	      unpatched R9B nodes. This is a workaround for a specific
	      upgrade problem when mixing certain emulators versions so it
	      should not be used unless needed.

--- snmp ------------------------------------------------------------

	      Improvements and new features:

    OTP-5286  [manager] Added possibility to monitor a registered user. 
	      See snmpm:register_user_monitor.

    OTP-5298  [agent] Improved symbolic store. Alias and Oids where stored with 
	      similar key's (seperated by types: atom() and lists() respectively).
	      Also added new function: snmpa:which_aliasnames.

    OTP-5308  [agent] The agent local_db volatile storage method uses an ets-table
	      which is private. This table has been made protected in order to 
	      make it easier to bedug and test the snmp agent.
	      Reported Fixed Bugs and Malfunctions:

    OTP-5273  Misspelled deprecated function. Non-existent function 
	      snmp:is_constistent/1 was marked as depricated. Should have been 

    OTP-5281  [agent] Unclear documentation for function snmpa:send_notification.
	      The Recv argument (specifically the {M,F,A} variant).

    OTP-5299  [manager] It was never documented how the default user behaviour 
	      could be overriden (default user is the module snmpm_user_default).
	      See application configuration or configuration params.

    OTP-5306  [manager] The server process contained a bug that caused it to 
	      crash, if it received an exit message from it's gct (GC timer) 
	      process and it's verbosity was log or higher. This also effects 
	      the application dowgrade.

    OTP-5307  [agent] The agent config file, target_addr.conf, was incorrectly 
	      described in the Target Address Definitions chapter of the User's 
	      Guide. The EngineId option was left out.

    OTP-5314  [manager] When a InformRequest is received, the manager sends a 
	      response message. This did not include the varbinds of the original 
	      message. See RFC 3416, chapter 4.2.7.

    OTP-5315  [manager] Erroneous function guards made it possible to update 
	      some agent info (that should be "static").

    OTP-5364  [manager] Manager synchronous get-function with timeout erroneous. 
	      Results in a function clause.

    OTP-5365  Replace in decoder fun's of the "old style" fun format, {atom(), atom()}, 
	      with a proper fun, e.g. "fun the_function/1". 

    OTP-5367  [manager] Register agent using the config file agents.conf failed due to 
	      incorrect function guard. 

Björn Gustavsson, Erlang/OTP, Ericsson AB

More information about the erlang-questions mailing list