Age | Commit message (Collapse) | Author |
|
* anders/diameter/reopen/OTP-10692:
Fix testcases in event suite
Fix faulty watchdog transition INITIAL -> DOWN
Fix faulty watchdog transition DOWN -> INITIAL
Comment fixes
Rename records peer/conn -> watchdog/peer in diameter_service
Add testcases to traffic suite
Simplify watchdog transitions in service process
Simplify transport shutdown
Remove upgrade code not needed after application restart
Tweak (make) silent rules support
|
|
* vd/jinterface_windows_cookie/OTP-10821:
jinterface: fix finding cookie file on windows
|
|
* fredrik/jinterface/versions-R16B:
Bumped version number
|
|
|
|
* vd/tuple_constructor_bug/OTP-10819:
fix bug in OtpErlangTuple constructor
|
|
* hb/stdlib/unicode_corrections/OTP-10820:
[stdlib] Fix a bug concerning pretty printing and Unicode
Make Unicode corrections
|
|
Binaries were pretty printed too often.
|
|
|
|
|
|
* bjorn/remove-tuple-funs/OTP-10170:
erl_eval: Don't allow evaluation of {M,F} in the shell
|
|
* bjorn/compiler/beam_utils-crash/OTP-10825:
Fix unsafe optimization of funs
|
|
* vd/code_get_mode/OTP-10823:
Added name prefix to code.xml
Add a new function code:get_mode() can be used to detect how the code servers behaves
|
|
|
|
* hb/stdlib/erl_scan_unicode/OTP-10756:
[stdlib] Remove the undocumented 'unicode' option from the scanner
|
|
Tuples funs were removed in de7e01c958ff7c9e6da4034a53567a30a4ae5792,
but it was still possible to evaluate tuple funs in the shell.
|
|
|
|
* bjorn/compiler/crash/OTP-10794:
BEAM loader: Handle element(Pos, not_a_tuple)
|
|
Commits 53bd4974a101 and 726f6e4c7afe simplified the handling of
match_fail (used to generated exceptions such as 'function_clause')
by first rewriting them to a call to erlang/error{1,2} and later
rewriting them to specialized BEAM instructions (to reduce the
code size).
There was one flaw, though, which only was exposed when more
aggressive optimizations were added in c3b60f86c622. Here is an
example to explain it:
t(V) ->
fun(get) -> V end.
The following BEAM code will be initially generated for the fun:
{function, '-t/1-fun-0-', 2, 5}.
{label,1}.
{line,[{location,"t.erl",5}]}.
{func_info,{atom,t},{atom,'-t/1-fun-0-'},2}.
{label,2}.
{test,is_eq_exact,{f,2},[{x,0},{atom,get}]}.
{move,{x,1},{x,0}}.
return.
{label,2}.
{test_heap,2,1}.
{put_list,{x,0},nil,{x,1}}.
{move,{atom,function_clause},{x,0}}.
{line,[{location,"t.erl",5}]}.
{call_ext_only,2,{extfunc,erlang,error,2}}.
Translating back to Erlang code, that would be roughly:
'-t/1-fun-0-'(get, V) -> V;
'-t/1-fun-0-'(Arg1, _) -> erlang:error(function_clause, [Arg1]).
Note that the second argument (the free variable V) is not included
in the call to erlang:error/2.
The beam_except pass will simplify the code to:
{function, '-t/1-fun-0-', 2, 8}.
{label,1}.
{line,[{location,"t.erl",5}]}.
{func_info,{atom,t},{atom,'-t/1-fun-0-'},2}.
{label,2}.
{test,is_eq_exact,{f,1},[{x,0},{atom,get}]}.
{move,{x,1},{x,0}}.
return.
The code has been shortened by jumping to the func_info/3 instruction.
Translating back to Erlang:
'-t/1-fun-0-'(get, V) -> V;
'-t/1-fun-0-'(Arg1, Arg2) -> erlang:error(function_clause, [Arg1,Arg2]).
it is clear that both arguments are now included in the
'function_clause' exception, even though the initially generated
code only included the first argument.
That is no problem in this particular case, but for some more complex
funs, optimizing the first version based on variable usage could make
the second version unsafe.
I rejected the following potential solutions:
- Including the free arguments in the call to erlang:error/2:
'-t/1-fun-0-'(get, V) -> V;
'-t/1-fun-0-'(Arg1, Arg2) -> erlang:error(function_clause, [Arg1,Arg2]).
Unfortunately, that is tricky. The free variables are only known
after the second pass in v3_kernel when variable usage has been
calculated. We would need to add a third pass (only for funs) that
would the free arguments to the second argument for erlang:error/2
*and* update the variable usage information.
- Calling beam_except earlier, from within beam_block before any
optimizations based on variable usages are done. But means that the
problem could reappear in some other form in the future when other
updates are done to the code generator and/or optimization passes.
The solution I have chosen is to modify beam_except to only replace
a call to erlang:error(function_class, Args) if the length of Args
is the same as the arity in the func_info/3 instruction. The code
will be slightly larger. Also, the free variables for funs and list
comprehensions will no longer be included in the function_clause
exception (that could be less confusing, but it also means less
information during debugging).
|
|
* anders/diameter/cover/OTP-10804:
Update diameter.cover
|
|
The transition INITIAL -> DOWN (fixed in the preceding commit) was
wrong.
|
|
There is no such transition in RFC 3539, the state remains in INITIAL.
|
|
* sverk/packet-http-string-maxlen:
erts: Increase length of well formed header names from {packet,http}
OTP-10824
|
|
* sverk/erl_interface-enum-typedef:
erl_interface: Change enum erlang_char_encoding to a typedef
|
|
* sverk/r16/erl_interface-fixup:
erl_interface: Fix ei_skip_term
|
|
|
|
|
|
|
|
This was the result of the watchdog process exiting as a consequence of
peer death in some casesi, causing a restarted transport to enter
INITIAL when it should enter REOPEN. The watchdog now remains alive as
long as peer shutdown isn't requested and a 'close' message to the
service process (instead of watchdog death) generates 'closed' events
from the service.
|
|
|
|
That is, make the naming match that of the corresponding modules.
This has long been fairly confusing.
|
|
That check for unexpected entries in the request table.
|
|
In particular, use watchdog messages as input and do away with the older
connection_up/down (and other) messages. Also, only maintain the
watchdog state, not the older up/down op state.
|
|
Service process informs the watchdog process which informs the peer
process. (Instead of going directly to the latter in one case.)
|
|
Which will be the case with R16B in this case.
|
|
|
|
* hb/stdlib/bug_fixes/OTP-10622:
[stdlib] Fix a bug that could cause the Erlang shell to loop
[stdlib] Fix bugs in eval_bits
|
|
* fredrik/odbc/update-vsn:
Bumped version number
|
|
|
|
* kp/odbc-empty-params/OTP-10798:
Add testcases for odbc:param_query
Fix odbc:param_query/3 and odbc:param_query/4.
|
|
|
|
Unicode related.
|
|
to make the API independent of the actual type of erlang_char_encoding
|
|
* siri/ts-and-tp-in-test-logs/OTP-10780:
[test_server] Add error printouts in case writing to test case html log fails
[test_server] Don't write unicode strings to latin1 log files
|
|
* bmk/snmp/snmp4222_integration/r15:
[snmp/compiler] Improved debug printouts
[snmp/compiler] Add test case and test mib
[snmp/compiler] Proper release nodes
[snmp/compiler] Add the mib (ALARM-MIB)
[snmp/compiler] MIB compiler did not handle forward index ref
[snmp/compiler] Added test case for BITS import
[snmp/compiler] Release notes, appup and proper version
[snmp/compiler] Corrected test mibs
[snmp/compiler] MIB compiler did not handle import BITS
|
|
* siri/sasl/appup-R16/OTP-10806:
Update sasl.appup.src with R16 release and remove R13 versions
|
|
* maint:
Prepare release
Don't run testX420/1 on old slow Sparc systems
testX420: Pass Options to the ASN.1 compiler
asn1_erl_nif: Correct broken length encoding
asn1_SUITE: Mend broken test_modified_x420/1
Revert "Prepare release"
Conflicts:
lib/asn1/doc/src/notes.xml
lib/asn1/test/asn1_SUITE.erl
|
|
* maint-r15:
Prepare release
Don't run testX420/1 on old slow Sparc systems
testX420: Pass Options to the ASN.1 compiler
asn1_erl_nif: Correct broken length encoding
asn1_SUITE: Mend broken test_modified_x420/1
Fix a bug for multiple extension addition groups
|
|
Errors are printed to unexpected_io log.
|
|
The loader failed to load non-optimized BEAM code generated from:
element(2, not_a_tuple)
Commit ece4c17d2288a3161c995 introduced such code into
core_fold_SUITE, leading to core_fold_no_opt_SUITE and
core_fold_post_opt_SUITE failing to load.
|
|
|