Age | Commit message (Collapse) | Author |
|
* rn/resolver-leaking-ports:
Resolver: make inet_dns decode ugly truncated reply
Resolver: stop inet_res leaking ports
OTP-8652 inet_res leaking ports
The kernel DNS resolver was leaking one or two ports if the DNS reply could
not be parsed or if the resolver(s) caused noconnection type errors. Bug
now fixed. A DNS specification borderline truncated reply triggering the
port leakage bug has also been fixed.
|
|
* dgud/emacs-catch-improvements:
Improved indentation of old catch.
Added more type highlighting and fixed record indentation with types.
|
|
* kj/emacs-erlang-flymake:
erlang-flymake: Document in README
erlang-flymake: Make the syntax check command configurable
erlang-flymake: By default pass <app>/include and <app>/ebin to compiler
erlang-flymake: Include in Makefile
erlang-flymake: Syntax check erlang code on the fly (using flymake)
|
|
Under certain circumstances the net kernel could hang. (Thanks to Scott
Lystig Fritchie.)
|
|
Added cross configuration file for mips-linux. (Thanks to Matthias Lang for
the configuration)
|
|
ethr_rwmutex_tryrlock() acquired and refused to acquire a lock with
inverted logic. The lock was however never acquired in a thread unsafe
manner. (Thanks to JR Zhang for noting this issue)
|
|
Writer preferred pthread read/write locks has been enabled on Linux.
|
|
The number of spinlocks used when implementing atomic fall-backs when no
native atomic implementation is available has been increased from 16 to
1024.
|
|
Port locks could be prematurely destroyed.
|
|
Support for using gcc's built-in functions for atomic memory access has
been added. This functionallity will be used if available and no other
native atomic implementation in ERTS is available.
|
|
Missing memory barriers in erts_poll() could cause the runtime system to
hang indefinitely.
|
|
* bg/remove-stray-sae-support:
Remove unsupported erlang:blocking_read_file/1
Remove stray SAE support
|
|
* bg/dist_utils:
dist_utils: Eliminate crash when list_to_existing_atom/1 fails
|
|
An example that didn't work previously.
case Foo of
{ok, X} ->
ok;
_ ->
catch file:close(FD)
end.
|
|
Type highlighting reported by Jay Nelson
non_neg_integer() will highlight purple but pos_integer() does not.
Closing record indentation problem reported by Maxim Treskin:
-record(state, {
sequence_number = 1 :: integer()
}).
|
|
|
|
|
|
Hopefully this covers at least some of the common cases and makes the
flymake support more usable as is. The purpose of including the ebin
directory is to support things like behaviours and parse transforms.
|
|
|
|
|
|
Bugfix: a DNS reply with the truncation bit set containing
misleading section length (i.e header claimed length greater
than what was actually in the reply section) in the header
caused decode error in inet_dns.
|
|
Bugfix: when all nameservers return a reply causing decode errors
or when errors enetunreach or econnrefused occured while
contacting them, one or two UDP ports was leaked i.e
left open and forgotten.
|
|
This BIF was only used by the now broken SAE support.
|
|
The experimental Standalone Erlang (SAE) support based on
Joe Armstrong's work has long been broken. Remove the remaining
code and Makefile rules.
|
|
In the following scenario list_to_existing_atom/1 may crash
during handshake:
Start a node in one window:
erl -sname adam@localhost
Start another node in another window:
erl -sname bertil
In this node, ping the first node (use the actual hostname
in the command):
net:ping(adam@hostname).
There will be an error report similar to:
=ERROR REPORT==== 27-May-2010::15:03:14 ===
Error in process <0.40.0> on node 'bertil@hostname' with exit value: {badarg,[{erlang,list_to_existing_atom,
["adam@localhost"]},{dist_util,recv_challenge,1},{dist_util,handshake_we_started,1}]}
Eliminate the crash and the error report by catching the call to
list_to_existing_atom/1 and do a clean shutdown if it fails.
|
|
|
|
|
|
The Erlang scanner has been augmented with two new tokens: .. and ....
|
|
When exchanging groups between nodes pg2 did not remove duplicated members.
This bug was introduced in R13B03 (kernel-2.13.4).
|
|
* sv/format_status-name-handling:
handle {global, term()} names in format_status/2
OTP-8656 sv/format_status-name-handling
Calling sys:get_status() for processes that have globally registered names
that were not atoms would cause a crash. Corrected. (Thanks to Steve
Vinoski.)
|
|
* ks/cleanup-leex:
leex: Clean up as suggested by tidier
OTP-8655 ks/cleanup-leex
|
|
* sv/socket-error-portability:
inet_drv.c: Remove red herring
use macro to portably test for socket system call errors
OTP-8654 sv/socket-error-portability
On some combination of Montavista Linux on Cavium Octeon processors, some
socket-related system calls returned other numbers than -1 for errors. This
caused a core dump in inet_drv.c. Now the code works around this problem.
|
|
|
|
|
|
When given the option {builtins,true} Xref now adds calls to operators.
|
|
wrong shell!
|
|
|
|
|
|
|
|
|
|
OTP-8610: Problem processing netscape cookies - date
OTP-8624: Documented debug options not handled
|
|
The gen_fsm, gen_server, and wx_object format_status implementations
fail to handle global names of the form {global, term()} where term()
is something other than an atom, pid, or list. Change these
format_status implementations to treat names that are atoms, pids, or
lists as before, but for all other terms, set the header property of
the function return value to a tuple whose first element is a string
describing the return value and whose second element is the name term.
Add unit tests for gen_server and gen_fsm to verify sys:get_status
calls work successfully for globally registered instances.
|
|
OTP-8610: Problem processing netscape cookies - date
OTP-8624: Documented debug options not handled
|
|
OTP-8610: Some netscape cookie dates are given with a 2-digit year.
|
|
* se/spawn_drv_win_deadlock:
Fix deadlock in spawn driver on windows
OTP-8641 se/spawn_drv_win_deadlock
Windows: Closing port of program that stalled without reading all data
could deadlock scheduler thread.
|
|
* ta/extend-nif-api:
erl_nif: add make_atom_len, make_existing_atom_len and make_string_len
erl_nif: add enif_get_atom_length and enif_get_list_length
erl_nif: add enif_is_list and enif_is_tuple
OTP-8640 ta/extend-nif-api
New NIF API functions: enif_make_atom_len, enif_make_existing_atom_len,
enif_make_string_len, enif_get_atom_length, enif_get_list_length,
enif_is_list, enif_is_tuple (by Tuncer Ayaz)
|
|
|
|
Remove redundant "!defined(__WIN32__)". It is used inside
the #else branch of a "#ifdef __WIN32__", so it serves no
useful purpose except to fool unsuspecting readers.
|
|
On some combinations of Montavista Linux running on Cavium Octeon
chips, some socket-related system calls erroneously return negative
numbers other than -1 to indicate errors, but inet_drv.c specifically
compares against -1 to test for errors. The result is that beam dumps
core due to the code treating these negative numbers as success
indicators, as counts/offsets of bytes written, etc. thereby
corrupting its own internal data structures.
To fix this, introduce a portability macro to test the result of
socket system calls. The test remains unchanged on Windows but for
other platforms the macro considers all return values that are less
than zero to be errors.
Though POSIX specifies that errors from these system calls are
indicated by a return value of -1, treating all negative return values
as errors is also safe, as described in detail below. In networking
programming, treating all negative return values from system calls as
errors is very common practice -- see the examples in W. Richard
Stevens's popular and highly lauded network programming books, for
example.
For system calls that return 0 to indicate success, treating all
negative numbers as errors is safe because only 0 is specified to
indicate success. These include:
getsockname
getpeername
getsockopt
gethostname
bind
listen
connect
close
shutdown
Likewise, for system calls that return non-negative numbers to
indicate success, treating all negative numbers as errors is also
safe. These functions typically return signed integers of type
ssize_t, and they treat any parameters of type size_t that cannot fit
within the ssize_t return value, such as numbers of bytes to read or
write, as errors (specifically EINVAL). For example, in the "ERRORS"
section of the man page for writev from several varieties of Linux, it
states that EINVAL is returned when the total length of the I/O is
more than can be expressed by the ssize_t return value.
These calls include:
recv
recvfrom
recvmsg
writev
send
sendto
sendmsg
Finaly, the socket() system call is also similar to these in that it
returns a signed type (int) with all non-negative return values
indicating success, so treating all negative return values as errors
is safe.
|
|
it before sending the fatal alert, even though documentation suggests
the socket will be flushed on linux as an effect of setting the nodelay option.
|