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 http://www.erlang.org/download/otp_src_R10B-3.tar.gz http://www.erlang.org/download/otp_src_R10B-3.readme (this file) 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 http://www.erlang.org/download/otp_win32_R10B-3.exe The documentation at http://www.erlang.org will be updated. You can also download the complete HTML documentation or the Unix manual files http://www.erlang.org/download/otp_doc_html_R10B-3.tar.gz http://www.erlang.org/download/otp_doc_man_R10B-3.tar.gz 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 reports, 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 enabled. 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 protocol. The listen port of epmd has now been registered at IANA: http://www.iana.org/assignments/port-numbers 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 operations. 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 gcc-4.0.0. --- 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 attribute. 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(<>) -> 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(<>)'. 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 unknown_catch_try_state. 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. <>). OTP-5371 Binary pattern mattern such as 't(<> = <)' 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 prolonged. 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 restarted. 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 contextProperty. 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. Incompatibilities: OTP-5220 The config property orig_pending_limit has been renamed to sent_pending_limit. --- 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 snmp:is_consistent/1). 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.