aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2016-10-06beam_bsm: Eliminate unsafe optimizationBjörn Gustavsson
The following code causes a compiler failure: first_after(Data, Offset) -> case byte_size(Data) > Offset of false -> {First, Rest} = {ok, ok}, ok; true -> <<_:Offset/binary, Rest/binary>> = Data, %% 'Rest' saved in y(0) before the call. {First, _} = match_first(Data, Rest), %% When beam_bsm sees the code, the following line %% which uses y(0) has been optimized away. {First, Rest} = {First, Rest}, First end. match_first(_, <<First:1/binary, Rest/binary>>) -> {First, Rest}. Here is the error message from beam_validator: t: function first_after/2+15: Internal consistency check failed - please report this bug. Instruction: {call,2,{f,7}} Error: {multiple_match_contexts,[{x,1},0]}: Basically, what happens is that at time of code generation, the variable 'Rest' is needed after the call to match_first/2 and is therefore saved in y(0). When beam_bsm (a late optimization pass) sees the code, the use of y(0) following the call to match_first/2 has been optimized away. beam_bsm therefore assumes that the delayed sub-binary creation is safe. (Actually, it is safe, but beam_validator does not realize it.) The bug was caused by two separate commits: e199e2471a reduced the number of special cases to handle in BEAM optimization passed by breaking apart the tail-recursive call instructions (call_only and call_last) into separate instructions. Unfortunately, the special handling for tail calls was lost, which resulted in worse code (i.e. the delayed sub-binary creation optimization could not be applied). e1aa422290 tried to compensate, but did so in a way that was not always safe. Teaching beam_validator that this kind of code is safe would be expensive. Instead, we will undo the damage caused by the two commits. Re-introduce the special handling of tail-recursive calls in beam_bsm that was lost in the first commit. (Effectively) revert the change in the second commit. ERL-268
2016-10-05Merge branch 'hasse/parsetools/fix_leex_counting/ERL-263/OTP-13916' into maintHans Bolinder
* hasse/parsetools/fix_leex_counting/ERL-263/OTP-13916: parsetools: Correct counting of newlines
2016-10-05Merge branch 'dgud/wx/drop-files/OTP-13933' into maintDan Gudmundsson
* dgud/wx/drop-files/OTP-13933: wx: add wxWindowDragAcceptFiles wx: Add simple dropfiles support
2016-10-05Merge branch 'bjorn/compiler/beam_block/ERL-266/OTP-13931' into maintBjörn Gustavsson
* bjorn/compiler/beam_block/ERL-266/OTP-13931: beam_block: Avoid unsafe inclusion of get_map_elements in blocks
2016-10-05beam_block: Avoid unsafe inclusion of get_map_elements in blocksBjörn Gustavsson
c2035ebb8b restricted the get_map_elements instruction so that it could only occur at the beginning of a block. It turns out that including it anywhere in a block is unsafe. Therefore, never put get_map_elements instruction in blocks. (Also remove the beam_utils:join_even/2 function since it is no longer used.) ERL-266
2016-10-05Merge branch 'dgud/emacs/do-not-require-final-newline/PR-1130' into maintDan Gudmundsson
* dgud/emacs/do-not-require-final-newline/PR-1130: erlang-mode: do not configure require-final-newline
2016-10-05Merge branch 'cypherfox/edoc/add_doc/PR-1175' into maintHans Bolinder
* cypherfox/edoc/add_doc/PR-1175: add info for param and returns tags
2016-10-04Merge branch 'RoadRunnr/crypto/no-rc4/PR-1169/OTP-13896' into maintRaimo Niskanen
* RoadRunnr/crypto/no-rc4/PR-1169/OTP-13896: disable RC4 in SSL when crypto doesn't support it Fix compilation when OpenSSL doesn't support RC4 Conflicts: lib/crypto/c_src/crypto.c
2016-10-04Merge branch 'legoscia/crypto/no-rc2/PR-1163/OTP-13895' into maintRaimo Niskanen
* legoscia/crypto/no-rc2/PR-1163/OTP-13895: Fix compilation when OpenSSL doesn't support RC2
2016-10-04ssl: Correct tests tcp stream handlingIngela Anderton Andin
Data collection function active_once_raw/4 did not handle streamed data correctly (it assumed the stream was "packet oriented"), which could result in that the test case perceived that it did not receive all data even though it did.
2016-10-04add info for param and returns tagsLutz Behnke
2016-09-30ssl: Correct anonymous suite handlingIngela Anderton Andin
Test suite did not take TLS-version in to account. Also some anonymous suites where included incorrectly in some TLS versions.
2016-09-29Merge branch 'maint-19' into maintIngela Anderton Andin
2016-09-29Merge branch 'siri/doc-add_pathsa-order/ERL-267/OTP-13920' into maintSiri Hansen
* siri/doc-add_pathsa-order/ERL-267/OTP-13920: Document the order of directories added with code:add_pathsa/1
2016-09-29wx: add wxWindowDragAcceptFilesDan Gudmundsson
Enable window to handle drop file events.
2016-09-29parsetools: Correct counting of newlinesHans Bolinder
See https://bugs.erlang.org/browse/ERL-263 The fix in commit c9bc5c94 of PR-431 (https://github.com/erlang/otp/pull/431) introduced new problems.
2016-09-29Merge branch 'hasse/parsetools/fix_leex_unicode/OTP-13919' into maintHans Bolinder
* hasse/parsetools/fix_leex_unicode/OTP-13919: parsetools: Correct handling of Unicode in Leex
2016-09-28Document the order of directories added with code:add_pathsa/1Siri Hansen
code:add_pathsa/1 reverts the list of directories when adding it at the beginning of the code path. The command line option '-pa' behaves in the same way. This is now documented.
2016-09-28Merge branch ↵Siri Hansen
'legoscia/dynamic-child-shutdown-tuple/ERL-163/PR-1158/OTP-13907' into maint * legoscia/dynamic-child-shutdown-tuple/ERL-163/PR-1158/OTP-13907: Don't report error for shutdown exit tuple
2016-09-28wx: Add simple dropfiles supportDan Gudmundsson
Added wxDropFiles event
2016-09-28ssh: Update vsn.mkHans Nilsson
2016-09-28Merge branch 'isvilen/ssh_REPL_exit_status/PR-1173/OTP-13905' into maintHans Nilsson
2016-09-28Merge remote-tracking branch 'github/pr/1183' into maintIngela Anderton Andin
* github/pr/1183: Fix typos in public_key_app.xml
2016-09-28Merge branch 'ahmedshafeeq/inets-httpc-RFC-7231/PR-1172/OTP-13902' into maintIngela Anderton Andin
* ahmedshafeeq/inets-httpc-RFC-7231/PR-1172/OTP-13902: Update test case docs with RFC-7231 Update behavior of httpc:request to match RFC-7231
2016-09-28Update release notesErlang/OTP
2016-09-28Merge branch 'ingela/ssl/prepare-patch' into maint-19Erlang/OTP
* ingela/ssl/prepare-patch: ssl: Prepare for release
2016-09-28Merge branch 'ingela/ssl/ECC-selection-fix/OTP-13918' into maint-19Erlang/OTP
* ingela/ssl/ECC-selection-fix/OTP-13918: ssl: Correct ECC curve selection, the error could cause default to always be selected.
2016-09-28parsetools: Correct handling of Unicode in LeexHans Bolinder
The 'dfa_graph' option did not work with Unicode. The testcase 'unicode' was not correct.
2016-09-28ssl: Correct ECC curve selection, the error could cause default to always be ↵Ingela Anderton Andin
selected.
2016-09-27Update test case docs with RFC-7231Ahmed Shafeeq Bin Mohd Shariff
2016-09-27Fix typos in public_key_app.xmlMagnus Henoch
2016-09-27ssl: Prepare for releaseIngela Anderton Andin
2016-09-27ssl: Avoid event reorderingIngela Anderton Andin
Several handshake events may be received in the same TLS packet. Then there will be several events pushed to the gen_statems internal queue. New events already in the socket-buffer should not be processed if there are more unprocessed handshake events in next_event queue. We need to handle this in the next_record/1 function.
2016-09-27Merge branch 'andrey/stdlib/fix_edlin_expand/ERL-1152' into maintHans Bolinder
* andrey/stdlib/fix_edlin_expand/ERL-1152: stdlib: Add a testcase for Unicode expander Support for unicode expander
2016-09-27Merge branch 'siri/ttb/ip-client-queue-size/OTP-13829' into maintSiri Hansen
* siri/ttb/ip-client-queue-size/OTP-13829: [ttb] Add option <c>queue_size</c> to tracer/2
2016-09-27Merge branch 'siri/appups-19.1/OTP-13912' into maintSiri Hansen
* siri/appups-19.1/OTP-13912: Update appups in kernel and stdlib for OTP versions > 19.1
2016-09-26Fix typo in documentation for ct_telnet:expect/3Siri Hansen
2016-09-26Update appups in kernel and stdlib for OTP versions > 19.1Siri Hansen
2016-09-23stdlib: Add a testcase for Unicode expanderHans Bolinder
2016-09-23[ttb] Add option <c>queue_size</c> to tracer/2Siri Hansen
This sets the maximum queue size for the IP trace driver which is used when tracing to shell and/or <c>{local,File}</c>. Also, change the default queue size set by dbg:trace_port/2 to 200.
2016-09-22file_SUITE: Test file:write_file/3Björn Gustavsson
Extend file_SUITE:read_write_file/1 to test file:write_file/3 which was not tested at all. While we are it, remove the superfluous roundtrips tests of term_to_binary/1 and binary_to_term/1. Those BIFs are tested in detail in other test suites (for example, binary_SUITE in emulator_test).
2016-09-22disable RC4 in SSL when crypto doesn't support itAndreas Schultz
2016-09-22Fix compilation when OpenSSL doesn't support RC4Andreas Schultz
When OpenSSL has been configured with the "no-rc4" option, the header file rc4.h doesn't exist, and neither does the rc4 functions. Let's handle those by checking whether OPENSSL_NO_RC4 is defined.
2016-09-20Prepare releaseErlang/OTP
2016-09-19Fix SSH custom REPL exit statusSvilen Ivanov
When user defined SSH shell REPL process exits with reason normal SSH channel callback module should report successful exit status to the SSH client. This provides simple way for SSH clients to check for successful completion of executed commands.
2016-09-19Add SSH custom REPL exit status testSvilen Ivanov
Test that when used defined shell REPL exit with reason normal SSH client receives exit status 0.
2016-09-18Update behavior of httpc:request to match RFC-7231Ahmed Shafeeq Bin Mohd Shariff
- The behavior of httpc:request when autoredirect = true is not correct according to the latest update in RFC-7231. This patch corrects the autoredirect behavior.
2016-09-15Merge branch 'raimo/diffserv-socket-option/OTP-13582' into maintRaimo Niskanen
* raimo/diffserv-socket-option/OTP-13582: Tune 'tclass' semantics Implement IPV6_TCLASS
2016-09-15Merge branch 'bjorn/erts/on_load/ERL-240/OTP-13893' into maintBjörn Gustavsson
* bjorn/erts/on_load/ERL-240/OTP-13893: erts: Add nif_SUITE:t_on_load erts: Improve nif_SUITE:upgrade test Don't leak old code when loading a modules with an on_load function
2016-09-15Merge branch 'richarl/eunit/fix-asserts/PR-1168/OTP-13892' into maintBjörn Gustavsson
* richarl/eunit/fix-asserts/PR-1168/OTP-13892: Ensure asserts are enabled in eunit.hrl