Age | Commit message (Collapse) | Author |
|
|
|
* sverker/hipe-beam-stacktrace/ERL-205:
erts: Exclude random beam functions from hipe stacktrace
|
|
This makes proc_lib behaves like a normal process as far
as the propagation of exceptions is concerned.
Before this commit, the following difference could be
observed:
6> spawn_link(fun() -> ssl:send(a,b) end).
<0.43.0>
7> flush().
Shell got {'EXIT',<0.43.0>,
{function_clause,
[{ssl,send,[a,b],[{file,"..."},{line,275}]}]}}
ok
8> proc_lib:spawn_link(fun() -> ssl:send(a,b) end).
<0.46.0>
9> flush().
Shell got {'EXIT',<0.46.0>,function_clause}
After this commit, we get the following instead:
3> flush().
Shell got {'EXIT',<0.61.0>,
{function_clause,
[{ssl,send,[a,b],[{file,"..."},{line,275}]},
{proc_lib,init_p,3,[{file,"..."},{line,232}]}]}}
The stacktrace will show minor differences of course
but the form is now the same as without proc_lib.
The rationale behind this commit is that:
* We now have a single form regardless of how the process
was started
* We can use the stacktrace to programmatically alter behavior
(for example an HTTP server identifying problems in input
decoding to send back a generic 400, or a 500 otherwise)
* We can access the stacktrace to print it somewhere (for
example an HTTP server could send it back to the client
when a debug mode is enabled)
|
|
|
|
|
|
|
|
into maint
* legoscia/kernel/clarify-permission-bits/PR-1204/OTP-13991:
Clarify permission bits in file.xml
|
|
|
|
* t-richards/erts/fix-typos-erl_driver/PR-1221/OTP-13990:
Fix typos in erl_driver.xml
|
|
|
|
* egil/mnesia/dont-tty-log-nodes:
mnesia: Don't show error_logger messages in tests
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
To separate concerns and reduce confusion, avoid implementing two
behaviours in a single module. Make a single start_link() helper in
mnesia_sup and remove the unused mnesia_sup:start() utility function.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Prevents timeout before the processing is done on slow machines
|
|
* bjorn/compiler/misc:
sys_core_fold: Use less effort optimizing not in lets
sys_core_fold: Eliminate complaint from core_lint
|
|
There are two calls opt_not_in_let(). Since 05130e4855
introduced iteration to a fixpoint, only the first call
is needed. Removing the redundant call will slightly speed
up compilation.
|
|
|
|
* maint:
Don't copy funs into guards
|
|
* bjorn/compiler/minor-fixes:
Don't copy funs into guards
|
|
|
|
For gen_tcp, gen_udp and gen_sctp controlling_process/2 can return
badarg if erlang:port_connect/2 fails with badarg. This can easily
happen if the new owner is not alive but in some race condition also
when the socket is closed right before port_connect/2 (and after the
previous socket function)
This commit documents this behaviour.
|
|
Correct "...an exra distribution..." to "...an extra distribution...".
|
|
ssh_to_openssh_SUITE:erlang_server_openssh_client_renegotiate/1
|
|
|
|
|
|
The testcases shell_unicode_string and shell_no_unicode in ssh_basic_SUITE could
raise an exception in the end_per_suite when stopping the dameon. This is due to
a natural race condition between the server and the client.
|
|
|
|
in ssh_to_openssh_SUITE:erlang_server_openssh_client_renegotiate/1
The reason is that it seems that on some small machines
we get an out-of-memory exception if the limit is to high.
This is probably because a chunk of data larger than the limit
is piped from a file into the OpenSSH runing in a shell in a port.
|
|
|
|
|
|
Funs must not be created in guards. The instruction for creating
a fun clobbers all X registers, which is a bad thing to do in
a guard.
|
|
|
|
|
|
|
|
|
|
Avoid suspending fun caller not just if purge is already done
but also if purge of another module has started. Another purge
of the same module again cannot happen as making current to old
transition includes thread progress.
|
|
* maint:
Don't let inline_list_funcs degrade optimizations
|