Bug fix release : otp_src_R7B-3
From snapshot   : 20010601
 
This is a bug fix release R7B-3. You can download the full source
distribution or the patch that take R7B-2 up to R7B-3.
 
  http://www.erlang.org/download/otp_src_R7B-3.tar.gz
  http://www.erlang.org/download/otp_src_R7B-2to3.patch.gz
 
There are lots of bug fixes and improvements in this release, for more
information read the distribution readme
 
  http://www.erlang.org/download/otp_src_R7B-3.readme
 
To patch the previos release "otp_src_R7B-2" you use a patch program
that understand the "unified" patch format and do
 
  % cd otp_src_R7B-X
  % gzip -dc <location of patch file>/otp_src_R7B-2to3.patch.gz | patch -p1
 
There is no support for building a Windows version from source.
 
Note that the documentation is not updated, we will do that soon.
 
Darwin/OS X support was added but is not completed. Read the README file
for more information.
 
For installation instructions please read the README that is part of
the distribution,
 
The OTP Team


  -- orber ------------------------------------------------------------------

    OTP-3912 - When communicating via IIOP using version 1.2 Orber
               used incorrect offset for reply bodies containing
               system exceptions, exceptions and location forward.

    OTP-3911 - Orber did not return correct IFR Id:s when raising
               system exceptions via IIOP.  Since Orber now returns a
               different, and correct, IFR-id for systems exceptions
               other ORB:s and older versions of Orber might raise a
               different exception, probably MARSHAL or UNKNOWN. This
               only occurs when communicating via IIOP. It is not
               possible to upgrade during runtime. Use orber:stop(),
               load new version and restart Orber by invoking
               orber:start().

    OTP-3910 - If two different processes concurrently manipulated a
               CosNaming::NamingContext the data could become
               corrupted. For single-node Orber this error occured in
               version 3.2.1, 3.2.2 and 3.2.3. For multi-node Orber
               this behaviour have been present at all time.

    OTP-3907 - If a psuedo object raises an exception or exits the
               exception was only returned, not thrown.

    OTP-3905 - Improved performance for all types, simple and complex, when
               communicating via IIOP. 

    OTP-3899 - Orber defined an incorrect ID for CodeSets. This may cause
               INV_OBJREF or DATA_CONVERSION exceptions to be thrown, it
               depends on the other ORB.

    OTP-3961 - Orber now defines the configuration variable,
               iiop_setup_connection_timeout, which makes it possible 
               to timeout connection attempts to another ORB before 
               the OS TCP timeout is activated.

    OTP-3962 - It is now possible to configure Orber to generate reports 
               when abnormal situations occurs. For more information 
               consult the User's Guide regarding the configuration
               parameter orber_debug_level. 
               Note, it is not recommended to use this option for 
               delivered systems since some of the reports is not to be 
               considered as errors.

    OTP-3945 - Orber now accepts a list of addresses as value for the 
               configuration parameter orbInitRef.

    OTP-3946 - Orber now includes services defined by the 
               configuration parameter orbInitRef when invoking 
               corba:list_initial_services/0.

    OTP-3943 - When using the configuration variable 'orbDefaultInitRef' 
               with a value pointing to another Orber-ORB it was not 
               possible to install Orber since Orber used to create
               default NamingContexts. Orber no longer add these contexts.

    OTP-3944 - Orber accessed corbaloc addresses in reverse order. 
               corbaloc adrresses are now accessed in FIFO order 
               (instead of LIFO).

    OTP-3942 - When installing Orber no default NamingContext's, i.e., 
               host, hosts, resources, development, factories and 
               workgroup, will be added. These contexts was defined in 
               a cancelled specification.

    OTP-3904 - Registering data in the IFR overhead reduced.

    OTP-3904 - The overhead for the function is_a/1 have been reduced, 
               which also affects remote narrow operations for inherited 
               interfaces (e.g. using Java or C++ ORBs).

    OTP-3966 - If the underlying OS was not configured to allow Erlang to 
               lookup the host-name by using the short-name the result was 
               always the IP-adress 127.0.0.1 (loop-back).
               Now Orber uses the full name. Hence, make sure the 
               net_adm:localhost/0 and inet:getaddr/2 return proper values.

    OTP-3992 - The CONV_FRAME_CodeSetComponentInfo struct was not placed 
               correctly in IOR:s. Each profile must be self-sustained 
               which is why this information must be duplicated in each 
               profile. Currently this only applies for the IIOP-profile 
               but will also concern future protocols.

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

    OTP-3801 - When many nodes contacted each other at the same time, there
               could be long delays until for example names registered
               using <c>global</c> were consistent on all nodes. This has
               been improved substantially. 

    OTP-3918 - A bug that caused application start to hang on rare
               occasions has been corrected. 

    OTP-3947 - The patch for OTP-3801 had a problem: if many slave nodes
               were started at the same time, global could hang and then
               crash. 

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

    OTP-3873 - Added some (ssl related) configuration directives. See 
               documentation for further information. 
                    -SSLCACertificateFile 
                    -SSLCiphers 
                    -SSLPasswordCallbackModule 
                    -SSLPasswordCallbackFunction 
                    -SSLVerifyClient 
    OTP-3640 - Improving handling of DOS attacks. The following configuration 
               directives has been added to improve the handling of DOS
               attacks by malformed GET request: 
                    -MaxHeaderSize 
                    -MaxHeaderAction 
                    -MaxBodySize 
                    -MaxBodyAction 

  -- mnesia -----------------------------------------------------------------

    OTP-3956 - mnesia:clear_table/1 is documented.
    OTP-3957 - mnesia:force_load_table/1 didn't check if the table was 
               already loaded and could crash mnesia if table was deleted 
               during execution.  

    erts/kernel/stdlib

    OTP-3963 - Deliverance of SIGCHLD signals to the emulator could
               fail when threads where used on Solaris. This could
               result in the (Solaris) process table being filled
               with defunct processes. Child process management in
               the emulator has been modified to eliminate this
               problem. (OTP-3906)
               Hidden nodes and hidden global groups have been
               introduced. This makes it possible to establish hidden
               connections between Erlang nodes. See global_group(3),
               and erl(1). (OTP-3916)
               A close of a tcp socket could be delayed up to 5
               seconds after all pending output had been sent. Now
               the socket is closed immediately after all pending
               output has been sent. (OTP-3924) 

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

    OTP-3949 - Using "Suspend" on a solaris workstation when erlang was 
               running created a confused erlang node. Now the Erlang node
               crashes in such situations, to simplify debugging.

    OTP-3959 - Ets metadata table is more efficient and table owning 
               processes die faster. 

    OTP-3969 - If erlang:demonitor/1 was called in order to demonitor
               a process on another node, at the same time as the node went
               down, Erlang could sometimes crash. This has been fixed.

    OTP-3987 - Calls to the match_spec function '{process_dump}' when
               tracing could make the emulator crsh with a segmentation 
               fault. This faulty behaviour has been removed.

    OTP-3995 - When constructing a binary, using a number of bits other than
               a multiple of 8 from a binary could give the wrong result in
               compiled code. Example: 

          B1 = <<73>>, B2 = <<0>>, <<B1:6/binary-unit:1,B2:2/binary-unit:1>>.

    OTP-3997 - The dlmalloc malloc() implementation has been included
               in the emulator in order to reduce memory consumption
               and memory fragmentation when running Erlang on Solaris.
 
               How to get the allocator information:

                 erlang:system_info(allocator) 
                     Returns {Allocator, Version, Features, Settings}. 
                     Types: 
                           Allocator = atom() 
                           Version = [int()] 
                           Features = [atom()] 
                           Settings = [{Setting, Value}] 
                           Setting = atom() 
                           Value = term() 

               Explanation: 

               Allocator corresponds to the malloc()
               implementation used. If Allocator equals undefined,
               the malloc() implementation used couldn't be
               identified. Currently dlmalloc, elib_malloc, and
               glibc can be identified.  Version is a list of
               integers (but not a string) representing version of
               malloc() implementation used.  Features is a list
               of atoms representing allocation features
               (probably) used.  Currently mmap and fix_alloc are
               identified.  Settings is a list of setting/value
               pairs passed to the allocator. The actual
               setting/value pair used may have been modified by
               the allocator.  Settings may differ between
               different allocators. Memory sizes are given in
               bytes.

    OTP-4003 - When the emulator is run with a thread pool, there is
               now a possibility to make some of the file operations
               short circuit the async thread interface and run
               synchronously instead.
               To do this; set the environment variable
               'ERL_EFILE_THREAD_SHORT_CIRCUIT' to '1'.
               The file operations that then are made synchronous are:
               pwrite, write, position, pread, read.
               Note that this is a temporary fix that most probably
               will be removed in future versions of the emulator.

    OTP-4005   The bor operator could return incorrect answer for big integers.

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

    OTP-3920 - snmp_net_if:subtr/2 don't handle megaseconds.

    OTP-3986 - The mib compiler does not detect if an notification and an 
               ordinary mib entry (OBJECT-IDENTITY) has the same OID.

  -- asn1 -------------------------------------------------------------------

    OTP-3277 - The compiler will now check that a value referenced by 
               name does exist.

    OTP-3811 - BER:Decode of a type T ::= SEQUENCE OF C fails if C is 
               encoded with indefinite length. This is know corrected. 

    OTP-3463 - The new parser handles imports when one import ends with 
               FROM, a modulename and a reference to a objectidentifier 
               followed by imports from other modules. 

    OTP-3659 - The compiler did not check that a name mentioned as EXPORTED
               actually is defined within the module. This is now corrected.

    OTP-3994 - Removed bug caused by use of nested indefinite length.

    OTP-3979 - PER: Now supporting most common use of Information Objects 
               according to X.681. A new parser has been implemented. The error
               messages due to syntax errors are slightly different than 
               previous. TableConstraint part of X.682 now also supported.

    OTP-3981 - New compiler option added: ber_bin. The compiler generates code 
               with new bit syntax. Run time functions uses bit syntax when 
               feasible.
               Higher encoding/decoding performance in most cases. Se also 
               comments for Asn1 1.2.9.3.

    OTP-3982 - A more compact format of BIT STRING in Erlang is now available 
               by use of the compiler option compact_bit_string. It is much 
               faster when large BIT STRINGs are used.

    OTP-3983 - Now possible to merge many ASN.1 input files to one Erlang file 
               by use of a configuration file that lists the ASN.1 files. 

    OTP-3984 - New documentation in User's Guide in section:
               3.1: New compile-time functions and options are described.
               4.6: New compact format of BIT STRING is described.
               4.8: Additional comments on character strings.
               7: New section describing ASN.1 Information Objects.
               8: New section describing Parameterization.
               Reference Manual/asn1ct New compile options are described.

    OTP-3985 - Added the functionality to invoke ASN1Mod:encode (and decode).

    OTP-3988 - Performance improvements by removing not necessary use of apply 
               when calling asn1rt:encode. Also other general improvements.