Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-01-08 | ssh: testcase for abnormal keyboard-interactive authentication | Hans Nilsson | |
2016-01-07 | Merge branch 'bjorn/compiler/beam_bool/OTP-13208' into maint | Björn Gustavsson | |
* bjorn/compiler/beam_bool/OTP-13208: beam_bool: Fix unsafe optimization | |||
2016-01-07 | beam_bool: Fix unsafe optimization | Björn Gustavsson | |
beam_bool would make the following code unsafe (which would be reported by beam_validator): scotland(Echo) -> found(case Echo of Echo when true; Echo, Echo, Echo -> Echo; echo -> [] end, Echo = placed). found(_, _) -> million. Basically, beam_bool would see that the 'case' would always return the value of Echo. Thus: scotland(Echo) -> found(Echo, Echo = placed). The only problem is that beam_bool would also remove a 'move' instruction that would save Echo to the stack. Here is the assembly code for part of the function: {allocate_zero,1,1}. {move,{x,0},{y,0}}. %% Save Echo on stack. {bif,'=:=',{f,7},[{x,0},{atom,true}],{x,1}}. {bif,'=:=',{f,7},[{x,0},{atom,true}],{x,2}}. {bif,'=:=',{f,7},[{x,0},{atom,true}],{x,3}}. {bif,'and',{f,7},[{x,2},{x,3}],{x,2}}. {bif,'and',{f,7},[{x,1},{x,2}],{x,1}}. {jump,{f,8}}. {label,7}. {move,{atom,false},{x,1}}. {label,8}. {bif,'or',{f,6},[{atom,true},{x,1}],{x,1}}. {test,is_eq_exact,{f,6},[{x,1},{atom,true}]}. %% Jump never taken. {jump,{f,5}}. {label,6}. {test,is_eq_exact,{f,9},[{x,0},{atom,echo}]}. {move,nil,{x,0}}. {jump,{f,5}}. {label,9}. {test_heap,3,0}. {put_tuple,2,{x,0}}. {put,{atom,case_clause}}. {put,{y,0}}. {line,[{location,"t.erl",5}]}. {call_ext,1,{extfunc,erlang,error,1}}. {jump,{f,5}}. {label,5}. {test,is_eq_exact,{f,12},[{atom,placed},{y,0}]}. beam_bool would see that the is_eq_exact test at label 8 would always succeed. It could therefore remove most of the code before the jump to label 5. Unfortunately it also removed the essential move of Echo to the stack: {allocate_zero,1,1}. %% Instruction incorrectly removed: {move,{x,0},{y,0}}. {jump,{f,5}}. {label,5}. {test,is_eq_exact,{f,12},[{atom,placed},{y,0}]}. The root cause of the problem is that the 'move' instruction is included in the block of 'bif' instructions before label 8. Normally the 'move' instruction would not have been discarded, but because the left operand to the 'or' BIF is 'true', the entire block with 'bif' instructions are dropped. As far as I can see, there is no gain by including 'move' instructions in the first place. There is no way that better code will be produced. In fact, the entire optimization can be given up if 'move' instructions are found in the block. Thus we can fix this bug by never including any 'move' instructions in the block of 'bif' instructions. We can also remove all the code that deals with 'move' instructions within blocks. Reported-by: Thomas Arts | |||
2016-01-01 | Do not consider "." part of names in edlin | José Valim | |
Today, if you press Ctrl+W inside erl, it will erase word chars including dots. This may have made sense in the past when Erlang had packages, but today considering the most common case for dots inside erl is to work with records, considering the dot part of the word is rather a mistake. For example, imagine the following code, where [] is the cursor: 1> S#elixir_scope.name[] When I press Ctrl+W it erases all up to #: 1> S#[] This patch changes it to the dot is no longer considered part of the name: 1> S#elixir_scope.[] Which is rather expected behaviour for most use cases of dot in Erlang. | |||
2015-12-28 | Merge branch 'legoscia/tls_dist_error_reporting' into maint | Zandra | |
* legoscia/tls_dist_error_reporting: Report bad options for outgoing TLS distribution Save error reasons for TLS distribution connections Report bad options for TLS distribution connections OTP-13219 | |||
2015-12-28 | Merge branch 'josevalim/jv-map-fun-eval-maint' into maint | Zandra | |
* josevalim/jv-map-fun-eval-maint: Use full list of bindings when matching on map keys OTP-13218 | |||
2015-12-28 | Merge branch 'lucafavatella/dialyzer-fun-call' into maint | Zandra | |
* lucafavatella/dialyzer-fun-call: Teach Dialyzer call to funs `M:F/A` (literal M, F, A) OTP-13217 | |||
2015-12-27 | ei: fix breakage reported by Sergei Golovan | Tuncer Ayaz | |
192c4a80c broke the build on at least Debian/Hurd and Debian/kFreeBSD, because it's not linux but still using glibc. To fix it, test for __GLIBC__ in addition to __linux__. | |||
2015-12-27 | Revert "musl: fix gethostbyname_r/gethostbyaddr_ selection" | Tuncer Ayaz | |
This reverts commit 192c4a80c7d6fe9949aecb864901c4a3d9549f36. This breaks on Debian/Hurd, Debian/kFreeBSD, and possibly other platforms as well. Will be solved differently in a follow-up commit. | |||
2015-12-22 | Merge branch 'maint-17' into maint | Anders Svensson | |
2015-12-22 | ssh: clean test specs | Hans Nilsson | |
2015-12-22 | Merge branch 'hans/ssh/cuddle_tests' into maint | Hans Nilsson | |
* hans/ssh/cuddle_tests: ssh: add econnaborted to disconnect msgs in test suite ssh: fix the check that open-ssh supports certain pubkeys in a test suite | |||
2015-12-22 | ssh: fix error (wrong suite) in test/ssh.spec | Hans Nilsson | |
2015-12-21 | Make peer handling more efficient | Anders Svensson | |
Each service process maintains a dictionary of peers, mapping an application alias to a {pid(), #diameter_caps{}} list of connected peers. These lists are potentially large, peers were appended to the end of the list for no particular reason, and these long lists were constructed/deconstructed when filtering them for pick_peer callbacks. Many simultaneous outgoing request could then slow the VM to a crawl, with many scheduled processes mired in list manipulation. The pseudo-dicts are now replaced by plain ets tables. The reason for them was (once upon a time) to have an interface interchangeable with a plain dict for debugging purposes, but strict swapablity hasn't been the case for some time now, and in practice a swap has never taken place. Additional tables mapping Origin-Host/Realm have also been introduced, to minimize the size of the peers lists when peers are filtered on host/realm. For example, a filter like {any, [{all, [realm, host]}, realm]} is probably a very common case: preferring a Destination-Realm/Host match before falling back on Destination-Realm alone. This is now more efficiently (but not equivalently) expressed as {first, [{all, [realm, host]}, realm]} to stop the search when the best match is made, and extracts peers from host/realm tables instead of searching through the list of all peers supporting the application in question. The code to try and start with a lookup isn't exhaustive, and the 'any' filter is still as inefficient as previously. | |||
2015-12-21 | Remove unnecessary erlang:monitor/2 qualification | Anders Svensson | |
See commit 862af31d. | |||
2015-12-21 | vsn -> 1.9.2.3 | Anders Svensson | |
2015-12-21 | Update appup for 17.5.6.8 | Anders Svensson | |
OTP-13164 more efficient peer lists One module. Downgrade not supported. | |||
2015-12-21 | ssh: benchmark all common kex and cipher algorithms | Hans Nilsson | |
2015-12-21 | New structure of the report | Hans Nilsson | |
2015-12-21 | ssh: ssh_benchmark_SUITE re-organized | Hans Nilsson | |
2015-12-21 | ssh: Add first version of ssh_benchmark_SUITE | Hans Nilsson | |
2015-12-20 | Update release notes | Erlang/OTP | |
2015-12-20 | Merge branch 'anders/diameter/17.5.6.7/OTP-13211' into maint-17 | Erlang/OTP | |
* anders/diameter/17.5.6.7/OTP-13211: vsn -> 1.9.2.2 Update/fix appup for 17.5.6.7 Be resilient to diameter_service state upgrades | |||
2015-12-20 | Merge branch 'anders/diameter/request_leak/OTP-13137' into maint-17 | Erlang/OTP | |
* anders/diameter/request_leak/OTP-13137: Fix request table leak at retransmission Fix request table leak at exit signal | |||
2015-12-20 | Merge branch 'anders/diameter/17/watchdog/OTP-12969' into maint-17 | Erlang/OTP | |
* anders/diameter/17/watchdog/OTP-12969: Fix watchdog function_clause | |||
2015-12-20 | Merge branch 'anders/diameter/M-bit/OTP-12947' into maint-17 | Erlang/OTP | |
* anders/diameter/M-bit/OTP-12947: Add service_opt() strict_mbit | |||
2015-12-20 | vsn -> 1.9.2.2 | Anders Svensson | |
2015-12-20 | Update/fix appup for 17.5.6.7 | Anders Svensson | |
OTP-12947 strict_mbit OTP-12969 watchdog function_clause OTP-13137 request leak diameter_config (that allows the new option) should be loaded after the others. Anchor was missing from one regexp. Patches did not accumulate through older versions. | |||
2015-12-20 | Be resilient to diameter_service state upgrades | Anders Svensson | |
By not failing in code that looks up state: pick_peer and service_info. | |||
2015-12-18 | TLS distribution: bind erts socket to localhost | Magnus Henoch | |
There is no reason for the socket on the erts side of the proxy to accept connections from other hosts, so let's bind it to the loopback interface. Also change {ip, {127,0,0,1}} to {ip, loopback} for the erts side of the socket for outgoing connections, to avoid hardcoding IPv4. | |||
2015-12-18 | ssh: add econnaborted to disconnect msgs in test suite | Hans Nilsson | |
2015-12-18 | ssh: fix the check that open-ssh supports certain pubkeys in a test suite | Hans Nilsson | |
2015-12-17 | [cover] Don't crash when compiling beam without 'file' attribute | Siri Hansen | |
cover:compile_beam and cover:compile_beam_directory crashed when trying to compile a beam file without a 'file' attribute. This has been corrected, so an error is returned instead. | |||
2015-12-17 | [cover] Simplify module cc in cover test to avoid confusion | Siri Hansen | |
Functions in this module are never called, and some functions are outdated. In order to avoid confusion (and need for update), the module is now reduced to a simple dummy module. | |||
2015-12-16 | Fix compilation of matching with UTF binaries | Kostis Sagonas | |
The code generated by the HiPE compiler for pattern matching with UTF binaries was such that sometimes THE_NON_VALUE was stored in the roots followed by the garbage collector. This was not an issue for the vanilla native code compiler, but was problematic for the ErLLVM back-end. Fix the issue by not storing THE_NON_VALUE in the live roots. An alternative fix would be to change the code of the garbage collector. With this fix, there are no more (known) failing test cases for the ErLLVM back-end (at least on x86_64 with LLVM 3.5, which is the configuation regularly tested). Thanks to @margnus1 for the fix. | |||
2015-12-16 | Cleanup and add one more test case | Kostis Sagonas | |
2015-12-16 | Two tests that depend on inlining being turned on | Kostis Sagonas | |
2015-12-16 | More tests for BIFs | Kostis Sagonas | |
2015-12-16 | Include some more old HiPE tests to the test suite | Kostis Sagonas | |
2015-12-16 | Add tests for the is_boolean/1 guard | Kostis Sagonas | |
2015-12-16 | Two more tests added | Kostis Sagonas | |
- A test for proper handling of negative numbers in binary search key tables - A test for HiPE's ICode range analysis | |||
2015-12-16 | Test that apply/3 is tail recursive | Kostis Sagonas | |
2015-12-16 | Three more tests added | Kostis Sagonas | |
2015-12-16 | Minor cleanup | Kostis Sagonas | |
Take out extraneous spaces at the end of lines. | |||
2015-12-16 | Comment out tests that are not ready for to_llvm | Kostis Sagonas | |
2015-12-16 | Cleanups & uncomment some code | Kostis Sagonas | |
2015-12-16 | More tests for handling of UTF in bitstrings | Kostis Sagonas | |
2015-12-16 | Minor code cleanup | Kostis Sagonas | |
2015-12-16 | Add more generated test suites in Makefile | Kostis Sagonas | |
2015-12-16 | Use function from hipe module instead of a local one | Kostis Sagonas | |