Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Conflicts:
OTP_VERSION
lib/inets/vsn.mk
lib/ssl/vsn.mk
|
|
|
|
erlang:get_stacktrace/0 returns the stacktrace for the latest
exception. The problem is that the stacktrace is kept until the next
exception occurs. If the last exception was a 'function_clause' or a
'badarg', the arguments for the call are also kept forever. The
arguments can be terms of any size (potentially huge).
In a future release, we would like to only allow
erlang:get_stacktrace/0 from within a 'try' expression. That would
make it possible to clear the stacktrace when the 'try' expression is
exited.
The 'catch' expression has no natural end where the stacktrace could
be cleared. The stacktrace could be cleared at the end of the function
that the 'catch' occurs in, but that would cause problems in the
following scenario (from real life, but simplified):
try
...
catch _:_ ->
io:format(...),
io:format("~p\n", [erlang:get_stacktrace()])
end.
%% In io.erl.
format(Fmt, Args) ->
Res = case ... of
SomePattern ->
catch...
...;
SomeOtherPattern ->
%% Output the formatted string here
...
end,
clear_stacktrace(), %% Inserted by compiler.
Res.
The call to io:format() would always clear the stacktrace before
it could be retrieved.
That problem could be solved by tightning the scope in which the
stacktrace is kept, but the rules for how long erlang:get_stacktrace/0
would work would become complicated.
Therefore, the solution we suggest for a future major release of
OTP is that erlang:get_stacktrace/0 will return [] if it is called
outside the 'catch' part of a 'try' expression.
To help users prepare, introduce a warning when it is likely that
erlang:get_stacktrace/0 will always return an empty list, for example
in this code:
catch error(foo),
Stk = erlang:get_stacktrace()
or in this code:
try Expr
catch _:_ -> ok end,
Stk = erlang:get_stacktrace()
|
|
|
|
* hans/inets/ftp_recv_chunk_close/OTP-14391:
inets: add testcase to ftp_SUITE Try doing three consecutive chunked receive with some changed timing in the ending sequence
inets: Try fix ftp recv_chunk timing issue
|
|
|
|
* bjorn/compiler/cover:
compiler.cover: Remove deleted module sys_pre_expand
Cover the first clause of v3_core:bin_expand_string/4
compile_SUITE: Test the r16, r17, r18, r19 options
erl_bifs: Remove pure BIFs serving no useful purpose
erl_bifs: Remove erlang:hash/2 from list of pure functions
|
|
Make calls to get_stacktrace/0 future-proof
OTP-14400
|
|
In the future, erlang:get_stacktrace/0 will probably only work
inside a the 'catch' block of a 'try' expression.
Future-proof the code by rewriting the old-style catch to
a try...catch.
|
|
In the future, erlang:get_stacktrace/0 will probably only work
inside a the 'catch' block of a 'try' expression.
Future-proof the code by rewriting the old-style catch to
a try...catch.
|
|
The return value of erlang:get_stacktrace/0 is not defined
when called like this:
try Expr of
Pattern ->
erlang:get_stacktrace()
end
Currently, the stacktrace will be from a random earlier error.
In a future release, it may be [].
Note: We can remove the entire 'case' statement because
CTHReason can never be an atom.
|
|
And while we at it recommend wxWidgets-3.0.3
|
|
Correct description of nowarn_obsolete_guard
By default, warnings for obsolete guards are turned on. Correct the description to make that clear.
|
|
* ingela/ssl/windows-cuddle:
ssl: Only run sslv2 reject tests on old OpenSSL version
ssl: Try to workaround OpenSSL windows obscurities
|
|
|
|
* maint:
Updated OTP version
Update release notes
inets: Prepare for release
inets: Mend ipv6_host_with_brackets option
|
|
* maint-18:
Updated OTP version
Update release notes
inets: Prepare for release
inets: Mend ipv6_host_with_brackets option
|
|
=== OTP-18.2.4.1 ===
Changed Applications:
- inets-6.1.1.1
Unchanged Applications:
- asn1-4.0.1
- common_test-1.11.2
- compiler-6.0.2
- cosEvent-2.2
- cosEventDomain-1.2
- cosFileTransfer-1.2
- cosNotification-1.2
- cosProperty-1.2
- cosTime-1.2
- cosTransactions-1.3
- crypto-3.6.2
- debugger-4.1.1
- dialyzer-2.8.2
- diameter-1.11.1
- edoc-0.7.17
- eldap-1.2
- erl_docgen-0.4.1
- erl_interface-3.8.1
- erts-7.2.1
- et-1.5.1
- eunit-2.2.12
- gs-1.6
- hipe-3.14
- ic-4.4
- jinterface-1.6.1
- kernel-4.1.1
- megaco-3.18
- mnesia-4.13.2
- observer-2.1.1
- odbc-2.11.1
- orber-3.8
- os_mon-2.4
- ose-1.1
- otp_mibs-1.1
- parsetools-2.1.1
- percept-0.8.11
- public_key-1.1
- reltool-0.7
- runtime_tools-1.9.2
- sasl-2.6.1
- snmp-5.2.1
- ssh-4.2.1
- ssl-7.2
- stdlib-2.7
- syntax_tools-1.7
- test_server-3.9.1
- tools-2.8.2
- typer-0.9.10
- webtool-0.9
- wx-1.6
- xmerl-1.3.9
* tag 'OTP-18.2.4.1':
Updated OTP version
Update release notes
inets: Prepare for release
inets: Mend ipv6_host_with_brackets option
Conflicts:
OTP_VERSION
lib/inets/doc/src/notes.xml
lib/inets/src/inets_app/inets.appup.src
lib/inets/vsn.mk
otp_versions.table
|
|
In the future, erlang:get_stacktrace/0 will probably only work
inside a the 'catch' block of a 'try' expression.
Future-proof the code by rewriting the old-style catch to
a try...catch.
|
|
Ref: ERL-297
Now sorts 'Name or Initial Func' column in 'Processes' tab in
(us-ascii) order for both names and initial functions.
|
|
|
|
* sverker/ets-select-replace-const:
stdlib: Add examples for ets:select_replace docs
erts: Fix ets:select_replace with {const, NewTuple}
|
|
|
|
The uncovered clause was introduced in bee8f839296e.
|
|
Enable ets:select_replace to do a generic single object
compare-and-swap operation of any ets-tuple using
a matchspec like this:
[{Old, [], [{const, New}]}]
The only exception when this does not work is if the key
contains maps or atoms looking like variables (like '$1').
|
|
Also test other options that turns off certain optimizations or
instruction sets.
|
|
Functions that can are known be pure can be evaluated at
compile-time if the arguments are literals and if the result is
expressible as a literal.
list_to_ref/1 and list_to_port/1 returns terms that cannot be
expressed as literals, so the optimization is not possible.
The argument for port_to_list/1 is never a literal, so there is
no way to evaluate it at compile-time. Therefore, marking those
functions as pure serves no useful purpose.
Note: list_to_pid/1 *is* marked as pure, but only so that we can test
the code in sys_core_fold that rejects pure functions that evaluate to
at term that is not possible to express as a literal. It is sufficient
to have one pure function of that kind.
|
|
erlang:hash/2 was removed in c5d9b970fb5b3a71.
|
|
|
|
|
|
* siri/ct_netconfc/multiple-channels/OTP-14284:
[ct_netconfc] Update documentation
[ct_netconfc] Start multiple sessions per SSH connection
|
|
|
|
Do not crash if observed node stops
|
|
Only listen to toplevel notebook changes, otherwise if
another windows have a notebook and do not handle the event
this process gets it and handles it wrongly.
|
|
|
|
* ingela/ssl/server-hostname-verify/OTP-14197:
ssl: Add hostname check of server certificate
|
|
|
|
Add a test for utf8 function names
|
|
|
|
* Remove edoc comments in ct_netconfc.erl
* Rewrite ct_netconfc.xml to use specs for functions and types
* Add documentation of new functions in ct_netconfc
|
|
Fix typo in child spec for file_server
|
|
Error when a non-DST time is passed to the httpd_util:rfc1123_date/1 function
OTP-14394
|
|
The test found a bug in v3_kernel_pp which was not
taking into account utf8 atoms. The bug has also
been fixed.
|
|
Make 'slim' slim again
|
|
The following new functions are added to ct_netconfc:
* connect/1,2 - open an SSH connection to a netconf server
* disconnect/1 - close the given SSH connectoin
* session/1,2,3 - open an SSH channel on the give connection and send
'hello' to start a netconf session.
This allows running multiple channels on on SSH connection, realizing
one netconf session per channel. The existing ct_netconfc:open will
always run one channel(session) per SSH connection.
|
|
'modeules' -> 'modules'
Introduced in 3edc6dbf8f150bb6ba7c800ed5cc379771f8b279 (present in 20.0-rc1, but
not in the 19 release series).
|
|
When the server_name_indication is sent automatize the
clients check of that the hostname is present in the
servers certificate. Currently server_name_indication shall
be on the dns_id format. If server_name_indication is disabled
it is up to the user to do its own check in the verify_fun.
|