Age | Commit message (Collapse) | Author | |
---|---|---|---|
2017-11-30 | Add documentation for the new stacktrace syntax | Björn Gustavsson | |
2017-11-30 | Use the new syntax in more test suites | Björn Gustavsson | |
2017-11-30 | Add syntax in try/catch to retrieve the stacktrace directly | Björn Gustavsson | |
This commit adds a new syntax for retrieving the stacktrace without calling erlang:get_stacktrace/0. That allow us to deprecate erlang:get_stacktrace/0 and ultimately remove it. The problem with erlang:get_stacktrace/0 is that it can keep huge terms in a process for an indefinite time after an exception. The stacktrace can be huge after a 'function_clause' exception or a failed call to a BIF or operator, because the arguments for the call will be included in the stacktrace. For example: 1> catch abs(lists:seq(1, 1000)). {'EXIT',{badarg,[{erlang,abs, [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20|...]], []}, {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,674}]}, {erl_eval,expr,5,[{file,"erl_eval.erl"},{line,431}]}, {shell,exprs,7,[{file,"shell.erl"},{line,687}]}, {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]}, {shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}]}} 2> erlang:get_stacktrace(). [{erlang,abs, [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22, 23,24|...]], []}, {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,674}]}, {erl_eval,expr,5,[{file,"erl_eval.erl"},{line,431}]}, {shell,exprs,7,[{file,"shell.erl"},{line,687}]}, {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]}, {shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}] 3> We can extend the syntax for clauses in try/catch to optionally bind the stacktrace to a variable. Here is an example using the current syntax: try Expr catch C:E -> Stk = erlang:get_stacktrace(), . . . In the new syntax, it would look like: try Expr catch C:E:Stk -> . . . Only a variable (not a pattern) is allowed in the stacktrace position, to discourage matching of the stacktrace. (Matching would also be expensive, because the raw format of the stacktrace would have to be converted to the cooked form before matching.) Note that: try Expr catch E -> . . . is a shorthand for: try Expr catch throw:E -> . . . If the stacktrace is to be retrieved for a throw, the 'throw:' prefix must be explicitly included: try Expr catch throw:E:Stk -> . . . | |||
2017-11-30 | erl_parse: Use a new pat_expr rule for pattern expressions | Björn Gustavsson | |
In the grammar file for the Erlang language, patterns are parsed as expressions. erl_lint will then weed out expressions that are not legal patterns. The rule sharing causes problems if we were to introduce new syntax, for example a pattern followed by a ':'. There would be a shift/reduce conflict, and a pattern followed by a ':' would be parsed as a remote call. Introduce a new pat_expr rule to express exactly the subset of expressions that is allowed in pattern. Note: For the moment, we must allow full expressions in case clauses to keep 'merl' working. | |||
2017-11-30 | Merge branch 'maint' | Björn Gustavsson | |
* maint: Fix max atom size overflow on 64-bits Erlang by lowering the MAX_ATOM_TABLE_SIZE Fix integer overflow when set a large maximum value for atom table | |||
2017-11-30 | Merge pull request #1633 from sunboshan/atom-size-fix | Björn Gustavsson | |
Fix integer overflow when set a large maximum value for atom table OTP-14796 | |||
2017-11-30 | Merge branch 'bjorn/compiler/coverage' | Björn Gustavsson | |
* bjorn/compiler/coverage: v3_codegen: Remove check of operand for bs_context_to_binary beam_jump: Eliminate a repeated clause beam_asm: No longer allow iolists as contents in chunk/2 beam_utils_SUITE: Cover more lines in beam_utils guard_SUITE: Add a test case to cover beam_dead:turn_op/1 Recognize 'nil' as a literal in beam_utils:bif_to_test/3 Cover more code in beam_bsm:btb_opt_1/3 Add test to cover a line in v3_kernel:opt_single_valued/3 | |||
2017-11-30 | Merge branch 'maint' | Dan Gudmundsson | |
* maint: Avoid falling measurements testcases on slow machines stdlib: string optimize special case for ASCII stdlib: Minor unicode_util opts | |||
2017-11-30 | Merge branch 'dgud/stdlib/optimize-string-lists' into maint | Dan Gudmundsson | |
* dgud/stdlib/optimize-string-lists: Avoid falling measurements testcases on slow machines stdlib: string optimize special case for ASCII stdlib: Minor unicode_util opts OTP-14670 | |||
2017-11-30 | Merge pull request #1649 from whitfin/patch-1 | Lukas Larsson | |
Minor grammar tweak in ETS documentation | |||
2017-11-29 | Minor grammar tweak in ETS documentation | Isaac Whitfield | |
2017-11-29 | Merge tag 'OTP-19.2.3.1' | Sverker Eriksson | |
=== OTP-19.2.3.1 === Changed Applications: - erts-8.2.2.1 Unchanged Applications: - asn1-4.0.4 - common_test-1.13 - compiler-7.0.3 - cosEvent-2.2.1 - cosEventDomain-1.2.1 - cosFileTransfer-1.2.1 - cosNotification-1.2.2 - cosProperty-1.2.1 - cosTime-1.2.2 - cosTransactions-1.3.2 - crypto-3.7.2 - debugger-4.2.1 - dialyzer-3.0.3 - diameter-1.12.1 - edoc-0.8.1 - eldap-1.2.2 - erl_docgen-0.6.1 - erl_interface-3.9.2 - et-1.6 - eunit-2.3.2 - gs-1.6.2 - hipe-3.15.3 - ic-4.4.2 - inets-6.3.5 - jinterface-1.7.1 - kernel-5.1.1 - megaco-3.18.1 - mnesia-4.14.3 - observer-2.3 - odbc-2.12 - orber-3.8.2 - os_mon-2.4.1 - otp_mibs-1.1.1 - parsetools-2.1.4 - percept-0.9 - public_key-1.3 - reltool-0.7.2 - runtime_tools-1.11 - sasl-3.0.2 - snmp-5.2.4 - ssh-4.4 - ssl-8.1 - stdlib-3.2 - syntax_tools-2.1.1 - tools-2.9 - typer-0.9.11 - wx-1.8 - xmerl-1.3.12 | |||
2017-11-29 | Updated OTP versionOTP-19.2.3.1 | Sverker Eriksson | |
2017-11-29 | Prepare release | Sverker Eriksson | |
2017-11-29 | Merge branch 'sverker/mbcs-pool-stats/ERL-88/OTP-14795' | Sverker Eriksson | |
* sverker/mbcs-pool-stats/ERL-88/OTP-14795: Fix erlang:memory Remove duplicate stats for 'fetch' Do not include new stats for 'allocator_sizes' Add more cpool stats erts: Add statistics for cpoll fetch attempts | |||
2017-11-29 | Avoid falling measurements testcases on slow machines | Dan Gudmundsson | |
2017-11-29 | stdlib: string optimize special case for ASCII | Dan Gudmundsson | |
Avoid unicode_util module call for ASCII strings | |||
2017-11-29 | stdlib: Minor unicode_util opts | Dan Gudmundsson | |
Exit early for Latin-1 | |||
2017-11-29 | Merge branch 'maint' | Ingela Anderton Andin | |
2017-11-29 | Merge branch 'ingela/ssl/ERL-521/OTP-14794' into maint | Ingela Anderton Andin | |
* ingela/ssl/ERL-521/OTP-14794: ssl: Make sure all possible data is delivered | |||
2017-11-29 | Merge branch 'maint' | Ingela Anderton Andin | |
Conflicts: lib/ssl/src/ssl_connection.erl | |||
2017-11-29 | Merge branch 'ingela/ssl/cleaner-code' into maint | Ingela Anderton Andin | |
* ingela/ssl/cleaner-code: ssl: Add gracefullness to dtls code ssl: Remove old softupgrade code ssl: Use genstamtem properly | |||
2017-11-29 | v3_codegen: Remove check of operand for bs_context_to_binary | Björn Gustavsson | |
The bs_context_to_binary instruction only allows a register operand. v3_codegen has a test to ensure that the operand is a register. That test is no longer necessary. There used to be a possibility that optimizations in sys_core_fold and the inliner could change the operand for bs_context_to_binary to a binary literal. Since 09112806c15a81b that can no longer happen, because no more optimizations are run after the introduction of the bs_context_to_binary instruction. | |||
2017-11-28 | ssl: Make sure all possible data is delivered | Ingela Anderton Andin | |
2017-11-28 | Merge branch 'maint' | Hans Bolinder | |
* maint: dialyzer: Extend the map implementation's handling of ?unit dialyzer: Use string:find() instead of string:str() | |||
2017-11-28 | Merge branch 'hasse/dialyzer/maps_anon_fun/OTP-14743' into maint | Hans Bolinder | |
* hasse/dialyzer/maps_anon_fun/OTP-14743: dialyzer: Extend the map implementation's handling of ?unit dialyzer: Use string:find() instead of string:str() | |||
2017-11-28 | Merge branch 'maint' | Hans Nilsson | |
* maint: public_key: Fix failing pkix_verify_hostname_subjAltName_IP TC | |||
2017-11-28 | Merge branch 'hans/ssh/public_key/fix_bad_cert_merge' into maint | Hans Nilsson | |
* hans/ssh/public_key/fix_bad_cert_merge: public_key: Fix failing pkix_verify_hostname_subjAltName_IP TC | |||
2017-11-27 | Merge branch 'maint' | Sverker Eriksson | |
2017-11-27 | Merge branch 'sverker/run_erl-log-gen-doc' into maint | Sverker Eriksson | |
2017-11-27 | Merge branch 'maint' | Dan Gudmundsson | |
* maint: Update HOWTO with wxWidgets build examples https should be mapped to url and not seealso Update kernel appup for OTP-20.2 | |||
2017-11-27 | Merge branch 'dgud/erl_docgen/https2url' into maint | Dan Gudmundsson | |
* dgud/erl_docgen/https2url: Update HOWTO with wxWidgets build examples https should be mapped to url and not seealso | |||
2017-11-27 | Merge branch 'siri/appups-20.2' into maint | Siri Hansen | |
* siri/appups-20.2: Update kernel appup for OTP-20.2 | |||
2017-11-27 | erts: Fix bad merge of PR #1644 | Björn Gustavsson | |
2017-11-27 | Merge branch 'maint' | John Högberg | |
2017-11-27 | public_key: Fix failing pkix_verify_hostname_subjAltName_IP TC | Hans Nilsson | |
Was due to an unresolved merge conflict in a453532fe31eecd8c39b5035702ee20b402fd687 | |||
2017-11-27 | Merge branch 'john/erts/fix-nif-ioq-version/OTP-14779' into maint | John Högberg | |
2017-11-27 | Merge pull request #1644 from bjorng/bjorn/erts/fix-literal-gc/ERL-508 | Björn Gustavsson | |
Fix purging of modules with "fake literals" OTP-14791 | |||
2017-11-27 | beam_jump: Eliminate a repeated clause | Björn Gustavsson | |
This clause seems to have been introduced in cac51274eb9a. | |||
2017-11-27 | beam_asm: No longer allow iolists as contents in chunk/2 | Björn Gustavsson | |
The clause that converted an iolist to a binary was never executed. Note that chunk/2 is called for all chunks in the {extra_chunks,Chunks} option. This change will enforce that the contents of each chunk must be a binary (as documented). | |||
2017-11-27 | beam_utils_SUITE: Cover more lines in beam_utils | Björn Gustavsson | |
2017-11-27 | guard_SUITE: Add a test case to cover beam_dead:turn_op/1 | Björn Gustavsson | |
f9a323d10a9f5d added consistent operand order for equality comparisons. As a result, beam_dead:turn_op/1 is no longer covered. We must keep the uncovered lines in beam_dead to ensure that beam_dead can handle BEAM assembly code from another source than v3_codegen that might not follow the operand order convention. The only way to cover the lines is to use BEAM assembly in the test case. | |||
2017-11-27 | Recognize 'nil' as a literal in beam_utils:bif_to_test/3 | Björn Gustavsson | |
beam_utils:bif_to_test/3 is supposed to never put a literal operand as the first operand in is_eq_exact or is_ne_exact, but 'nil' was not recognized as a literal. | |||
2017-11-27 | Cover more code in beam_bsm:btb_opt_1/3 | Björn Gustavsson | |
2017-11-27 | Add test to cover a line in v3_kernel:opt_single_valued/3 | Björn Gustavsson | |
The uncovered line was added in 6753bbcc3fdb0. | |||
2017-11-27 | Merge pull request #1545 from michalmuskala/move-opt | Björn Gustavsson | |
Place move S x0 instructions at the end of blocks | |||
2017-11-24 | Fix purging of modules with "fake literals" | Björn Gustavsson | |
When compiling Erlang source code, the literal area for the module can only contain data types that have a literal syntax. However, it is possible to sneak in other data types (such as references) in the literal pool by compiling from abstract or assembly code. Those "fake literals" would work fine, but would crash the runtime system when the module containing the literals was purged. Although fake literals are not officially supported, the runtime should not crash when attempting to use them. Therefore, fix the garbage collection of literals and releasing of literal areas. https://bugs.erlang.org/browse/ERL-508 | |||
2017-11-24 | Update CONTRIBUTING.md | Henrik Nord | |
2017-11-24 | Merge branch 'hans/public_key/base64_fix/OTP-14788' | Hans Nilsson | |
* hans/public_key/base64_fix/OTP-14788: public_key: Fix bad calls to base64:* | |||
2017-11-24 | ssl: Add gracefullness to dtls code | Ingela Anderton Andin | |
Also make tls code a little more direct for easier uderstanding |