Ben Adams [Tue, 13 Oct 2020 16:33:39 +0000 (17:33 +0100)]
Faster Dictionary clone (#41944)
mafo23 [Tue, 13 Oct 2020 16:24:43 +0000 (03:24 +1100)]
Fix stack overflow in BsdIPGlobalProperties (#43294)
Both the GetTcpConnections and GetActiveUdpListeners functions were
using stackalloc on unbounded arrays. As the objects in these arrays
are quite large, removed the stackalloc so the arrays are always on
the heap.
Fix #43286
Yoh Deadfall [Tue, 13 Oct 2020 15:55:23 +0000 (18:55 +0300)]
Unsafe code replaced by ReadOnlyMemory<> equivalent (#43214)
* Unsafe code replaced by ReadOnlyMemory<> equivalent
* Returned back Length property
* Replaced StringOrCharArray by ReadOnlyMemory and comparer
* Addressed review
Stephen Toub [Tue, 13 Oct 2020 15:15:06 +0000 (11:15 -0400)]
Use unbounded connected streams in System.Net.Security tests (#43327)
Recently there's been a rash of sporadic timeouts/hangs in System.Net.Security tests. I don't _think_ it's related to hitting the maximum buffer size in ConnectedStreams (e.g. if the test is written in a way that it assumes a write will always complete synchronously and won't proceed to read until it does), but I'm removing the bound to see if that helps. We can put it back later if desired: it's not what the tests are validating, and previous to my ConnectedStream change there was no bound, either.
monojenkins [Tue, 13 Oct 2020 14:46:45 +0000 (10:46 -0400)]
Additional fixes to Windows log profiler. (#43170)
* Disable popen/pclose.
* Disable reporting using |mprof-report on Windows due to limited piping support.
* Switch to inet_pton instead of deprecated inet_addr.
* Fix Windows socket server since FD is handle and can be bigger than FD_SETSIZE.
Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
Zoltan Varga [Tue, 13 Oct 2020 13:35:36 +0000 (09:35 -0400)]
Build armv7+armv7s for ios. (#43350)
Stephen Toub [Tue, 13 Oct 2020 13:18:30 +0000 (09:18 -0400)]
Fix ArrayList.GetRange().GetRange().ToArray() (#43223)
The range created by the second GetRange call has an empty _items array that should be ignored, but ToArray on it was trying to copy from that _items directly rather than going through the source's CopyTo method.
hrrrrustic [Tue, 13 Oct 2020 13:00:34 +0000 (09:00 -0400)]
make AsyncFlowControl implement IEquatable<AsyncFlowControl> (#43232)
* make AsyncFlowControl implement IEquatable<AsyncFlowControl>, fixes #31996
* remove test
* remove extra space
Kevin Jones [Tue, 13 Oct 2020 12:53:13 +0000 (08:53 -0400)]
Remove EBS.Never from CipherMode.CFB. (#43310)
This was removed from src/ but ref/ was not updated to match.
Alexander Köplinger [Tue, 13 Oct 2020 12:33:36 +0000 (14:33 +0200)]
Allow passing entrypoint assembly to Android test app (#43333)
This allows packaging multiple assemblies with an entrypoint into the same app and select which one to run by passing an argument via adb/xharness.
Includes xharness bump for getting the expected exit code feature: https://github.com/dotnet/xharness/pull/331
monojenkins [Tue, 13 Oct 2020 12:13:45 +0000 (08:13 -0400)]
Simplify enabling profiler support for embedders. (#43173)
Adding --profile argument to mono_jit_parse_options. Can be used when
embedding and not using parsing in driver.c.
Add env variable MONO_PROFILE adding another possibility to pass profiler
arguments to runtime.
Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
monojenkins [Tue, 13 Oct 2020 10:57:02 +0000 (06:57 -0400)]
Fix parse error in mprof-report image load event. (#43217)
Version 16 of log profiler data format added mvid to image load event and mprof-report was never aligned to handle that since it assumed all events for TYPE_IMAGE included mvid.
Fix makes sure to correctly read pass mvid only for event actually including the field.
Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
Zoltan Varga [Tue, 13 Oct 2020 10:19:32 +0000 (06:19 -0400)]
Add support for the cmake build to mono.proj. (#43317)
* Fix CMake symbol name for HAVE_GNU_LIB_NAMES_H
* Fix pthread function checks on linux.
* Add support for the cmake build to mono.proj.
* Enable the cmake build by default on wasm/osx/android.
Co-authored-by: Filip Navara <filip.navara@gmail.com>
dotnet-maestro[bot] [Tue, 13 Oct 2020 08:52:39 +0000 (08:52 +0000)]
[master] Update dependencies from mono/linker (#43296)
[master] Update dependencies from mono/linker
monojenkins [Tue, 13 Oct 2020 08:33:58 +0000 (04:33 -0400)]
Parallelize card table copy/clear in minor GC. (#43167)
Currently, when using overlapped card table, each minor GC will do a copy/clear of all marked cards into a temporary card table used during minor scan. In order to find marked cards, major heap blocks + LOS is scanned. This is currently done serial and could take significant time of total minor GC depending on platform/hardware.
On hardware with multiple cores it is possible to parallelize the copy/clear of card table, decreasing the minor GC pause times. As an example, a major heap of ~3 GB and a LOS of 600 MB, went from 5 ms minor GC down to 3 ms where most objects didn't have any references (just byte arrays). Increasing the number of objects with references will benefit event more. Before switching
over LOS to a SgenArrayList, similar scenario took 8 ms and was reduced to 3 ms, and those numbers are close to what you would get if sample included more objects with references, since then, you will need to visit more objects, causing more cache misses. Parallelizing that will significantly reduce minor GC pause times.
As with most optimizations the gain is platform/hardware dependent, that's why the parallelization is currently an opt-in feature, that needs to be explicitly enabled (remset-copy-clear-par) on platforms/hardware where similar performance gains can
be identified.
Replacing mono/mono#17689
Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
Kunal Pathak [Tue, 13 Oct 2020 05:39:00 +0000 (22:39 -0700)]
Add back superpmi pipeline files (#43323)
* Add back superpmi pipeline files
* add the missing import
* add another missing import
I am not sure how this worked in the past with missing imports.
* remove the workaround for a bug
* Revert "remove the workaround for a bug"
This reverts commit
5c674210cc8f20fda3e73704c7f72d6e168c68d9.
Jan Kotas [Tue, 13 Oct 2020 04:25:37 +0000 (21:25 -0700)]
Simplify winsock initialization (#43284)
* Initialize winsock directly
* Delete test that is not relevant anymore
* Add tests for methods the require initialized winsock
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Stephen Toub [Tue, 13 Oct 2020 00:17:45 +0000 (20:17 -0400)]
Replace a couple Thread.CurrentThread.ManagedThreadIds (#43270)
* Replace a few Thread.CurrentThread.ManagedThreadIds
* Update some library tests as well
Adeel Mujahid [Mon, 12 Oct 2020 23:40:13 +0000 (02:40 +0300)]
Remove reflection from Environment.WorkingSet prop (#43154)
Hugh Bellamy [Mon, 12 Oct 2020 23:36:41 +0000 (00:36 +0100)]
Add test coverage for AttributeCollection, fix bugs and nullable annotate (#36118)
* Add test coverage for AttributeCollection and fix bugs
* PR Feedback
Carlos Sanchez [Mon, 12 Oct 2020 19:17:01 +0000 (12:17 -0700)]
Bump Intellisense version for RTM (#43235)
Co-authored-by: Carlos Sanchez Lopez <carlossanlop@users.noreply.github.com>
Simon Nattress [Mon, 12 Oct 2020 19:05:47 +0000 (12:05 -0700)]
[Crossgen2] Improve compilation throughput for types with many fields (#43195)
`IsLayoutFixedInCurrentVersionBubble` is a fairly expensive algorithm and can be called very frequently for the same type during JIT compilation. Store the computed result so future lookups are fast.
Fixes https://github.com/dotnet/runtime/issues/38259
Carol Eidt [Mon, 12 Oct 2020 18:25:16 +0000 (11:25 -0700)]
Fix codegen for multi-reg EH vars (#42871)
* Fix codegen for multi-reg EH vars
Multi-reg EH vars were not properly being stored at each def.
Fix the dumping of multi-reg nodes with register assignments.
Temporarily enable EHWriteThru to get CI testing with it on.
Fix #41232
Filip Navara [Mon, 12 Oct 2020 17:44:28 +0000 (19:44 +0200)]
Ensure that iOS builds get correct library identity for native libraries (#43302)
Need to bump iOS device min version to 8.0 to avoid linker error: "embedded dylibs/frameworks only run on iOS 8 or later"
Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
Ilia [Mon, 12 Oct 2020 17:07:27 +0000 (20:07 +0300)]
Get modules information using proc_pidinfo() on macOS (#42900)
Previously CreateProcessModules() parsed the output of vmmap command to get
modules addresses/paths on macOS, but on some Macs with latest macOS 10.15.6
vmmap hides full paths to some process modules (.dylibs in non-system folders),
replacing some parts with *:
```
__TEXT
000000010d8bd000-
000000010ddce000 [ 5188K 5188K 0K 0K] r-x/rwx SM=COW /Users/USER/*/libcoreclr.dylib
```
In particular, it breaks the debugger functionality due to invalid path
`/Users/USER/*/libmscordbi.dylib`, and error code
CORDBG_E_DEBUG_COMPONENT_MISSING is returned.
Now we get modules information by iterating over regions using proc_pidinfo()
in CreateProcessModules().
Fixes #42888
Marek Safar [Mon, 12 Oct 2020 12:34:53 +0000 (14:34 +0200)]
Add configuration for issue mover bot (#43279)
https://github.com/dessant/move-issues
Alexander Köplinger [Mon, 12 Oct 2020 11:08:36 +0000 (13:08 +0200)]
Don't autoupgrade homebrew formula in install-native-dependencies.sh (#43299)
Should workaround an issue we're seeing on AzDO while upgrading openssl@1.1 1.1.1g -> 1.1.1h: 'Error: Not a directory @ dir_s_rmdir - /usr/local/Cellar/openssl'
Kunal Pathak [Mon, 12 Oct 2020 06:04:15 +0000 (23:04 -0700)]
Add JitDasmWithAddress switch to print the process address of every instruction (#43120)
* Add COMPlus_JitDasmWithAddress to print the address
* Remove dspEmit variable
* remove the square brackets
* review comments
* always display offset
* fix the reference of JitDasmWithAddress
Vladimir Sadov [Mon, 12 Oct 2020 04:01:11 +0000 (21:01 -0700)]
Build globalization lib (#42166)
* Build static lib for System.Globalization.Native
* link libSystem.Globalization.Native into the static host
Viktor Hofer [Sun, 11 Oct 2020 17:00:40 +0000 (19:00 +0200)]
Revert "Fixed failing build with -allconfigurations by adding dependency to .vsconfig (#37555)" (#43278)
This reverts commit
c57dffd69a7aa305b24728c84ae6b0b5b33701f8.
Tomáš Rylek [Sun, 11 Oct 2020 16:54:29 +0000 (18:54 +0200)]
Fix composite Crossgen2 runs on Windows and clean up R2R pipelines (#43261)
Some time ago I introduced a new option "crossgenframeworkonly"
in the test build scripts and I modified the CoreCLR pipeline
to use it. Turns out it was never fully functional, crossgenning
framework continued taking place in the CORE_ROOT population phase
(generatelayoutonly) and only on Windows it got duplicated in the
subsequent "crossgen framework" step. This duplication moreover
uncovered a bug in the R2RTest tool - when compiling the framework
in composite mode twice in a row, the tool was incorrectly
manipulating the composite file "framework-r2r.dll", causing an
error in the second framework crossgenning step.
I believe that it's completely logical to crossgen the framework
as part of populating CORE_ROOT. In light of this fact I have just
deleted the separate "crossgen framework" step and the corresponding
build script options. I have also fixed the described bug in R2RTest
related to repeated framework crossgenning in composite mode to
restore the invariant that framework crossgenning should be idempotent.
Thanks
Tomas
Michal Strehovský [Sun, 11 Oct 2020 16:01:54 +0000 (18:01 +0200)]
Move Internal.Console to shared CoreLib & port to Unix (#42983)
Zoltan Varga [Sun, 11 Oct 2020 07:22:44 +0000 (03:22 -0400)]
Ongoing work on the cmake build system. (#43264)
* Update source lists.
* Add android support.
Marek Safar [Sun, 11 Oct 2020 06:45:49 +0000 (08:45 +0200)]
Enable linker substitutions for more architectures. (#42578)
Shaun McFall [Sun, 11 Oct 2020 03:21:15 +0000 (23:21 -0400)]
Add new resource string with correct bounds (#42349)
Use new resource string in MathF.Round
Benjamin Bartels [Sun, 11 Oct 2020 02:00:45 +0000 (03:00 +0100)]
Fixed failing build with -allconfigurations by adding dependency to .vsconfig (#37555)
Nicolas Portmann [Sun, 11 Oct 2020 01:39:37 +0000 (03:39 +0200)]
Pipeline performance tweaks (follow-up) (#37065)
Bond-009 [Sun, 11 Oct 2020 01:21:05 +0000 (03:21 +0200)]
Add fast paths to WhenAny(IEnumerable) (#38896)
* Add fast paths to WhenAny(IEnumerable)
Adds fast paths in case `tasks` is an array or an `ICollection`
* Remove cast from slow path for WhenAll and WhenAny
Ankit Jain [Sun, 11 Oct 2020 00:31:09 +0000 (20:31 -0400)]
[wasm][tests][browser] Http - FunctionalTests - mark failing tests (#42866)
* [wasm][tests][browser] Http - FunctionalTests - mark failing tests
- Most of these are failing due to LoopbackServer
- some others are due to monitors not being supported
This brings the result to zero failures:
`Tests run: 439, Errors: 0, Failures: 0, Skipped: 18. Time: 2.128495s`
* Mark LoopbackServer issues with active issue
* fix the exclusion on browser
Co-authored-by: Larry Ewing <lewing@microsoft.com>
Ivan Diaz Sanchez [Sat, 10 Oct 2020 22:27:30 +0000 (15:27 -0700)]
Cleaned up unused CLRConfig code (#42422)
Tomáš Rylek [Sat, 10 Oct 2020 19:13:25 +0000 (21:13 +0200)]
Keep response files used for crossgenning the framework (#43183)
Response files are a very useful artifact for reproing various
Crossgen / Crossgen2 compilation errors. I propose modifying the
test build scripts to retain these artifacts by using the --nocleanup
option and by skipping deletion of the entire output folder upon
the end of framework compilation. The Crossgen output folder is not
listed among the artifacts transferred to Helix so it should be a
non-concern w.r.t. Helix throughput. I have also put the cmd and sh
versions of the script in sync by adding "large-bubble" and "release"
flags to the Unix version.
Thanks
Tomas
Santiago Fernandez Madero [Sat, 10 Oct 2020 15:59:15 +0000 (10:59 -0500)]
Remove alpine arm64 from mono outerloop build (#43245)
Santiago Fernandez Madero [Sat, 10 Oct 2020 12:20:07 +0000 (07:20 -0500)]
Fix official build (#159) (#43240)
Adeel Mujahid [Sat, 10 Oct 2020 05:54:53 +0000 (08:54 +0300)]
Fix various typos (#43073)
* Fix various typos
* `occurence`, `occurance` -> `occurrence`
* `accross` -> `across`
* `adddress`, `addresss` -> `address`
* `alignement`, `aligment` -> `alignment`
* Remove `c` from triple c.
* Remove `s` from triple s.
* In palsuite, `Successs` (with triple s) was in commented out
`Trace()` message, removed all commented out `Trace()` calls
from such files.
* Fix invalid markdown in `unix-test-instructions.md`.
* Revert event source change
Jan Kotas [Sat, 10 Oct 2020 02:38:12 +0000 (19:38 -0700)]
Unpin Roslyn compiler (#43241)
Santiago Fernandez Madero [Sat, 10 Oct 2020 01:35:05 +0000 (20:35 -0500)]
Remove OSX arm64 from libraries outerloop build (#43242)
Stephen Toub [Sat, 10 Oct 2020 00:40:02 +0000 (20:40 -0400)]
Delete VirtualNetwork{Stream} test code (#43155)
* Delete VirtualNetwork{Stream} test code
Replace it with a CreateConnectedStream helper.
* Address PR feedback
* Fix test I must have gotten interrupted while fixing
Kevin Jones [Fri, 9 Oct 2020 23:23:54 +0000 (19:23 -0400)]
Implement RandomNumberGenerator.GetBytes(int)
David Wrighton [Fri, 9 Oct 2020 22:38:49 +0000 (15:38 -0700)]
Differentiate between IMPL_LIMITATION and NO_WAY (#43070)
Differentiate between `IMPL_LIMITATION` and `NO_WAY` in the JIT by making `IMPL_LIMITATION` return `CORJIT_IMPLLIMITATION` and handle that value such that crossgen2 behavior behaves better in the presence of an `IMPL_LIMITATION`.
Also, change a `NO_WAY` in the X86 JIT to `IMPL_LIMITATION` to better reflect the issue in code.
The effect of these changes is that a test which encounters an `IMPL_LIMITATION` while running crossgen2 in our test suite will not cause the test to fail, but instead will only cause it to fail if the limitation is also present at runtime. This addresses the last issue known to cause the Pri0 X86 Crossgen2 tests to fail.
Jan Vorlicek [Fri, 9 Oct 2020 22:27:16 +0000 (00:27 +0200)]
Fix crossbuild on CentOS (#43189)
* Fix crossbuild on CentOS
This change fixes the crossbuilding to work on CentOS. Clang
frontend presets some of the compiler options based on the
host OS and I guess that's causing the need to add the
`--rpath-link`.
The ranlib change to use llvm ranlib fixed a problem where
cmake attempted to use ranlib from the rootfs for some
reason.
* Reflect PR feedback
dotnet-maestro[bot] [Fri, 9 Oct 2020 22:19:34 +0000 (22:19 +0000)]
[master] Update dependencies from Microsoft/vstest mono/linker (#43224)
[master] Update dependencies from Microsoft/vstest mono/linker
Ankit Jain [Fri, 9 Oct 2020 22:11:50 +0000 (18:11 -0400)]
[wasm][debugger][tests] Make `dotnet test DebuggerTestSuite.csproj` work (#43158)
* [wasm][debugger][tests] Simplify test project files
Now, the tests can be run with `dotnet test DebuggerTestSuite.csproj`.
and the existing `make run-debugger-tests` still works.
Changes:
- We don't need to use wasmAppBuilder for all the test projects, only
`debugger-test`.
- Other assemblies just get bundled with `debugger-test`
- Move common properties to `Directory.Build.*`
- And move the settings being used for debugger-test in the Makefile to
msbuild:
- RuntimeConfiguration defaults to Release, same as what the
Makefile did
- build all the debugger-tests in artifacts dir
- And instead of `TEST_SUITE_PATH`, determine the debugger-tests path
based on the testsuite itself.
- We can then remove `build-debugger-test-app`
* [wasm][debugger] add debugger.sln
* [wasm][debugger][tests] fix warnings - remove explicit xunit packageref
Steve MacLean [Fri, 9 Oct 2020 22:02:51 +0000 (18:02 -0400)]
Enable building .NET Core osx-arm64 in CI (#43187)
* Enable building .NET Core osx-arm64 in CI
* For osx-arm64 xcode-select xcode_12.2
* Use vmImage macOS-10.15 for all platforms
Stephen Toub [Fri, 9 Oct 2020 21:18:36 +0000 (17:18 -0400)]
Address outstanding issues with System.Net MatchingRefApiCompatBaselines (#43230)
Ryan Lucia [Fri, 9 Oct 2020 21:00:41 +0000 (17:00 -0400)]
Fix link to wasm build instructions (#43229)
* Fix link to wasm build instructions
* Update docs/workflow/building/mono/README.md
Co-authored-by: Dan Moseley <danmose@microsoft.com>
Co-authored-by: Dan Moseley <danmose@microsoft.com>
Viktor Hofer [Fri, 9 Oct 2020 20:27:39 +0000 (22:27 +0200)]
Update TargetFramework.Sdk and react to changes (#43218)
Dan Moseley [Fri, 9 Oct 2020 20:13:35 +0000 (13:13 -0700)]
Update area-owners.md (#43233)
@jeffschwMSFT I see @swaroop-sridhar left the team. Are these the correct edits?
Bruce Forstall [Fri, 9 Oct 2020 17:13:57 +0000 (10:13 -0700)]
Fix libraries jitstress jobs (#43191)
leading to pipeline failures in the libraries jitstress jobs.
This fixes up the references.
Marek Safar [Fri, 9 Oct 2020 17:00:27 +0000 (19:00 +0200)]
Cleanup more EventSource calls in SPC to work better with illinker (#40539)
Co-authored-by: Koundinya Veluri <kouvel@users.noreply.github.com>
dotnet-maestro[bot] [Fri, 9 Oct 2020 16:46:44 +0000 (18:46 +0200)]
[master] Update dependencies from dotnet/arcade dotnet/llvm-project dotnet/icu mono/linker (#43181)
* Update dependencies from https://github.com/dotnet/arcade build
20201006.7
Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.ApiCompat
From Version 5.0.0-beta.20478.3 -> To Version 5.0.0-beta.20506.7
* Update dependencies from https://github.com/mono/linker build
20201008.4
Microsoft.NET.ILLink.Tasks
From Version 6.0.0-alpha.1.20478.2 -> To Version 6.0.0-alpha.1.20508.4
* Update dependencies from https://github.com/dotnet/llvm-project build
20201006.1
runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
From Version 9.0.1-alpha.1.20505.1 -> To Version 9.0.1-alpha.1.20506.1
* Update dependencies from https://github.com/dotnet/icu build
20201006.2
Microsoft.NETCore.Runtime.ICU.Transport
From Version 6.0.0-alpha.1.20505.1 -> To Version 6.0.0-alpha.1.20506.2
* Update dependencies from https://github.com/mono/linker build
20201009.2
Microsoft.NET.ILLink.Tasks
From Version 6.0.0-alpha.1.20478.2 -> To Version 6.0.0-alpha.1.20509.2
* Update dependencies from https://github.com/mono/linker build
20201009.3
Microsoft.NET.ILLink.Tasks
From Version 6.0.0-alpha.1.20478.2 -> To Version 6.0.0-alpha.1.20509.3
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Kenneth Pouncey [Fri, 9 Oct 2020 13:09:46 +0000 (15:09 +0200)]
[wasm][net] System.Net.Mail should not throw PNSE for full assembly. (#42974)
* [wasm][net] System.Net.Mail should not throw PNSE for full assembly.
* Address review comment. Remove comment line
* Address review comments. Remove redundant defs
* Activate tests on CI
- SmtpClient relevant tests are not supported
* Add `[UnsupportedOSPlatform("browser")]` to SmtpClient
* Add back System.Net.Mail Unit tests
* Remove redundant $(TargetsBrowser) from ItemGroup
* Add `[UnsupportedOSPlatform("browser")]` to SmtpClient methods and properties
- It does not hurt to have this.
* Remove unnecessary Unsupported attribute at the method level
* Remove unnecessary Unsupported attribute at the method level
* Modify message on skipped test.
* Address review comments and remove string resource
* Remove redundant AssemblyInfo per review comment
* Remove condition attribute
* Attribute is needed
* Fix build issues
Maryam Ariyan [Fri, 9 Oct 2020 11:52:46 +0000 (04:52 -0700)]
Fix some issues with background thread compilation (#42986)
- Resolve dependencies before counting to avoid the race
where its possible for the background thread to run before
the main thread resulting in singletons being resolved during
compilation (it's meant to be side effect free).
- We also avoid capturing the ExecutionContext on the background thread
to avoid capture of async locals.
Fixes dotnet/extensions#3566
Taken from https://github.com/dotnet/extensions/pull/3569/commits/
07e4459b6e81d10c9b3a6561f4cc0fe5a6cbcf8b
Stephen Toub [Fri, 9 Oct 2020 10:14:22 +0000 (06:14 -0400)]
Fix TypeBuilder's base type in ref (#42947)
* Fix Type/Enum/GenericTypeParameterBuilders' base types in ref
* Fix mono's EnumBuilder.IsAssignableFrom implementation
With the ref change, a test started failing because the C# compiler started generating a call to TypeInfo's IsAssignableFrom(TypeInfo) rather than Type's IsAssignableFrom(TypeInfo).
Geoff Kizer [Fri, 9 Oct 2020 10:13:17 +0000 (03:13 -0700)]
use new CancellationToken.UnsafeRegister overload in StreamBuffer (#43197)
Co-authored-by: Geoffrey Kizer <geoffrek@windows.microsoft.com>
Stephen Toub [Fri, 9 Oct 2020 10:12:47 +0000 (06:12 -0400)]
Implement ZLibStream and fix SocketsHttpHandler deflate support (#42717)
* Implement ZLibStream and fix SocketsHttpHandler deflate support
- Implements ZLibStream, exposes it in the ref, and add tests
- Fixes SocketsHttpHandler to use ZLibStream instead of DeflateStream
* Add comment about deflate content encoding
* Apply suggestions from code review
Co-authored-by: Carlos Sanchez <1175054+carlossanlop@users.noreply.github.com>
* Fix netfx build
Co-authored-by: Carlos Sanchez <1175054+carlossanlop@users.noreply.github.com>
Jan Kotas [Fri, 9 Oct 2020 05:20:48 +0000 (22:20 -0700)]
Simplify DynamicWinsockMethods (#43190)
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Santiago Fernandez Madero [Fri, 9 Oct 2020 03:37:08 +0000 (22:37 -0500)]
Publish all packages generated from the experiment branch when in runtimelab (#156) (#43193)
* Publish all packages generated from the experiment branch
* Change publishing to follow installer publish infrastructure
* React to name suffix change in all configurations
Geoff Kizer [Fri, 9 Oct 2020 01:59:38 +0000 (18:59 -0700)]
minor quic improvements (#43151)
* minor quic improvements
* address PR feedback
* more feedback
Co-authored-by: Geoffrey Kizer <geoffrek@windows.microsoft.com>
Stephen Toub [Fri, 9 Oct 2020 01:57:38 +0000 (21:57 -0400)]
Add CancellationToken.Register with callback accepting token (#43114)
* Add CancellationToken.Register with callback accepting token
* Address PR feedback
Stephen Toub [Fri, 9 Oct 2020 01:56:53 +0000 (21:56 -0400)]
Update analyzer versions (#43038)
Aleksey Kliger (λgeek) [Thu, 8 Oct 2020 23:07:08 +0000 (19:07 -0400)]
[System.Drawing.Common] Work around libgdiplus use after free (#43074)
* [System.Drawing.Common] Work around libgdiplus use after free
On Windows, both of the following are legal
Metafile mf = ... ; // get a metafile instance
Graphics g = Graphics.FromImage(mf);
g.Dispose(); mf.Dispose();
and
Metafile mf = ... ; // get a metafile instance
Graphics g = Graphics.FromImage(mf);
mf.Dispose(); g.Dispose();
On Unix, libgdiplus has a use after free bug for the second form - the metafile
native image is disposed, but the graphics instance still has a pointer to the
memory that it will use during cleanup. If the memory is reused, the graphics
instance will see garbage values and crash.
The workaround is to add a MetadataHolder class and to transfer responsibility
for disposing of the native image instance to it if the Metafile is disposed
before the Graphics.
Note that the following is not allowed (throws OutOfMemoryException on GDI+ on
Windows), so there's only ever one instance of Graphics associated with a
Metafile at a time.
Graphics g = Graphics.FromImage(mf);
Graphics g2 = Graphics.FromImage(mf); // throws
Addresses https://github.com/dotnet/runtime/issues/37838
* Formatting fixes
Co-authored-by: Santiago Fernandez Madero <safern@microsoft.com>
* Address review feedback
* Inilne unhelpful helper
* formatting
Co-authored-by: Santiago Fernandez Madero <safern@microsoft.com>
David Mason [Thu, 8 Oct 2020 21:09:12 +0000 (14:09 -0700)]
Port ComWrappers 5.0 diagnostic changes back to master and add stowed exception array to minidumps (#43164)
Stephen Toub [Thu, 8 Oct 2020 19:44:23 +0000 (15:44 -0400)]
Disable SetDateTimeMax test on Linux (#43178)
dotnet-maestro[bot] [Thu, 8 Oct 2020 18:11:56 +0000 (20:11 +0200)]
[master] Update dependencies from dotnet/arcade dotnet/runtime-assets dotnet/llvm-project dotnet/xharness dotnet/icu (#43084)
* Update dependencies from https://github.com/dotnet/arcade build
20200928.3
Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk , Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.XUnitExtensions , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.ApiCompat
From Version 5.0.0-beta.20474.4 -> To Version 5.0.0-beta.20478.3
* Update dependencies from https://github.com/dotnet/runtime-assets build
20201005.2
System.ComponentModel.TypeConverter.TestData , System.Drawing.Common.TestData , System.IO.Compression.TestData , System.IO.Packaging.TestData , System.Net.TestData , System.Private.Runtime.UnicodeData , System.Runtime.TimeZoneData , System.Security.Cryptography.X509Certificates.TestData , System.Windows.Extensions.TestData
From Version 5.0.0-beta.20476.1 -> To Version 5.0.0-beta.20505.2
* Update dependencies from https://github.com/dotnet/llvm-project build
20201005.1
runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.osx.10.12-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools , runtime.linux-arm64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk , runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk
From Version 9.0.1-alpha.1.20475.1 -> To Version 9.0.1-alpha.1.20505.1
* Update dependencies from https://github.com/dotnet/xharness build
20201005.1
Microsoft.DotNet.XHarness.CLI , Microsoft.DotNet.XHarness.TestRunners.Xunit
From Version 1.0.0-prerelease.20502.4 -> To Version 1.0.0-prerelease.20505.1
* Update dependencies from https://github.com/dotnet/icu build
20201005.1
Microsoft.NETCore.Runtime.ICU.Transport
From Version 6.0.0-alpha.1.20475.1 -> To Version 6.0.0-alpha.1.20505.1
* Don't downgrade Microsoft.DotNet.Helix.Sdk
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Alexander Köplinger <alex.koeplinger@outlook.com>
Santiago Fernandez Madero [Thu, 8 Oct 2020 18:03:44 +0000 (13:03 -0500)]
Adding Official Build Support for runtimelab (#43146)
Co-authored-by: Santiago Fernandez Madero <safern@microsoft.com>
Co-authored-by: Jose Perez Rodriguez <joperezr@microsoft.com>
Geoff Kizer [Thu, 8 Oct 2020 15:59:08 +0000 (08:59 -0700)]
fix issue with duplicate completion in MultipleConnectAsync (#43112)
Co-authored-by: Geoffrey Kizer <geoffrek@windows.microsoft.com>
campersau [Thu, 8 Oct 2020 15:30:56 +0000 (17:30 +0200)]
[wasm] Implement System.Console.Clear (#43002)
* [wasm] Implement System.Console.Clear
* Add dummy console.clear implementation if it does not exist
* Initialize console in Clear
* Apply suggestions from codereview
monojenkins [Thu, 8 Oct 2020 14:31:28 +0000 (10:31 -0400)]
[threads] Switch foreign threads to GC Safe in mono_thread_detach (#42758)
* [test] Invoke from foreign threads then try to GC and shutdown
Even if the non-Mono threads that once called Mono are looping or deadlocked,
they shouldn't prevent us from doing a GC (in hybrid suspend mode) or from
shutting down if they detached from the runtime.
* [tests] update .gitignore
Ignore AOT build artifacts in subdirectories of mono/tests/, too
* [threads] Make mono_thread_attach external only
Runtime should use mono_thread_internal_attach
* [threads] Mark mono_thread_detach external only; switch to GC Safe
Runtime threads should call mono_thread_internal_detach
Addresses https://github.com/mono/mono/issues/20290 and https://github.com/mono/mono/issues/20283
If a foreign thread (that was created outside the runtime) calls
mono_thread_detach, leave it in a preemptively-suspendable state, since we
can't expect it to coop suspend.
Conversely in mono_thread_attach (external only), ensure that we always leave
the thread in GC Unsafe (aka RUNNING) state, for cases like
while (cond) {
t = mono_thread_attach (domain);
<...>
mono_thread_detach (t);
}
* Tests fixup
Delete test that invokes the runtime in a loop forever.
This is just exercising a race between mono_thread_attach and the
runtime shutdown. Instead update the invoke_foreign_thread test to
loop a few times to check that attach/detach loops are ok.
In the deadlock test, wait for the foreign thread to finish calling
the runtime before the test thread returns from native back to managed
to avoid a race between shutdown and the invoke.
* [interp] Set context to null when freeing
If a foreign thread runs this loop
for (...) {
mono_thread_attach;
mono_runtime_invoke;
mono_thread_detach;
}
on the second iteration it will get a ThreadContext that was already freed
during the detach. Set the TLS variable to null before freeing the context.
* [threads] Switch to GC Unsafe before creating managed thread object
For a re-attaching move the thread state transition to happen earlier so that
create_internal_thread_object (which does a managed allocation) is always done
in GC Unsafe mode.
* fixup eventpipe to use mono_thread_internal_{attach,detach}
Co-authored-by: lambdageek <lambdageek@users.noreply.github.com>
Co-authored-by: Aleksey Kliger <alklig@microsoft.com>
Tomáš Rylek [Thu, 8 Oct 2020 14:03:34 +0000 (16:03 +0200)]
Add issues.targets entry for UnitTest_GVM, #42924 (#43100)
Markus Lindström [Thu, 8 Oct 2020 11:41:44 +0000 (13:41 +0200)]
Fix ilasm managed resource lookup on Linux. (#42735)
* Fix ilasm managed resource lookup on Linux.
ILAsm did not properly find managed resources if they were not in the
working directory of ILAsm itself. While there was a provision for
Windows-based systems using backslashes as directory separators, there
was no such provision for *nix-based systems using forward slashes.
This commit enables ILAsm to lookup using both types of directory
separators.
* Use DIRECTORY_SEPARATOR_CHAR_A instead of hardcoded backslashes.
This fixes path handling on *nix targets.
* Only consider colon as a special path character on Windows.
Larry Ewing [Thu, 8 Oct 2020 11:09:38 +0000 (06:09 -0500)]
Add UnsupportedOsPlatform(browser) to more synchronous http apis (#43102)
Johan Lorensson [Thu, 8 Oct 2020 07:49:02 +0000 (09:49 +0200)]
Enable EventPipe BufferSize CoreCLR test on Mono runtime. (#43085)
Omair Majid [Thu, 8 Oct 2020 05:55:52 +0000 (01:55 -0400)]
Do not define X509_new as local_X509_new
This was only being done for OpenSSL 1.0. X509_new is actually available
to use in OpenSSL 1.0 and doesn't need to be re-defined:
https://www.openssl.org/docs/man1.0.2/man3/X509_new.html. That document
even says: "X509_new() and X509_free() are available in all versions of
SSLeay and OpenSSL".
The current libraries code doesn't contain an implementation of
local_X509_new. If we define X509_new as local_X509_new, it breaks the
build when it's being compiled non-portable against OpenSSL 1.0.
Brian Sullivan [Thu, 8 Oct 2020 04:31:39 +0000 (21:31 -0700)]
Fixes Issue 42787 (#43077)
* Fixes Issue 42787
The GS COOKIE phase can create a new Basic Block and this will later cause an assert failure:
Assertion failed 'topBB->bbNum <= botBB->bbNum'
Previously this was hidden by an unconditional call to fgRenumberBlocks() which was removed in PR 42664
* Add a call to fgRenumberBlocks in the morphGlobalPhase when it creates new basic blocks
Steve MacLean [Thu, 8 Oct 2020 01:01:28 +0000 (21:01 -0400)]
Add initial support for Apple Silicon (#40435)
* Add CoreCLR compilation support for Apple Silicon
* Use CMAKE_OSX_ARCH rework
* Set clang -arch flag
* Workaround uname arch reporting emulated arch
* Fix native code compilation issues
* Implement missing osx-arm64 functionality
* Prototype fix for write no execute issues
* Strip libunwind pointer authentication bits
* Review feedback
* Does not fix Arm64 ABI issues
Co-authored-by: Jan Vorlicek <janvorli@microsoft.com>
Anirudh Agnihotry [Wed, 7 Oct 2020 22:36:58 +0000 (15:36 -0700)]
Add a new net6.0 TargetFramework (#42709)
* upgrade to net6.0
* add comment and update package version
* address feedback and fix failures
* address feedbacl
* address feedback
Ryan Lucia [Wed, 7 Oct 2020 18:48:26 +0000 (14:48 -0400)]
Disable SatelliteLoadCorrectly_FromName on Browser (#43104)
Kunal Pathak [Wed, 7 Oct 2020 18:02:14 +0000 (11:02 -0700)]
fix condition to align method at 32 bytes (#42909)
In #2249, we started doing alignment of methods to 32-byte boundary for Tier1. However, a method having loops bypass tiering and hence this condition was never executed. Fixed it to make sure we do the alignment for optimized methods only and don't do it for prejitted methods.
Carol Eidt [Wed, 7 Oct 2020 17:00:14 +0000 (10:00 -0700)]
Allow enregistering more structs args (#39326)
* Allow enregistering more structs args
Allow HFAs and other structs with matching fields and registers.
Contributes to #37924
monojenkins [Wed, 7 Oct 2020 12:44:42 +0000 (08:44 -0400)]
Extend use of w32subset API partitioning to cover more Win32 functions. (#42977)
Expand usage of w32subset API partitioning making it possible to include/exclude/use/replace different subset of Win32 API's.
Merge UWP source files into regular Windows specific source files keeping one set of Windows implementation files in upstream repro leverage w32subset.h to support CLASSIC or UWP API subsets.
PR also extend capabilities to replace API usage using HAVE_EXTERN_DEFINED_WIN32* making it possible to exclude and replace API usage in downstream repositories.
Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
Tom Deseyn [Wed, 7 Oct 2020 02:25:43 +0000 (04:25 +0200)]
Console.Unix: reset terminal at exit in less cases to avoid blocking the parent. (#42303)
* Console.Unix: reset terminal at exit in less cases to avoid blocking the parent.
When a parent is fetching the Console.Cursor position, it configures the terminal
to not echo, writes an escape sequence to query the position, and then reads the
position from stdin.
Because this doesn't happen atomically a child process can overwrite the terminal
settings to echo before the parent starts reading. This causes the position to
be echoed to the user, and the parent gets stuck waiting for input on stdin.
Currently terminal settings are reset at exit for applications that use the
Console or Process class. This change tracks whether the application has
changes the terminal settings and only then resets the terminal settings.
This doesn't fix the issue, but makes it less likely to occur.
* TermInfo changes are no longer needed
* Only configure terminal for child if we've touched the settings.
* minor change to comment wording
Geoff Kizer [Wed, 7 Oct 2020 02:01:33 +0000 (19:01 -0700)]
add System.Net.Quic assembly and use it in HttpClient (#43076)
* add System.Net.Quic assembly and use it in HttpClient
* fix build issue
* remove old quic code from shared directory
* fix Common.Tests project
* fix WinHttp tests
* fix typo
Co-authored-by: Geoffrey Kizer <geoffrek@windows.microsoft.com>
Stephen Toub [Tue, 6 Oct 2020 23:14:03 +0000 (19:14 -0400)]
Add MemoryMappedFile tests involving AcquirePointer (#42800)
Anas Mazioudi [Tue, 6 Oct 2020 22:36:11 +0000 (00:36 +0200)]
Start stopwatch immediately before sending http request (#41537)
* Start stopwatch immediately before sending http request
* Remove extra line
* Remove trailing white space
nathan-moore [Tue, 6 Oct 2020 20:36:08 +0000 (16:36 -0400)]
Jit: Remove bounds checks with tests against length. (#40180)
* Introduce a concept of minimum array length into range check
* Some cleanup
* fix potential underflow
* bug fix and cleanup
* Revert string changes
* Allow elimination of arr[0] with len != 0 test
* Revert "Revert string changes"
This reverts commit
6f77bf8c8acce1f5382bb704875384c6f8e2f984.
* Fix up tests
* reverting lower bound merging as it may be unsound
* Fix CI exposed bug and add a couple of test cases
* code review feedback
* comment nit
* feedback
* Add missing break
Aaron Robinson [Tue, 6 Oct 2020 20:11:35 +0000 (13:11 -0700)]
Roslyn update response (#43056)
* Update function pointer syntax usage to official.
* Fix warnings with new Roslyn
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Egor Chesakov [Tue, 6 Oct 2020 19:41:28 +0000 (12:41 -0700)]
Lock CoreDisTools package version to 1.0.1-prerelease-00005 in stress_dependencies.csproj (#42968)
Egor Chesakov [Tue, 6 Oct 2020 19:27:20 +0000 (12:27 -0700)]
CoreDisTools and R2RDump support Arm Thumb2 disassembling (#42964)
* Clear the low bit of "Function Start RVA" on Arm Thumb2 machines in ReadyToRunMethod.cs
* Remove restrictions on InputArchitecture in ReadyToRunReader.cs and R2RDump.cs
Egor Chesakov [Tue, 6 Oct 2020 18:58:34 +0000 (11:58 -0700)]
Small optimization in LSRA for RMW intrinsics (#42564)
RMW intrinsic operands doesn't have to be marked as "delay-free" when they can be assigned the same register as op1Reg (i.e. read-modify-write operand) and one of them is the last use.
Maoni Stephens [Tue, 6 Oct 2020 18:53:50 +0000 (11:53 -0700)]
Changing the free list from singly linked to doubly linked (#43021)
One of the problems with BGC sweep is it zeros out the gen2 FL at the beginning which means we might need to increase gen2 size before it builds up enough FL to accommodate gen1 survivors. To lift this limitation I'm changing this to a doubly linked list so we can easily take items off and thread new ones back on.
Note that this is the initial checkin for the feature - there needs to be more stress testing and perf testing done on this so I'm checking in with the feature DOUBLY_LINKED_FL undefined. I've done some stress testing but not a whole lot.
This is only used for gen2 FL, not UOH - we already don't allow UOH allocations while we are sweeping UOH (which should be quite quick). In the future we will make it work so UOH allocs are allowed while it's being swept but that's beyond the scope of this feature (it would require work in the synchronization between the allocator and BGC sweep).
2 new bits were introduced -
Previously we didn't need to care about bgc mark bits at all since we can't possibly compact into the part of the heap that hasn't been swept. But now we can. So if we compact into a free item that hasn't been swept, we need to set the mark bits correctly. So we introduce a new bit:
// This bit indicates that we'll need to set the bgc mark bit for this object during an FGC.
// We only do this when we decide to compact.
Also now we don't have the luxury to allocate a min obj in the plan phase if what's allocated in this alloc context is too short. Previously we have this situation:
SB|MT|L|N
and if we plan allocated a min obj in this free item, we can allocate a min free obj right after it because the min free obj will not overwrite anything of that free item:
SB|MT|L|N
min free:
SB|MT|Payload
since we don't touch SB. But now we have this:
SB|MT|L|N|P
and if we only allocated 3 ptr size into this free item, and if we want to allocate a min free obj, we'd be over writing P (previous pointer of this free item):
SB|MT|L|N |P
SB|MT|Payload
One note on this is that we check the "allocated size" with (alloc_ptr - start_region), but start_region is updated every time we pad in the same free item. And it's really only necessary for the actual alloc context start (because we just need to preserve that free item's prev). But this is saved by the fact that in gen2 we don't pad. If we do pad in gen2 it would be good to handle this.
This is handled by set_free_obj_in_compact_bit (which sets the new MAKE_FREE_OBJ_IN_COMPACT bit) in adjust_limit where we set the bit and record the size of the "filler object". and we'll actually make the filler obj in gcmemcopy. This means this feature is as of now ONLY FOR 64-bit as the bit we use to do this means we are taking up 3 bits in MT to do our bookkeeping. We could make it work for 32-bit by finding bits in the gap - I haven't done that.
Major areas changed were -
+ allocate_in_older_generation - this also has a complication wrt repair and commit. I introduced the new added list concept so we can repair and commit quickly, with one exception for bucket 0. For b0 since we do discard items, we do need to set prev of discarded items to PREV_EMPTY because we need to indicate that it's not the freelist anymore. However, we can still recover by going through the original head and set the prev of the discarded items one by one which wouldn't be fast so I choose to not do it - the discarded items are generally very small anyway.
+ gcmemcopy - this needs to care about the bits we added.
+ background_sweep - this takes items off of the FL and thread new ones back on. Since this never happens at the same time as the gen1 GCs using these items we don't need synchronization here.
+ allocator class - obviously this needs to care about the prev field now. The principle is we don't touch the prev field in unlink_item (except for the special b0 case) so when we repair we don't need to go repair the prev fields. When we commit, we do need to set the new prev field accordingly (unless for the added list which we would have already set the prev correctly).
---
Fixed some existing bugs -
The refactor change stopped updating next_sweep_obj but it's incorrect because it's used by the verification code in sos so brought that back.
More accounting to count free_list/obj spaces correctly.
---
TODO
Optimizations we can do in background_sweep -
+ Don't need to actually take items off if we are just going to thread back on the same one (and others from my design notes);
+ If there's a big item we may not want to remove, imagine this simplied scenario - we have 1 2-mb free item on the list and we just removed it. Now current_num_objs happens to be big enough so we left an FGC happen and this FGC is gen1 and now it doesn't find any free space and would have to grow gen2.
It's actually beneficial to switch to using the added list even for singly linked list so we could consider enabling it even when the feature is not on.