aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2017-05-12Warn for potentially unsafe use of get_stacktrace/0Björn Gustavsson
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()
2017-05-11Merge pull request #1449 from bjorng/bjorn/future-proof-exceptionsBjörn Gustavsson
Make calls to get_stacktrace/0 future-proof OTP-14400
2017-05-11snmp_generic: Future-proof exception handling codeBjörn Gustavsson
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.
2017-05-11qlc: Future-proof exception handling codeBjörn Gustavsson
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.
2017-05-11ct_util: Stop using get_stacktrace/0 inappropriatelyBjörn Gustavsson
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.
2017-05-11Merge branch 'sverker/fix-lc-with-lcnt'Sverker Eriksson
* sverker/fix-lc-with-lcnt: erts: Add minor lock optimization for lcnt erts: Unbreak --enable-lock-checking --enable-lock-counter
2017-05-11Merge pull request #1451 from bjorng/bjorn/compiler/nowarn_obsolete_guardBjörn Gustavsson
Correct description of nowarn_obsolete_guard By default, warnings for obsolete guards are turned on. Correct the description to make that clear.
2017-05-11Merge branch 'ingela/ssl/windows-cuddle'Ingela Anderton Andin
* ingela/ssl/windows-cuddle: ssl: Only run sslv2 reject tests on old OpenSSL version ssl: Try to workaround OpenSSL windows obscurities
2017-05-11Update compile.xmlBjörn Gustavsson
2017-05-10Merge branch 'maint'Rickard Green
* maint: Updated OTP version Prepare release
2017-05-10Merge branch 'maint-18' into maintRickard Green
* maint-18: Updated OTP version Prepare release Conflicts: erts/doc/src/notes.xml
2017-05-10Merge tag 'OTP-18.2.4.0.1' into maint-18Rickard Green
=== OTP-18.2.4.0.1 === Changed Applications: - erts-7.2.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 - et-1.5.1 - eunit-2.2.12 - gs-1.6 - hipe-3.14 - ic-4.4 - inets-6.1.1 - 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.0.1': Updated OTP version Prepare release Conflicts: OTP_VERSION erts/vsn.mk otp_versions.table
2017-05-10Updated OTP versionOTP-18.2.4.0.1Rickard Green
2017-05-10Merge branch 'maint'Rickard Green
* maint: Updated OTP version Update release notes inets: Prepare for release inets: Mend ipv6_host_with_brackets option
2017-05-10Merge branch 'maint-18' into maintRickard Green
* maint-18: Updated OTP version Update release notes inets: Prepare for release inets: Mend ipv6_host_with_brackets option
2017-05-10Prepare releaseRickard Green
2017-05-10Merge branch 'rickard/rq-len/OTP-13201'Rickard Green
* rickard/rq-len/OTP-13201: Fix testcase Light weight statistics of run queue lengths
2017-05-10Merge tag 'OTP-18.2.4.1' into maint-18Rickard Green
=== 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
2017-05-10common_test: Future-proof exception handling codeBjörn Gustavsson
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.
2017-05-10Merge branch 'siri/system/testcuddle'Siri Hansen
* siri/system/testcuddle: Add typer to excluded applications in upgrade_SUITE
2017-05-10Merge branch 'sverker/ets-select-replace-const'Sverker Eriksson
* sverker/ets-select-replace-const: stdlib: Add examples for ets:select_replace docs erts: Fix ets:select_replace with {const, NewTuple}
2017-05-10stdlib: Add examples for ets:select_replace docsSverker Eriksson
2017-05-10erts: Fix ets:select_replace with {const, NewTuple}Sverker Eriksson
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').
2017-05-09[emacs] fixup Forgot prognDan Gudmundsson
2017-05-09ssl: Only run sslv2 reject tests on old OpenSSL versionIngela Anderton Andin
2017-05-09Merge branch 'siri/ct_netconfc/multiple-channels/OTP-14284'Siri Hansen
* siri/ct_netconfc/multiple-channels/OTP-14284: [ct_netconfc] Update documentation [ct_netconfc] Start multiple sessions per SSH connection
2017-05-09[emacs] Fix paranthesis error advice-addSiri Hansen
2017-05-09Merge branch 'ingela/ssl/server-hostname-verify/OTP-14197'Ingela Anderton Andin
* ingela/ssl/server-hostname-verify/OTP-14197: ssl: Add hostname check of server certificate
2017-05-09Merge pull request #1439 from josevalim/jv-atu8-functionBjörn Gustavsson
Add a test for utf8 function names
2017-05-08Merge branch 'sverker/is_module_native-trace-bug/OTP-14390'Sverker Eriksson
* sverker/is_module_native-trace-bug/OTP-14390: erts: Fix code:is_module_native for local trace erts: Move and rename erts_is_native_break()
2017-05-08ssl: Try to workaround OpenSSL windows obscuritiesIngela Anderton Andin
2017-05-08[ct_netconfc] Update documentationSiri Hansen
* 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
2017-05-08Merge pull request #1406 from byaruhaf/patch-1Hans Bolinder
Added vim and atom to doc's front page
2017-05-08Merge pull request #1445 from kanatohodets/file_server_childspec_typo_fixBjörn Gustavsson
Fix typo in child spec for file_server
2017-05-08Merge pull request #1443 from bjorng/bjorn/mend-fvalue-leak/OTP-14255Björn Gustavsson
Mend p->fvalue leak
2017-05-08Merge pull request #1428 from martincox/masterIngela Andin
Error when a non-DST time is passed to the httpd_util:rfc1123_date/1 function OTP-14394
2017-05-08Add a test for utf8 function namesJosé Valim
The test found a bug in v3_kernel_pp which was not taking into account utf8 atoms. The bug has also been fixed.
2017-05-08Merge pull request #1442 from bjorng/bjorn/compiler/fix-slimBjörn Gustavsson
Make 'slim' slim again
2017-05-08[ct_netconfc] Start multiple sessions per SSH connectionSiri Hansen
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.
2017-05-06Fix typo in child spec for file_serverBen Tyler
'modeules' -> 'modules' Introduced in 3edc6dbf8f150bb6ba7c800ed5cc379771f8b279 (present in 20.0-rc1, but not in the 19 release series).
2017-05-06ssl: Add hostname check of server certificateIngela Anderton Andin
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.
2017-05-05erts: Add minor lock optimization for lcntSverker Eriksson
2017-05-05erts: Unbreak --enable-lock-checking --enable-lock-counterSverker Eriksson
both together. Broken in OTP-20.0-rc1 by 7d161f5b475575bd79bd90977b3a79334a8ec658.
2017-05-05Merge pull request #1438 from josevalim/patch-10Björn Gustavsson
Remove unused variable warning in compile_SUITE
2017-05-05Merge pull request #1437 from c0b/fix-typo/reference-manualHans Bolinder
system/doc/reference_manual/: fix a typo
2017-05-05Merge pull request #1441 from peroksid/masterHans Bolinder
Fixed typo.
2017-05-05Revert "Updated OTP version"Raimo Niskanen
This reverts commit 4f03eba5294f1c1bc922b07f1267e6b0099fd4b5.
2017-05-05Revert "Prepare release"Raimo Niskanen
This reverts commit dc57404252c47520f352834ad9be45ad684f96c9.
2017-05-05Clear p->fvalue when handling a try/catchBjörn Gustavsson
p->fvalue will be set by BIFs that generate exceptions (such as throw/1), and it will not be cleared before another exception is generated. Potentially, p->fvalue may contain a huge term (e.g. after throw(HugeTerm)) which will be kept in the heap. We can shorten the lifetime of f->value by clearing it in the instructions that handle catches: catch_end and try_end. That is safe because BEAM code will never access p->fvalue. If BEAM code needs to rethrow an exception it will use a reference to the value passed in an X register. The reason that p->fvalue must not be cleared already in handle_error() is that native code trap handlers will use it. (See the comment before handle_error() and the comment at the end of handle_error() in beam_emu.c for some more information about exception handling.)
2017-05-05Extend hipe_SUITE to test exceptions and try/catchBjörn Gustavsson