Bug fix release : otp_src_R11B-3 Build date : 2007-01-30 This is bug fix release 3 for the R11B release. You can download the full source distribution from http://www.erlang.org/download/otp_src_R11B-3.tar.gz http://www.erlang.org/download/otp_src_R11B-3.readme (this file) Note: To unpack the TAR archive you need a GNU TAR compatible program. For instance, on MacOS X before 10.3 you must 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 http://www.erlang.org/download/otp_win32_R11B-3.exe On-line documentation can be found at http://www.erlang.org/doc.html. You can also download the complete HTML documentation or the Unix manual files http://www.erlang.org/download/otp_doc_html_R11B-3.tar.gz http://www.erlang.org/download/otp_doc_man_R11B-3.tar.gz We also want to thank those that sent us patches, suggestions and bug reports, The OTP Team --- documentation ------------------------------------------------------------ OTP-6334 Documentation format for EDoc and Syntax_Tools now follows the OTP standard. --- appmon-2.1.7 ------------------------------------------------------------ OTP-6308 Appmon now handles a process name containing the character '@' correctly. (Thanks to Mikael Magnusson). OTP-6333 The "Send" button in the application window was broken, it always failed (silently). --- asn1-1.4.4.12 ------------------------------------------------------------ OTP-6314 As a complement to the option "{inline,OutputFile}" it is now possible to use the option "inline". Then asn1 creates an output file with the name of the source .set file. --- compiler-4.4.2.1 ------------------------------------------------------------ OTP-6392 The compiler could generate incorrect code for bit syntax matching consisting of several clauses. --- compiler-4.4.3 ------------------------------------------------------------ OTP-5344 Directives for parse transforms that have been run are now removed from the abstract code stored when the debug_info option is given, to prevent the parse transforms to be run again. OTP-6347 Minor improvements in code generation for some guards expression involving boolean expressions. OTP-6386 The R10B compiler could generate unsafe bs_save/bs_restore instructions that could cause memory corruption. (The R11B compiler does not have that problem.) The erlang emulator will now refuse to load R10B-compiled modules that contain such unsafe bs_save/bs_restore instructions. In addition, the beam_validator module in the compiler will also reject such instructions (in case it is used to validate R10B code). (Thanks to Matthew Reilly.) --- dialyzer-1.5.1 ------------------------------------------------------------ OTP-6361 Updated the chapter "More on the Persistant Lookup Table (PLT)" in Dialyzer User's Guide and added information on how to use Dialyzer from Erlang to dialyzer(3). Also, the Dialyzer text files used by its GUI are now included in the Erlang/OTP release. --- edoc-0.7.1 ------------------------------------------------------------ OTP-6419 Fixed some broken links in the documentation. --- erl_interface-3.5.5.3 ------------------------------------------------------------ OTP-6331 Calls to alloca in erl_marshal.c have been removed. A static buffer is now used instead to store node names temporarily. OTP-6339 ei_print_term interprets a list of integers with values from 0 to 255 as a string. If the original list contains the integer 0, this is considered terminator of the string. This is incorrect. The function has now been modified to not look for '\0' in a string, but always print all characters. --- erts-5.5.2.1 ------------------------------------------------------------ OTP-6225 The run_erl program now aquires its psedo-ttys using openpty(3), so that it will work on newer Linux distributions that don't have the traditional pseudo-tty devices in the file system. On platforms that don't have openpty(3), run_erl will still search for pseudo-tty devices in the file system. The run_erl program will now wait using waitpid(3) to prevent the program it spawned to become defunct. run_erl will also terminate after a delay of 5 seconds (to allow any pending output to be written to the log file) if the spawned program terminates even if some child of it still holds stdin and/or stdout open. OTP-6338 A bug in ordered_set ETS datatyp caused ets:select (and match) to return faulty results when the table contained process id's from another node. --- erts-5.5.2.2 ------------------------------------------------------------ OTP-6344 A bug in the kernel poll implementation could cause the emulator to omit polling for events on file descriptors. The bug was only present when using the kernel poll implementation based on epoll or kqueue. This bug was introduced in erts-5.5.2. --- erts-5.5.3 ------------------------------------------------------------ OTP-6262 In the runtime system with SMP support, ports are now being scheduled on the scheduler threads interleaved with processes instead of being run in a separate I/O thread. OTP-6307 More interfaces are added in erl_ddll, to support different usage scenarios. OTP-6330 In the runtime system with SMP support, the global I/O lock has been replaced with a more fine grained port locking scheme. Port locking is either done on driver level, i.e., all ports executing the same driver share a lock, or on port level, i.e., each port has its own lock. Currently the inet driver, the efile driver, and the spawn driver use port level locking and all other statically linked in drivers use driver level locking. By default dynamically linked in drivers will use locking on driver level. For more information on how to enable port level locking see the erl_driver(3) and the driver_entry(3) man pages. As of erts version 5.5.3 the driver interface has been extended. The extended interface introduce version management, the possibility to pass capability flags to the runtime system at driver initialization, and some new driver API functions. For example, the driver_system_info() function which can be used to determine if the driver is run in a runtime system with SMP support or not. The extended interface doesn't have to be used, but dynamically linked in driver have to be recompiled. For information see the erl_driver(3) and the driver_entry(3) man pages. NOTE: Dynamically linked in drivers have to be recompiled. OTP-6369 Node and fun table entries could under rare circumstances be deallocated multiple times on the emulator with SMP support. OTP-6376 epoll_wait() can repeat entries for the same file descriptor in the result array. This could cause the ready_input, ready_output, or event callbacks of a driver to unintentionally be called multiple times. We have only noted repeated entries when an error condition has occurred on the file descriptor. In this case, the repeated entries should normally not be a problem for the driver since it should detect the error and de-select the file descriptor. Therefore this bug should be considered harmless. The emulator now coalesce repeated entries into one. You are only affected by this bug if you are using erts-5.5.2.* and the kernel-poll feature on linux. OTP-6381 If a process that was waiting in gen_tcp:accept/1 was killed, calling gen_tcp:accept/1 again on the same listen socket would fail with '{error,einval}'. OTP-6382 A test and debug feature which modifies the timing of the runtime system has been added. For more information, see documentation of the +T command line argument of erl(1). OTP-6384 The emulator failed to start on Solaris 10 when kernel-poll support was enabled and the maximum number of filedescriptors configured was less than or equal to 256. OTP-6386 The R10B compiler could generate unsafe bs_save/bs_restore instructions that could cause memory corruption. (The R11B compiler does not have that problem.) The erlang emulator will now refuse to load R10B-compiled modules that contain such unsafe bs_save/bs_restore instructions. In addition, the beam_validator module in the compiler will also reject such instructions (in case it is used to validate R10B code). (Thanks to Matthew Reilly.) OTP-6387 Process and port timers could fail to work properly on the runtime system with SMP support. Many thanks to Dmitriy Kargapolov and Serge Aleynikov who tracked down this bug. OTP-6394 The version of zlib (http://zlib.net) linked into run-time system has been updated to version 1.2.3. OTP-6395 Bit syntax code compiled by an R10B compiler that matched out a floating point number would not properly check that the floating point number was valid; if the float was, for instance, NaN the emulator could crash. OTP-6398 The erlc program now passes on the -smp and -hybrid options to the Erlang emulator it starts. This is mainly useful for compiling native code, because native code must be compiled with same type of run-time system as in which it will be run. If the -s option is given, erlc now prints a warning that it is deprecated and that it will be removed in R12B. OTP-6403 The schedulers option of erlang:system_flag/2 has been removed, i.e., the number of scheduler threads cannot be changed after emulator boot time any more. A multi_scheduling option has been added to erlang:system_flag/2. This option can be used for blocking and unblocking multi-scheduling. For more information see the erlang(3) documentation. OTP-6407 statistics(runtime) on Windows used to return the elapsed system time for the process, instead of the user time. Corrected. (Thanks to Robert Virding.) OTP-6410 A loadable driver (loaded by erl_ddll) which used driver_async() would cause the emulator to crash. (Thanks to Dmitriy Kargapolov.) OTP-6411 Under rare circumstances the emulator on unix platforms could fail to terminate the Erlang port corresponding to a port program opened with the exit_status option. OTP-6412 A port program that had been started with the exit_status option and closed one of the pipes used for communication with the emulator caused the emulator to continuously poll for termination of the port program. This only became a problem when the emulator didn't have other things to do and the port program closed a pipe much earlier than it terminated. When the emulator had other things to do, such as running Erlang processes, the emulator polled for termination in between scheduling of processes. Now the emulator doesn't poll for termination of the port program at all; instead, it waits for the child signal from the terminated port program to arrive and then schedules the Erlang port for termination. The termination of any port programs have also been optimized. Previously the termination of any port program did always cause a scan of a table of the size equal to maximum number of file descriptors. If the maximum number of file descriptors was large, this scan could be quite expensive. Now the search have been reduced to the set of ports started with the exit_status option. Note, all of the above only applies to Erlang emulators on Unix platforms. OTP-6416 gen_tcp now allows for several processes to issue accept calls to the same listen-socket simultaniously. The different accepting processes will get connected sockets on a first-come-first-served basis. OTP-6424 * BEAM: added support for floating-point exceptions on FreeBSD (32-bit x86) * SMP: made locking procedures work even when native lock operations aren't implemented * SMP: improved timing accuracy in the timer thread (if enabled) OTP-6425 A link removed via unlink/1 could under rare circumstances transfer exit signals for a short period of time after the call to unlink/1 had returned when the runtime system with SMP support was used. --- hipe-3.6.1 ------------------------------------------------------------ OTP-6423 HiPE runtime system: * added notes about supported systems to README * support 32-bit x86 on FreeBSD * autoenable HiPE on FreeBSD (32-bit x86) and Solaris (64-bit x86) * updated x86 runtime system to support glibc-2.5 * work around probable gcc-4.1.1 bug affecting the x86 runtime system HiPE compiler: * improved performance of integer multiplications on all platforms * corrected a code optimisation error in R11B-2 that broke some bsl/bsr operations on all platforms * corrected a type error in the ARM backend which could cause the compiler to crash * corrected an error in the SPARC backend's naive register allocator which could throw the compiler into an infinite loop --- inets-4.7.7 ------------------------------------------------------------ OTP-6310 [httpd] - The http server could throw away piplined requests leaving the client hanging. OTP-6312 [ftp] - Code for handling fallback to ipv4 was not exhaustive. OTP-6323 [httpd] - Incorrect handling of ipv6 address would crash the loading of the BindAddress parameter, which had the consequence that you could not start more than one HTTP server on an erlang node. OTP-6326 [httpc] - Added debug feature to turn on/off some basic erlang tracing on client processes. OTP-6332 [httpc] - Some 30X codes, as for instance 302, should not always be automaticly redirected but in inets-4.7.6 some restrictions where made too hard, never allowing an automatic redirection. (Automatic redirect should be allowed for get and head.) OTP-6342 [ftp] - The mode flag that could be used to force ftp active mode was ignored. Only the deprecated function force_active/1 works for prior releases to this one. --- inets-4.7.8 ------------------------------------------------------------ OTP-6397 [httpd] - Guard added to API function httpd_util:integer_to_hexlist/1. OTP-6409 [ftp, httpc] - Updated the internal ensure_started functions to handle that inets was started as an included application. OTP-6413 [tftp] - Introduced ability to use prebound ports (see the option {port, Port} for more info). Added peer info (host and port) as new optional argument to prepare and open functions in tftp callback modules. --- kernel-2.11.3 ------------------------------------------------------------ OTP-6307 More interfaces are added in erl_ddll, to support different usage scenarios. OTP-6341 Locks set by calling global:set_lock() were not always deleted when the locking process died. This bug has been fixed. OTP-6368 On Unix, the unix:cmd/1 function could leave an 'EXIT' message in the message queue for the calling process That problem was more likely to happen in an SMP emulator. OTP-6416 gen_tcp now allows for several processes to issue accept calls to the same listen-socket simultaniously. The different accepting processes will get connected sockets on a first-come-first-served basis. --- megaco-3.5.1 ------------------------------------------------------------ OTP-6275 MG receiving a request, when the reply to the service-change has not yet been received (505) (either because it's been lost or because the MGC is erroneous). This will now result in a call to handle_trans_reply with the UserReply: {error, timeout}. OTP-6276 When replies arrive during a call to megaco:cancel there is a raise condition possibillity. This has been eliminated. --- observer-0.9.7.2 ------------------------------------------------------------ OTP-6265 Several minor bugs and race conditions eliminated in the runtime_tools and observer applications. --- odbc-2.0.7 ------------------------------------------------------------ OTP-5504 When using a parameterized query on a windows platform the data was inserted in the table on the sql-server but the connection was lost, this seems to be due to a compiler error that has now been worked around, but further investigation is ongoing to verify that that really was the problem. OTP-6363 param_query/[3,4] could return an unexpected row count for some drivers, in this case a postgresdriver. --- orber-3.6.4 ------------------------------------------------------------ OTP-6165 Orber can now be configured so that different NAT parameters can be specified for different interfaces. OTP-6370 It is now possible to set the keepalive option for incoming and outgoing IIOP connections. For more information, see the Configuration chapter in the User's Guide. OTP-6371 The new function orber:close_connection/1/2 allows a client to close connections to an object residing on a remote ORB. OTP-6372 Orber now use the SSL two-phase accept strategy to avoid that new incoming connections via SSL are not blocked by a previous connect attempt that never initiated the SSL handshake. Note, the configuration parameter iiop_ssl_accept_timeout should be set (default infinity). For more information, see the Configuration chapter in the User's Guide. If Orber is started in secure mode, the installed SSL version must support ssl:ssl_accept/1/2 and ssl:transport_accept/1/2. --- os_mon-2.1.2 ------------------------------------------------------------ OTP-6351 When the memsup_system_only flag was set to true, a badmatch exception occurred in the function os_mon_mib:get_load/1. --- parsetools-1.4.1 ------------------------------------------------------------ OTP-6362 A bug concerning precedence declarations of non-terminals "one level up" has been fixed in yecc. --- runtime_tools-1.6.2 ------------------------------------------------------------ OTP-6265 Several minor bugs and race conditions eliminated in the runtime_tools and observer applications. --- snmp-4.8.3 ------------------------------------------------------------ OTP-6337 [agent] Verification of ViewTreeFamily (SNMP-VIEW-BASED-ACM-MIB) incorrect. No values other then null and [] where accepted. OTP-6340 [agent] Start with type takeover did not work. --- snmp-4.8.4 ------------------------------------------------------------ OTP-6408 [agent] An Audit Trail Log entry was sometimes done using a list instead of the expected binary for the snmp packet. This caused an error when converting the log to a textfile. --- ssh-0.9.6 ------------------------------------------------------------ OTP-6348 Removed debug printout from production code. OTP-6349 [sftpd] - When the sftp client ends the session the server will now behave correctly and not leave the client hanging. OTP-6350 [sftpd] - No longer used files were not closed until the session was ended. OTP-6352 [sftpd] - File rename requests sent by sftp version 3 clients were not handled. OTP-6353 [sftpd] - Request that did not fit into one ssh message were not handled. OTP-6356 [sftpd] - Added new option to specify a callback module for the sftpd-server file handling. The default callback module uses file and filelib. OTP-6414 Removed error logging of auth method none, as this is not an error but rather a feature, that is used to get initial information from the server. --- ssl-3.1 ------------------------------------------------------------ OTP-6418 SSL now uses a two-phase accept, with a separate accept calls for the socket and the ssl protocol. This avoids timeouts when the client doesn't initiate ssl handshake. --- stdlib-1.14.2.1 ------------------------------------------------------------ OTP-6321 A bug in erl_pp:exprs() has been fixed. --- stdlib-1.14.2.2 ------------------------------------------------------------ OTP-6359 The functions dets:select/1,3, dets:match/1,3, and dets:match_object/1,3 have been changed as to never return {[],Continuation}. This change affects the corresponding functions in Mnesia. Bugs have been fixed in QLC: qlc:info() could crash if the tmpdir option did not designate a valid directory; the results of looking up keys are kept in RAM, which should improve performance. --- stdlib-1.14.3 ------------------------------------------------------------ OTP-6345 The spawn_opt/2,3,4,5 option monitor -- introduced in Kernel 2.11.2 -- is currently not possible to use when starting a process using proc_lib, that is, also when starting a gen_server, gen_fsm etc. This limitation has now been properly documented and the behavior of the gen_fsm, gen_server, and proc_lib start and start_link functions when providing this option has been changed from hanging indefinitely to failing with reason badarg. (Thanks to Fredrik Linder) OTP-6354 The control sequence P of the Format argument of the functions io:fwrite/2,3 and io_lib:fwrite/2 now replaces the tail of binary strings with ... when the maximum depth has been reached. For instance, io:fwrite("~P", [<<"a binary string">>, 3]). prints <<"a binary"...>>. The indentation takes more care not to exceed the right margin, if possible. If the maximum depth is reached while printing a tuple, ,... is printed instead of |... (this change applies to the control sequence W as well). OTP-6390 The Erlang shell command h/0 that prints the history list now avoids printing (huge) terms referred to by v/1 but instead just prints the call to v/1. --- syntax_tools-1.5.2 ------------------------------------------------------------ OTP-6420 Fixed some broken links in the documentation. --- tools-2.5.3 ------------------------------------------------------------ OTP-6373 eprof did not work reliably in the SMP emulator, because the trace receiver process could not process the trace messages fast enough. Therefore, eprof now blocks the other schedulers while profiling. --- xmerl-1.1 ------------------------------------------------------------ OTP-6043 Xmerl failed to parse and export with the sax_file frontend. Therefore hook function calls were added in the parser and handling of text content were changed. OTP-6099 Bug in xmerl removed so that simple syntax element content is exported correctly. OTP-6401 xmerl now supports XMLSchema validation. Documentation in reference manual for xmerl. The release of XMLSchema validation shoul be considered as a beta release. The user interface may still be adjusted in a coming release. Opinions and evaluations are welcome.