Bug fix release : otp_src_R7B-4 From snapshot : 20010930 This is a bug fix release R7B-4. You can download the full source distribution or the patch that take R7B-3 up to R7B-4. http://www.erlang.org/download/otp_src_R7B-4.tar.gz http://www.erlang.org/download/otp_src_R7B-3to4.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-4.readme To patch the previos release "otp_src_R7B-3" 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-3to4.patch.gz | patch -p1 There is no support for building a Windows version from source. For installation instructions please read the README that is part of the distribution, The OTP Team Release notes -- mnesia ----------------------------------------------------------------- OTP-3712 - Speed/load improvements disc_copies tables are not implemented with dets anymore. OTP-XXXX - Removed references to dead nodes in loader queue, which could lead to system wide hangings, if a node goes down and another node has a reference to it in it's queue. OTP-4097 - Mnesia (3.10.0) could crash during restart if it the logs contained an update_counter operation. OTP-4102 - Mnesia didn't remove buffered messages from dead nodes, which could lead to that mnesia hanged if a mnesia went down on another node during early startup. OTP-4127 - The user supplied fallback_error_function now get's the dying Node name as an argument. -- mnesia_session --------------------------------------------------------- Fixed error in table_info when accessing mnesia version 3.9.4 or later. -- asn1 ------------------------------------------------------------------- OTP-4025 - Do not generate record in .hrl file for SET types OTP-4026 - Fixed internal error when using BIT STRINGs with Named Number List in combination with compact_bit_string and ber_bin options. OTP-4037 - The atom 'com' can now be used in ENUMERATED as an EnumerationItem. OTP-4057 - ber: Now it is possible to encode data from format "{Type,Value}" in a SEQUENCE OF RequestParameter, when RequestParameter is of type ENUMERATED. OTP-4058 - Now is the bug in the new parser removed, that caused failure on COMPONENTS OF. -- erts/kernel/runtime_tools ---------------------------------------------- OTP-4018 - disk_log caches written terms. This implies that the close, lclose and sync functions can return file errors. pid2name/1 is a new debug function that given a disk log process (a pid) returns the name of the log. OTP-4015 - In configurations where hostname resolving was done by the inet_gethost_native module, a race condition could make processes calling inet:gethostbyname crash with an exitcode 'unexpected_supervisor_response'. That race condition is now removed. OTP-3933 - A trace client fun that can be given to dbg:trace_client/3 now gets informed about the end of trace, so it can do something useful with its collected data. See dbg:trace_client/3. OTP-3934 - The flag 'procs' to erlang:trace/3 has got a slightly new behaviour: Trace tag 'spawn' has a new element, and trace tags 'register', 'unregister', and 'getting_unlinked' are new. Therefore, new and/or different trace messages will arrive to the tracer when the 'procs' trace flag is used. OTP-3938 - When using trace flags 'running' and 'timestamp' to determine the amount of running time different processes in the system were using, the results were somewhat unreliable since the time to write the trace buffer itself randomly burdened the traced processes. This is now compensated for by faking process schedule out and in trace messages around the file writes (for the trace file driver trace_file_drv). OTP-3935 - Wrap file traces now can limit the size of each file with a time instead of a size. See the documentation for dbg:trace_port/2. OTP-3965 - The file names for wrap file traces has been changed. This has been done to make it easier for auxiliary tools to know the file names when fetching wrap traces over the network, especially if the tools used for fetching does not support wildcards in filenames. See the documentation for dbg:trace_port/2. NOTE that this change may affect existing fetch tools. Especially note that the number of files in the wrap trace must now be known when reading the trace, or as it is stated in the documentation: the same wrap trace specification must be used when reading the trace as when creating the trace. OTP-4047 - When gen_tcp:controlling_process/2 was called with a closed socket as argument, it crashed internally with a badmatch. This has now been corrected. The error return code from gen_tcp:send/2 has been changed in some cases to harmonize with the error return codes from other functions in the module. This is a slight incompatibility. OTP-3929 - When demonitor/1 was used on a monitor for a process on another node (for example, using gen_server calls), not all associated allocated memory was freed, causing a memory leak of some 20 bytes each time. This has been fixed. OTP-4019 - The --enable-threads flag was previously ignored by the configure script. This has now been corrected, and it is now possible to enable threads by passing the --enable-threads flag to the configure script when building the open source release. OTP-4071 - When the system limit on maximal number of nodes known to a node had been reached (the distribution table had been filled), pids, ports, and references belonging to previously connected nodes could change node belonging. This bug has now been fixed. OTP-4075 - dlmalloc was introduced in the Erlang emulator version 5.0.2.3 because it performed better than Solaris malloc when the emulator needed to allocate large short-lived memory blocks. It was later observed that it performed worse than Solaris malloc under some conditions. We have therefore now removed dlmalloc and replaced it with our own special treatment of short-lived memory blocks (called sl_alloc) and the standard malloc implementation for other blocks. The current version of sl_alloc uses the system call mmap() (on platforms where mmap() exists) in order to allocate large blocks (just as dlmalloc) and uses the standard malloc implementation for small blocks. Maximum number of mmapped blocks and the threshold which is used to determine if a block should be mmapped can be adjusted, see "System Flags" in erl(1). sl_alloc can be disabled. The standard malloc implementation will in this case be used instead, see "System Flags" in erl(1). OTP-4095 - A memory leak in the efile driver has been fixed. For every file that was closed, 12 bytes were lost. OTP-4109 - A bug in the heap fragment allocation could cause an emulator crash. This bug has now been fixed. OTP-4112 - Emulator could crash due to exiting process monitoring process on a node that concurrently goes down. This has now been corrected. OTP-4116 - Miscalculation in gc could cause emulator crash. This has now been fixed. OTP-4089 - A creepy bug involving trace has been corrected: when trace process specification 'all' or 'new' was given to erlang:trace/3, a default trace flags and tracer for new processes was stored in the emulator. If then, this tracer was killed, all existing processes that tried to send trace messages to the killed tracer noted that their tracer was dead, and cleared their trace flags, so, eventually, the tracing in the emulator faded off, except for all new processes that also cleared their trace flags only after trying to send one trace message to the dead tracer. So far so well. Not neat, but well. Unfortunately, much later, the pid of the dead tracer was reused for a new innocent process that unexpectedly got all trace messages from all new processes. This typically caused that process to crash. Now, when the process that is default tracer dies, the emulator default trace flags and tracer are cleared immediately. The faked time compensating trace message {trace_ts, Pid, out, MFA} has been changed to {trace_ts, Pid, out, 0} because the MFA was almost always wrong, and very hard to make correct. The same applies for {trace_ts, Pid, in, 0} as well, but of course, the real 'out' and 'in' messages contains MFA as before. This may be regarded as an incompability, but note that MFA=0 could appear before in rare cases, though it was not documented. A trace flag 'all' has been added to the repertoire of erlang:trace/3. When turning off trace flags with erlang:trace/3, it is no longer necessary to state the correct current tracer of the traced process(es). Please see the documentation for erlang:trace/3. OTP-4120 - An mmap leak in sl_alloc has been fixed. OTP-4115 - A memory leak of 36 bytes per thread created, and a potential memory leak of 8 bytes per thread created have been fixed. -- os_mon ----------------------------------------------------------------- OTP-4000 - Gen_server calls to the memsup server of the os_mon application could fail due to slow responses from the memsup port program. The memory polling is now handled by a separate process making answers from memsup more or less instant. The disksup server of the os_mon application is modified so that it does not use os:cmd() on Unix systems. -- orber ------------------------------------------------------------------ Orber now support interceptors. -- cosEvent -------------------------------------------------------------- cosEvent-2.0 This version is a completely new version of the cosEvent application; older versions was not compliant with the OMG specification. The look and feel have been changed to be more uniform with the other COS-services. Incompatibilities ----------------- All API:s not compliant with the OMG standard have been removed. Registering the cosEvent application in the IFR is done via the cosEventApp module. Upgrade in runtime is not possible. -- cosNotification ------------------------------------------------------- OTP-4078 - It is now possible to start global channel factories. OTP-4077 - The Orber, version 3.2.5 or later, configuration parameter orber_debug_level can now be used to generate reports when abnormal situations occurs. For more information consult the Orber User's Guide. Note, it is not recommended to use this option for delivered systems since some of the reports is not to be considered as errors. The value of orber_debug_level must be 3, or higher, for reports to be generated. OTP-4079 - When using the cosEvent API accessing a cosNotification admins the objects returned by the functions obtain_push_supplier, obtain_pull_supplier, obtain_push_consumer and obtain_pull_consumer was not of the correct type. Due to the interface change it is not possible to upgrade during runtime. -- cosNotification/cosTime ----------------------------------------------- OTP-4086 - If one used the '_get_default_supplier_admin'/1, exported by the CosNotifyChannelAdmin_EventChannel-module, it resulted in a loop which overloaded the channel. This is no longer the case. OTP-4092 - If one used the '_get_default_filter_factory'/1, exported by the CosNotifyChannelAdmin_EventChannel-module, a new instance was created each time. Now fixed. OTP-4098 - SupplierAdmin's did not filter any events, even though Filter objects had been attached to the SupplierAdmin. OTP-4099 - When passing event sequences, the PushSuppliers and PullSuppliers could crash if the objects had Filter objects associated and only a subset of the sequences where approved. OTP-4093 - The include paths for CosNotification.idl have been changed. Hence, if you include this file in your own IDL-files you must update your paths to also point to where the cosEvent IDL-files are stored. An includepath in CosTimerEvent.idl have been changed. Hence, if you include this file you should check your include paths for your IDL-file(s), i.e., add the path to CosEventComm.idl. -- tools ----------------------------------------------------------------- OTP-4010 - A preliminary version of the new fprof tool has been added to application tools. -- ic -------------------------------------------------------------------- OTP-4107 - Added the erlang binary special type in C backends. The erlang binary special type allows efficient transfer of binaries between erlang and C. At the C side, the erlang binary type is represented the same way as idl-c sequences. At the erlang side, the build in binary type is used. To erlang binary type is defined inside the erlang.idl file. -- sasl ------------------------------------------------------------------ OTP-3998 - systools:make_relup/3,4 now generates upgrade instructions for the applications in start order, instead of in reversed start order. OTP-4121 - systools:make_script/1,2 now keeps the order of the release resource file (.rel) also for included applications.