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 /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 global 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>>, <>. 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.