aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2015-02-06Make sure total_timeout can get triggered before idle_timeoutPeter Andersson
OTP-12335
2015-01-27Merge branch 'maint-r16' into maintMarcus Arendt
2015-01-26Merge branch 's1n4/httpc_invalid_set_cookies/OTP-12430' into maintMarcus Arendt
* s1n4/httpc_invalid_set_cookies/OTP-12430: httpc: Avoid parsing invalid 'Set-Cookie' headers
2015-01-26Prepare releaseErlang/OTP
2015-01-26Merge branch 'sverk/port_get_data-race-r16b03/OTP-12208' into maint-r16Erlang/OTP
* sverk/port_get_data-race-r16b03/OTP-12208: erts: Fix port data memory allocation bug erts: Mend port_set_data with non-immed data for halfword VM erts: Add test case for port_set_data and port_get_data erts: Fix race between port_set_data, port_get_data and port termination erts: Fix erlang:port_set_data/2 for non immediate data
2015-01-26Merge branch 'marcus/16/fix-rebuild' into maint-r16Erlang/OTP
* marcus/16/fix-rebuild: Sort keys before generating
2015-01-26Merge branch 'ia/ssh/sftp-v3-flags' into maintIngela Anderton Andin
* ia/ssh/sftp-v3-flags: ssh: Add some more flags ssh: Correct Sftp flag handling ssh: Add handling of sftp v3 flags
2015-01-26Merge branch 'ia/ssl/maint/poddle/OTP-12420' into maintIngela Anderton Andin
* ia/ssl/maint/poddle/OTP-12420: ssl: Reenable padding check for TLS-1.0 and provide backwards compatible disable option
2015-01-23Merge branch 'egil/fix-lcnt/OTP-12364' into maintBjörn-Egil Dahlberg
* egil/fix-lcnt/OTP-12364: tools: Fix lcnt printout of histograms tools: Fix lcnt sort of inspected locks
2015-01-23Merge branch 'nox/standard_error/OTP-12424' into maintMarcus Arendt
* nox/standard_error/OTP-12424: Test standard_error Properly handle broken input in standard_error Fix io:getopts(standard_error)
2015-01-23Merge branch 'marcus/rabbe-doc-typos2/OTP-12399' into maintMarcus Arendt
* marcus/rabbe-doc-typos2/OTP-12399: fix spelling
2015-01-23ssl: Reenable padding check for TLS-1.0 and provide backwards compatibleIngela Anderton Andin
disable option Conflicts: lib/ssl/src/ssl_cipher.erl lib/ssl/src/ssl_record.erl lib/ssl/src/tls_record.erl lib/ssl/test/ssl_cipher_SUITE.erl
2015-01-23ssh: Add some more flagsIngela Anderton Andin
2015-01-23ssh: Correct Sftp flag handlingIngela Anderton Andin
Function name was somewhat confusing and when trying to find a better name for it we realised it did not work as intended.
2015-01-23ssh: Add handling of sftp v3 flagsIngela Anderton Andin
2015-01-21erts: Fix port data memory allocation bugSverker Eriksson
for non-immediate port data >= sizeof(Eterm)*2 words.
2015-01-21erts: Mend port_set_data with non-immed data for halfword VMSverker Eriksson
2015-01-21erts: Add test case for port_set_data and port_get_dataSverker Eriksson
2015-01-21erts: Fix race between port_set_data, port_get_data and port terminationSverker Eriksson
Always update prt->data with atomic xchg-op. Check for NULL data to detect racing port terminator. Use NULL, as THE_NON_VALUE can be a valid pointer on debug VM.
2015-01-21erts: Fix erlang:port_set_data/2 for non immediate dataSverker Eriksson
hsize field was not set leading to VM crash
2015-01-21Update primary bootstrapBjörn Gustavsson
2015-01-21Merge branch 'bjorn/compiler/map-pattern/OTP-12414' into maintBjörn Gustavsson
* bjorn/compiler/map-pattern/OTP-12414: core_lib: Handle patterns in map values
2015-01-20Test standard_errorAnthony Ramine
2015-01-20Properly handle broken input in standard_errorAnthony Ramine
io:put_chars(standard_error, [oops]) could previously crash the standard_error process. Reported-by: Alexei Sholik
2015-01-20httpc: Avoid parsing invalid 'Set-Cookie' headersSina Samavati
Parsing invalid 'Set-Cookie' header would make httpc crash. This commit filters invalid 'Set-Cookie' headers so that httpc wouldn't try to parse them.
2015-01-19core_lib: Handle patterns in map valuesBjörn Gustavsson
core_lib:is_var_used/2 would not consider a variable used in the value of a map pattern such as: case Map of #{key := <<42:N>>} -> ok end Here the variable 'N' would not be considered used. It was assumed that there was no need to check map patterns at all, since maps currently don't support variables in keys.
2015-01-19Merge branch 'mikpe/hipe-fconv-fmove-fixes/OTP-12413' into maintMarcus Arendt
* mikpe/hipe-fconv-fmove-fixes/OTP-12413: hipe: rtl: fix phi_remove_pred/2 FP moves hipe: backends: correct #fconv{} translation
2015-01-19fix spellingMarcus Arendt
2015-01-16Update primary bootstrapBjörn Gustavsson
2015-01-16Merge branch 'bjorn/compiler/map-in-record-bug/OTP-12402' into maintBjörn Gustavsson
* bjorn/compiler/map-in-record-bug/OTP-12402: sys_core_fold: Correct optimization of 'case'
2015-01-16Merge branch 'bjorn/compiler/beam_bool/OTP-12410' into maintBjörn Gustavsson
* bjorn/compiler/beam_bool/OTP-12410: beam_bool: Correct live calculation for GC BIFs beam_bool: Correct indentation for try...catch
2015-01-15Merge branch 'richcarl/syntax_tools-fix-bad-error-format' into maintBruce Yinhe
OTP-12406 * richcarl/syntax_tools-fix-bad-error-format: fix bad format of error in epp_dodger:parse_file/3
2015-01-15Merge branch 'mikpe/hipe-arm-interworking' into maintBruce Yinhe
OTP-12405 * mikpe/hipe-arm-interworking: hipe: fix ARM/Thumb interworking
2015-01-15Merge branch 'arekinath/openbsd-build/OTP-12404' into maintMarcus Arendt
* arekinath/openbsd-build/OTP-12404: Fix compile breakage on OpenBSD
2015-01-14beam_bool: Correct live calculation for GC BIFsBjörn Gustavsson
When optimizing boolean expressions, it is not always possible to find a number of live registers for a GC BIF that both preserves all source registers that will be tested and at the same time does not include registers that are not initialized. As currently implemented, we have incomplete information about the register calculated from the free variables. Some registers are marked as "reserved". Reserved registers means that we don't know anything about them; they may or may not be initialized. As a conservative correction (suitable for a maintenance release), we will abort the optimization if we find any reserved registers when calculating the number of live registers. We will not attempt to improve the information about the registers in this commit. By examining the coverage when running the existing compiler test suite we find that the optimization is aborted 15 times (before adding any new test cases). To put that in perspective, the optimization is successfully applied 4927 times, and aborted for other reasons 547 times. Reported-by: Ulf Norell Reported-by: Anthony Ramine
2015-01-14beam_bool: Correct indentation for try...catchBjörn Gustavsson
Old versions of the Erlang mode for Emacs used to indent try...catch strangely - the first clause following the 'catch' would be indented with one space less than the following clauses. If we are to use the new Erlang mode when we add more clauses, they would be indented with one space less than the preceding clauses. That would look silly.
2015-01-14sys_core_fold: Correct optimization of 'case'Björn Gustavsson
The optimization of a 'case' statement could lead to incorrect code that would cause an exception at run-time. Here is an example to show how the optimization went wrong. Start with the following code: f({r,#{key:=Val},X}=S) -> case S of {r,_,_} -> setelement(3, Val, S) end. (The record operations have already been translated to the corresponding tuple operations.) The first step in case_opt/3 is to substitute S to obtain: f({r,#{key:=Val},X}=S) -> case {r,#{key:=Val},X} of {r,_,_} -> setelement(3, Val, S) end. After that substitution the 'case' can be simplified to: f({r,#{key:=Val},_}=S) -> case #{key:=Val} of NewVar -> setelement(3, Val, S) end. That is the result from case_opt/3. Now eval_case/2 notices that since there is only one clause left in the 'case', the 'case' can eliminated: f({r,#{key:=Val},_}=S) -> NewVar = #{key:=Val}, setelement(3, Val, S). Since the map construction may have a side effect, it was not eliminated, but assigned to a variable that is never used. The problem is that '#{key:=Val}' is fine as a pattern, but in a construction of a new map, the '=>' operator must be used. So the map construction will fail, generating an exception. As a conservative correction for a maintenance release, we will abort the 'case' optimization if the substitution into the 'case' expression is anything but data items (tuples, conses, or literals) or variables. Reported-by: Dmitry Aleksandrov
2015-01-14Merge branch 'marcus/rabbe-doc-typos/OTP-12399' into maintMarcus Arendt
* marcus/rabbe-doc-typos/OTP-12399: fix doc typos found by Rabbe Fogelholm
2015-01-14Merge branch 'dotsimon/sctp_paddrinfo_state' into maintMarcus Arendt
* dotsimon/sctp_paddrinfo_state: Fix inet:getopts involving #sctp_paddrinfo{}
2015-01-14Merge branch 'nox/http_uri-fragment/OTP-12398' into maintMarcus Arendt
* nox/http_uri-fragment/OTP-12398: Properly parse URI fragments
2015-01-14Merge branch 'dgud/wx/connect-when-terminating/OTP-12374' into maintDan Gudmundsson
* dgud/wx/connect-when-terminating/OTP-12374: wx: Fix connect when terminating
2015-01-14wx: Fix connect when terminatingDan Gudmundsson
The ddbe8a821ad commit was embarrassingly broken.
2015-01-13Merge branch 'essen/irregardless' into maintMarcus Arendt
* essen/irregardless: Fix "irregardless" -> "regardless"
2015-01-13Merge branch 'dgud/debugger/save-state-mac/OTP-12378' into maintDan Gudmundsson
* dgud/debugger/save-state-mac/OTP-12378: debugger: Fix debugger save options on mac
2015-01-13Merge branch 'dgud/wx/connect-when-terminating/OTP-12374' into maintDan Gudmundsson
* dgud/wx/connect-when-terminating/OTP-12374: wx: Do not crash server when going down
2015-01-13fix doc typos found by Rabbe FogelholmMarcus Arendt
2015-01-11hipe: fix ARM/Thumb interworkingMikael Pettersson
HiPE on ARM is currently severely broken if the rest of the VM is compiled to run in Thumb mode -- calling native code quickly ends up executing code in the wrong mode and crashing the VM. This is a problem on e.g. Ubuntu which configures its system GCC to generate Thumb by default. It can also be triggered by overriding CC or CFLAGS when compiling the VM. There were three issues that caused the breakage: 1. Assembly-coded functions in hipe_arm_glue.S weren't explicitly tagged as functions, preventing the linker from generating the correct mode-switching call instructions for calls from C to these functions. Fixed by tagging those symbols as functions. 2. A few BIF wrappers were so simple that they performed tailcalls to the C BIFs. This fails to switch mode when C is in Thumb. Fixed by performing ordinary recursive calls when C is in Thumb. 3. The assembly-coded source files weren't explicitly tagged as ARM. Tested with the HiPE testsuite on ARMv7, with the VM built as ARM and as Thumb. Also manually inspected the object code for the beam executable and checked that call sites from C to HiPE's ARM runtime code and vice versa used the correct mode-switching instructions.
2015-01-11hipe: rtl: fix phi_remove_pred/2 FP movesMikael Pettersson
hipe_rtl:phi_remove_pred/2 can produce a #move{} instruction with floating-point temporaries as operands, even though such moves MUST be #fmove{} instructions. Added type checks to the #move{} and #fmove{} constructor and setter functions to ensure that similar mishaps cannot happen again.
2015-01-11hipe: backends: correct #fconv{} translationMikael Pettersson
RTL can produce an #fconv{} instruction with an immediate operand, but the backends unconditionally access the operand as a temporary. This results in broken representation in the backends and eventually they crash.
2015-01-08Fix "irregardless" -> "regardless"Loïc Hoguin