Jan Vorlicek [Fri, 27 Mar 2020 09:24:04 +0000 (10:24 +0100)]
Improve PAL initialization diagnostics (#34136)
When PAL initialization fails, most often the error code is just a generic
error code that doesn't help in quick diagnosing of the problem.
This change adds extra error codes that can be used to figure out
which part of PAL initialization has failed.
Jarret Shook [Fri, 27 Mar 2020 04:58:50 +0000 (21:58 -0700)]
Use 16.04 to build the x64-arm crossgen (#34171)
* Use 16.04 to build the x64-arm crossgen
* Update docs
Bruce Forstall [Fri, 27 Mar 2020 02:43:44 +0000 (19:43 -0700)]
Speed up SuperPMI mcs remove dup process (#33946)
* Speed up SuperPMI `mcs -removeDup`
Create a "Hash" class that encapsulates the MD5 hashing that is
used to determine if two MCs are equivalent. Primarily, this
allows caching the Windows Crypto provider, which it is very slow
to acquire.
In addition, make some changes to avoid unnecessary memory allocations
and other unnecessary work.
The result is that `mcs -removeDup` is about 4x faster.
Much of the remaining cost is that we read, deserialize the MC,
then reserialize the MC (if unique), and finally destroy the in-memory MC.
There is a lot of memory allocation/deallocation in this process that
could possibly be avoided or improved for this scenario.
* Factor out remove dup code to a separate class
* Add new RemoveDup class
* Add `-dedup` deduplication to `mcs -merge`
Also add `-thin`.
With this,
```
mcs.exe -merge base.mch *.mc -recursive
mcs.exe -removeDup -thin base.mch nodup.mch
```
can be replaced with:
```
mcs.exe -merge -recursive -dedup -thin nodup.mch *.mc
```
The main benefit is avoiding creating a potentially very large base.mch file.
Related, the data being processed only needs to be loaded once.
* Fix Linux build break
* Adjust tools to use new `mcs -merge -dedup -thin` arguments
Adjust superpmi.py script and superpmicollect.cs unit test.
* Update readme documentation for SuperPMI
Add description of `mcs -merge -dedup -thin` arguments and usage.
Maryam Ariyan [Fri, 27 Mar 2020 02:42:58 +0000 (19:42 -0700)]
rename folder to tests (#34174)
Dan Moseley [Fri, 27 Mar 2020 02:06:25 +0000 (19:06 -0700)]
Move some Mono corelib strings to resources/nameof (#34089)
* Add some nameofs
* Replace some literal strings
* Fix tests
* error
* param update in test
Stephen Toub [Fri, 27 Mar 2020 01:43:12 +0000 (21:43 -0400)]
Move a few stackallocs out of loops (#34149)
Maryam Ariyan [Fri, 27 Mar 2020 00:24:55 +0000 (17:24 -0700)]
[ActiveIssue] test flakiness on M.E.Caching.Memory (#34142)
* ActiveIssue flakiness on M.E.Caching.Memory
* disable test OvercapacityPurge_AreThreadSafe
Stephen Toub [Thu, 26 Mar 2020 23:57:17 +0000 (19:57 -0400)]
More auto-fixing of corelib (primarily mono/netcore) (#34071)
* Use explicit type
* Use pattern matching
* Use null propagation
* Simplify default expressions
* Order modifiers
* Simplify null checks
* Make fields readonly
* Delete dead members
* Use switch expressions
* Remove unnecessary usings
* Fix a few issues
Adeel Mujahid [Thu, 26 Mar 2020 23:14:54 +0000 (01:14 +0200)]
Move __allocator under PAL_STDCPP_COMPAT (#34141)
Layomi Akinrinade [Thu, 26 Mar 2020 22:53:20 +0000 (18:53 -0400)]
Close issues fixed by serializer refactoring (#33819)
* Close issues fixed by serializer refactoring
* Validate ext test results
* Fix CI issue
* Address review feedback
Tanner Gooding [Thu, 26 Mar 2020 22:13:42 +0000 (15:13 -0700)]
Fixing opts.setSupportedISAs to use the computed instructionSetFlags value (#34139)
David Wrighton [Thu, 26 Mar 2020 22:06:26 +0000 (15:06 -0700)]
Disable 64bit variants of instruction sets (#34147)
- EnsureInstructionSetFlagsAreValid was permitting the invalid behavior of something like ArmBase.Arm64.IsSupported to return true when ArmBase.IsSupported reported false.
- Fix by having EnsureInstructionSetFlagsAreValid handle the case
Layomi Akinrinade [Thu, 26 Mar 2020 20:49:40 +0000 (16:49 -0400)]
Add JsonIgnoreCondition & per-property ignore logic (#34049)
* Add JsonIgnoreCondition & per-property ignore logic
* Address review feedback
Andy Ayers [Thu, 26 Mar 2020 20:15:05 +0000 (13:15 -0700)]
Revert some changes to managed CorInfoTypes (#34134)
Leftovers from earlier versions of OSR.
Jared Parsons [Thu, 26 Mar 2020 20:03:57 +0000 (13:03 -0700)]
Disable component governance (#34131)
Disable component governance in our CI builds. These builds are not
shipping nor are they services hence they don't need governance.
Also these injected tasks emit lots of warning and error noise into our
build timelines. This makes it hard to filter out real issues in the
build.
Example output that these jobs currently add. Note none of these fail
the build but do show up as errors that we have to filter out
```
error General (NETCORE_ENGINEERING_TELEMETRY=Build) Build failed (exit code '1').
error General Bash exited with code '1'.
error General Unable to locate dotnetcore on build agent.
error General Unable to locate dotnetcore on build agent.
```
monojenkins [Thu, 26 Mar 2020 19:51:52 +0000 (15:51 -0400)]
[debugger] Bump protocol for this commit https://github.com/mono/mono/pull/19248 (#34070)
Bump protocol for this commit https://github.com/mono/mono/pull/19248 as suggested by @vargaz.
Co-authored-by: thaystg <thaystg@users.noreply.github.com>
Viktor Hofer [Thu, 26 Mar 2020 19:50:25 +0000 (20:50 +0100)]
Execute chmod only on Unix environments for host (#34133)
Fixes the following error when cross-targeting Unix on a Windows machine:
`C:\git\runtime3\src\libraries\restore\runtime\runtime.depproj(73,5): error MSB3073: The command "chmod +x C:\git\runtime3\artifacts\bin\testhost\netcoreapp5.0-Linux-Debug-x64\dotnet.exe" exited with code 9009.`
Egor Chesakov [Thu, 26 Mar 2020 19:17:00 +0000 (12:17 -0700)]
Unconditionally enable InstructionSet_ArmBase in PAL_GetJitCpuCapabilityFlags in src/coreclr/src/pal/src/misc/jitsupport.cpp (#34107)
Tanner Gooding [Thu, 26 Mar 2020 19:09:19 +0000 (12:09 -0700)]
Adding support for Sse2.StoreScalar for int/uint (#34085)
* Adding support for Sse2.StoreScalar for int/uint
* Adding test templates for Sse2.StoreScalar int32/uint32
* Regenerating x86 HWIntrinsic tests
* Fixing the documentation comments for Sse2.LoadScalarVector128 int32/uint32
* Fixing the memory size documented for Sse2.LoadScalarVector128
Tanner Gooding [Thu, 26 Mar 2020 19:08:02 +0000 (12:08 -0700)]
Adding the convenience Avx.Compare* overloads (#34100)
* Adding the convenience Avx.Compare* overloads
* Adding test templates for the convenience Avx.Compare* overloads
* Regenerating the x86 hardware intrinsic tests
* Fixing the ordering of Avx.CompareUnordered
Layomi Akinrinade [Thu, 26 Mar 2020 17:05:22 +0000 (13:05 -0400)]
Remove writable JSON DOM (#34099)
* Remove writable JSON DOM
* Address review feedback
Ryan Lucia [Thu, 26 Mar 2020 15:41:55 +0000 (11:41 -0400)]
[mini] Move monovm_initialize to unstable header (#34047)
Ryan Lucia [Thu, 26 Mar 2020 15:18:37 +0000 (11:18 -0400)]
[mono] Don't throw inheritance error on interfaces in GetCustomAttrs (#33942)
Looking at https://github.com/dotnet/runtime/issues/7190, the .NET Core behavior here is strange and my changes in https://github.com/dotnet/runtime/commit/
0844cb7a6152 with the type checking may have been a mistake. I think this should be fine with the interface special-casing, but if deemed too great a concern I can revert that subset of my old changes. Additionally, if people come up with other scenarios where this might fail, I'll just revert until we can migrate to use a shared CustomAttribute implementation rather than try to play whack-a-mole.
Ryan Lucia [Thu, 26 Mar 2020 15:17:40 +0000 (11:17 -0400)]
[loader] Initial work to support ALC collectability (#34038)
This should enable creation of a collectible ALC from managed, though it will not actually unload properly when Unload is called. This should be enough to unblock Xamarin porting work.
monojenkins [Thu, 26 Mar 2020 14:38:21 +0000 (10:38 -0400)]
[llvm] Disable running the llvm verifier by default, it was enabled by mistake, and it takes a long time. (#34073)
<!--
Thank you for your Pull Request!
If you are new to contributing to Mono, please try to do your best at conforming to our coding guidelines http://www.mono-project.com/community/contributing/coding-guidelines/ but don't worry if you get something wrong. One of the project members will help you to get things landed.
Does your pull request fix any of the existing issues? Please use the following format: Fixes #issue-number
-->
Co-authored-by: vargaz <vargaz@users.noreply.github.com>
Marie Píchová [Thu, 26 Mar 2020 14:07:23 +0000 (15:07 +0100)]
Disable all PlatformHandlerTest_Cookies_Http2 for WinHttpHandler. (#34119)
* Disable all PlatformHandlerTest_Cookies_Http2 for WinHttpHandler.
* Added ActiveIssue note.
Co-Authored-By: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Viktor Hofer [Thu, 26 Mar 2020 13:55:10 +0000 (14:55 +0100)]
Import Microsoft.Managed targets in Sdk.IL (#34124)
If Microsoft.Managed targets aren't imported, multitargeting is broken as the required `InnerBuildProperty` and `InnerBuildPropertyValues` properties aren't defined. Those properties are read by the Graph APIs to identify if a build is an outer or inner build and multiplexes on them.
Fixes https://github.com/dotnet/runtime/issues/34123
Viktor Hofer [Thu, 26 Mar 2020 13:36:40 +0000 (14:36 +0100)]
Make VSTest runner work and enable html log (#33915)
The VSTest runner is now supposed to work with the /p:TestRunner=vstest
switch. Currently this is an opt-in but the desire is to get rid of
xunit.console completely and just use VSTest.
monojenkins [Thu, 26 Mar 2020 13:14:54 +0000 (09:14 -0400)]
[debugger] Fix suspend_policy that will be send to debugger-libs (#34067)
- Fix suspend_policy that will be send to debugger-libs, because on debugger-libs we want to resume the VM only when it's suspended, but we were sending the wrong suspend_policy in the case of EVENT_KIND_VM_START and mono is started with suspend=y.
With this fix we can do this PR again: https://github.com/mono/debugger-libs/pull/264/
Fixes https://devdiv.visualstudio.com/DevDiv/_workitems/edit/999375/
Co-authored-by: thaystg <thaystg@users.noreply.github.com>
Jan Kotas [Thu, 26 Mar 2020 12:59:27 +0000 (05:59 -0700)]
Add back MetaDataGetDispenser export for profilers (#34113)
Contributes to #34014
Johan Lorensson [Thu, 26 Mar 2020 09:29:42 +0000 (10:29 +0100)]
Add stack guarantee on Mono Windows to handle stack overflow. (#34005)
When hitting stackoverflow on Windows, the amount of stack available
to exception handler is too small. Windows doesn't support alt stack as
other platforms, but there is a way to guarantee a certain amount of
available stack during stack overflow exceptions using
SetThreadStackGuarantee.
Fix add support on Windows platforms including SetThreadStackGuarantee
API to reserve space needed to handle stack overflow exceptions.
On Windows debug build the size needs to be larger since we might end
up calling JIT that could have quite deep callstack that, on unoptimized
builds, will need more stack.
David Cantu [Thu, 26 Mar 2020 06:10:04 +0000 (23:10 -0700)]
Add new System.Net.Http.Json project/namespace (#33459)
* Add System.Net.Http.Json related projects
* Add JsonContent, HttpContent extensions, and tests.
* Rename PErson.cs to Person.cs
* Adding package for System.Net.Http.Json library
* Improve tests, minor fixes and code clean-up.
* Remove annotations and code clean-up.
* Add draft description and common types to NuGet pkg.
* Addres nullability issues on API surface area.
* Add missing configurations to projects
* Addressing most of the feedback.
TODO: Implement transcoding for non-UTF-8 content.
* Fix csproj formatting and use open StrongNameKeyId
* Address API review comments.
* Add transcoding support for .NET 5
* Port TranscodingRead/WriteStream to netstandard2.0
* Remove netcoreapp dependencies on TranscodingStream classes.
* Mark TransportContext as nullable to fix CI issues.
* Addres issues raised by new nullablity awareness code in System.Net.Http
* Re-enable LoopBackServer tests, address suggestions and code clean-up.
* Use default JsonSerializerOptions when passed-in is null
* Escape a few remaining Unicode characters in test files.
* Address nits.
* Validate inputType.IsAssignableFrom(inputValue.GetType()) on JsonContent ctor.
* Allow only ContentTypes application/json and application/<subtype>+json.
* Address comments.
* Add Unit.Tests project
* Make mediaType argument optional on JsonContent.Create
* Address latest comments.
* Perform case-insensitive comparisons on MediaType instead of ToLower.
* Address comments related to Transcoding classes.
* Address feedback
* Document TranscodingWriteStream.MaxByteBufferSize
* Replace MediaTypeHeaderValue.Parse with .ctor since it performs better.
Co-authored-by: Jose Perez Rodriguez <joperezr@microsoft.com>
Maryam Ariyan [Thu, 26 Mar 2020 02:39:20 +0000 (19:39 -0700)]
Enable remaining Extensions projects (#33984)
ref/src/pkg/test:
- Microsoft.Extensions.Configuration.Json
- Microsoft.Extensions.Configurations.UserSecrets
- Microsoft.Extensions.Configurations.Xml
- Microsoft.Extensions.Logging
- Microsoft.Extensions.Logging.Configuration
- Microsoft.Extensions.Logging.Console
- Microsoft.Extensions.Logging.Debug
- Microsoft.Extensions.Logging.EventLog
- Microsoft.Extensions.Logging.EventSource
- Microsoft.Extensions.Logging.TraceSource
- Microsoft.Extensions.Http
- Microsoft.Extensions.Caching.Memory
- Microsoft.Extensions.Hosting
More:
- [x] Hosting: Included FunctionalTests and TestApp but refactor later
- [x] changes manually applied from PR 3040 in extensions
- [x] skip some test failures using ActiveIssue
- [x] ProjectExclusions removed
- [x] Suppress the duplication LoggingBuilderExtensions
- [x] deleting all csproj under Common
Eugene Rozenfeld [Thu, 26 Mar 2020 00:56:34 +0000 (17:56 -0700)]
Move assert checking the size of structs with GC pointers. (#34053)
Codegen for CpObj assumes that we cannot have a struct with GC pointers
whose size is not a multiple of the register size. We had an assert that
verified that in `ClassLayout::InitializeGCPtrs`.
The assert fired in the new pipeline that tests off-by-default features
in the leg that turns on object stack allocation. Stack-allocated
objects are never copied so the assert shouldn't apply to them.
I moved the assert to `Compiler::gtNewCpObjNode`. I clarified the
comment for the assert and changed it from `noway_assert` to a
regular `assert` since recompilation with minopts will not help if we
hit the assert.
I also added a repro case to ObjectStackAllocationTests that run with
COMPlus_JitObjectStackAllocation=1 in regular test runs.
Stephen Toub [Thu, 26 Mar 2020 00:31:48 +0000 (20:31 -0400)]
Add string ctor to MemberNotNull{When} (#33864)
With only the params string[] ctor, every usage of MemberNotNull{When} in a CLSCompliant(true) assembly needs to have its warning suppressed.
Jarret Shook [Thu, 26 Mar 2020 00:29:19 +0000 (17:29 -0700)]
Run crossgen in parallel in crossgen_comparison.py (#33175)
* Run crossgen in parallel
* Change container to python:3.7
* Undo python3.7 container
* Update the arm build image and address feedback
* Default to python 3.x
* Force python3
* Small python changes
* Define asyncio
* Update to run arm 18.04 cross
* Remove dup core_root generation
* Update arm container
* Use 3.6 for crossgen_comparison
* Finish adding async defintions
* Fix spacing in file
* Update docker image used in linux-requirements
Adeel Mujahid [Wed, 25 Mar 2020 22:35:21 +0000 (00:35 +0200)]
Remove -stripsymbols option from build scripts (#34076)
Symbol stripping is on by default in cmake scripts. This cleans up the remaining places where the no-op `-stripsymbols` option is passed from shell scripts via `.proj` files.
Fixes #32957
Egor Bogatov [Wed, 25 Mar 2020 21:51:34 +0000 (00:51 +0300)]
Add Security framework (#34078)
Felipe Pessoto [Wed, 25 Mar 2020 20:35:25 +0000 (17:35 -0300)]
Change exception for overflow in ArrayBufferWriter (#32587)
* Fix #609 - Part 2
We throw a OutOfMemoryException instead of "Arithmetic operation resulted in an overflow"
* Test attributes. We don't need to limit to 64bit process, since the memory is never allocated.
* Remove platform restriction
* Explicitly throw the OutOfMemoryException instead of rely on Array.Resize
* Move ThrowOutOfMemoryException method
* Missing message, BufferMaximumSizeExceeded
* Code Coverage
* Resource file
* Missing Resx update
* Restrict test to 64bits environment
* Simple test so that we have some test coverage in inner loop
Since we are trying to avoid the OOM, don't run the GetMemory_ExceedMaximumBufferSize on Linux
* Test comment
* Move OutOfMemory test to byte specific test
Maryam Ariyan [Wed, 25 Mar 2020 18:32:22 +0000 (11:32 -0700)]
Merge pull request #34077 from maryamariyan/fromoldmaster-integration
History on Extensions src/Hosting/IntegrationTesting
monojenkins [Wed, 25 Mar 2020 17:15:06 +0000 (13:15 -0400)]
Do not access unloading domains in debugger (#34013)
There was a race where a domain was being unloaded while debugger would access it. A domain was only removed from the 'appdomains_list' as a very last step. The domain was already invalid to access at this point (locks freed for example).
Worse, images would be unloaded if only referenced by that domain. All places the debugger iterates domains hold the loader lock. The loader lock is acquired by the domain unloading process, so as long as a domain is not unloading when we access it inside of the loader lock we are safe.
<!--
Thank you for your Pull Request!
If you are new to contributing to Mono, please try to do your best at conforming to our coding guidelines http://www.mono-project.com/community/contributing/coding-guidelines/ but don't worry if you get something wrong. One of the project members will help you to get things landed.
Does your pull request fix any of the existing issues? Please use the following format: Fixes #issue-number
-->
Co-authored-by: UnityAlex <UnityAlex@users.noreply.github.com>
Adeel Mujahid [Wed, 25 Mar 2020 15:40:16 +0000 (17:40 +0200)]
Fix interpreter build (#34075)
Alexander Nikolaev [Wed, 25 Mar 2020 15:21:37 +0000 (16:21 +0100)]
UseClientCertOnHttp2_OSSupportsIt_Success requires Win10 build number not less than 19573 (#34063)
Fixes #34010
Ryan Lucia [Wed, 25 Mar 2020 15:09:33 +0000 (11:09 -0400)]
[loader] Clear filename when debugging assembly unloading (#34037)
Ryan Lucia [Wed, 25 Mar 2020 14:22:49 +0000 (10:22 -0400)]
[metadata] Skip symbol name mangling on non-Windows for netcore (#33940)
Fixes #33246
Adeel Mujahid [Wed, 25 Mar 2020 14:11:16 +0000 (16:11 +0200)]
Remove symbol stripping from pipeline scripts (#33911)
Symbols stripping is unconditionally on for native builds.
Next Turn [Wed, 25 Mar 2020 13:38:43 +0000 (21:38 +0800)]
Update docs to point to new build scripts (#33325)
* Update docs to point to build-runtime scripts
* Fix CoreLib build command
* Reference the root script, use documented syntax
Maxim Lipnin [Wed, 25 Mar 2020 13:05:57 +0000 (16:05 +0300)]
Remove CoreFX.issues_linux.rsp file (#33953)
* Enable some tests passing locally
* Disable several tests failing in linux CI due to the problem with
libgdiplus
* Enable tests passing locally on Ubuntu 18.04
* Disable several tests failing in
AssemblyLoadContext.InternalLoadFromPath
* Remove CoreFX.issues_linux.rsp file
* Fix condition for including rsp files
Ryan Lucia [Wed, 25 Mar 2020 13:01:40 +0000 (09:01 -0400)]
[loader] Fix some log masks in native-library (#33938)
Copy-paste error
Viktor Hofer [Wed, 25 Mar 2020 12:55:32 +0000 (13:55 +0100)]
Update reportgenerator version used (#34059)
v4.5.1 brings improvements to the output logging which are nice for the local developer flow.
Stephen Toub [Wed, 25 Mar 2020 10:55:49 +0000 (06:55 -0400)]
Enable analyzers for mono/netcore (#34052)
This is mostly just running auto-fixers for the various violated rules. In just a few places, I manually intervened.
* Locally disable pinvoke analyzer pending #33867
Co-authored-by: Dan Moseley <danmose@microsoft.com>
Adeel Mujahid [Wed, 25 Mar 2020 09:25:42 +0000 (11:25 +0200)]
Remove mode bits from open O_RDONLY (#34051)
monojenkins [Wed, 25 Mar 2020 08:06:41 +0000 (04:06 -0400)]
[mini] Initialize correct class for tls fields (#34019)
Initialize the klass containing the field to be accessed, rather than the class of the method from where we are accessing.
Co-authored-by: BrzVlad <BrzVlad@users.noreply.github.com>
Kirill Frolov [Wed, 25 Mar 2020 07:15:37 +0000 (10:15 +0300)]
Fix issue with GDBJIT: moving NotifyGdb call to other function (#33963)
This commit moves call to NotifyGdb::MethodPrepared from
MethodDesc::PrepareInitialCode to MethodDesc::PrepareCode.
Previously NotifyGdb::MethodPrepared might be not called
in few cases.
This commit fixes #33962.
Adeel Mujahid [Wed, 25 Mar 2020 06:50:03 +0000 (08:50 +0200)]
Update centos-7 docker with gcc-7 in PATH (#33846)
Günther Foidl [Wed, 25 Mar 2020 06:48:59 +0000 (07:48 +0100)]
Replaced Span<T>.Fill(0) with Span<T>.Clear() (#33849)
Eric StJohn [Wed, 25 Mar 2020 06:44:22 +0000 (23:44 -0700)]
Avoid copying netfx refs twice during allConfigurations (#34029)
Suppress AssetTargetFallback warning
Elinor Fung [Wed, 25 Mar 2020 06:14:21 +0000 (23:14 -0700)]
Use registered ComWrappers for object <-> COM interface (#33485)
monojenkins [Wed, 25 Mar 2020 04:39:42 +0000 (00:39 -0400)]
[llvmonly] Throw an ExecutionEngine exception with a helpful message when we try to execute a method which failed AOT compilation. (#34027)
<!--
Thank you for your Pull Request!
If you are new to contributing to Mono, please try to do your best at conforming to our coding guidelines http://www.mono-project.com/community/contributing/coding-guidelines/ but don't worry if you get something wrong. One of the project members will help you to get things landed.
Does your pull request fix any of the existing issues? Please use the following format: Fixes #issue-number
-->
Co-authored-by: vargaz <vargaz@users.noreply.github.com>
Maryam Ariyan [Wed, 25 Mar 2020 04:29:42 +0000 (21:29 -0700)]
Merge branch 'fromoldmaster-integration' of Extensions repo into fromoldmaster-integration
Eric StJohn [Wed, 25 Mar 2020 03:57:04 +0000 (20:57 -0700)]
Add iOS.10 with arm support to RID graph (#33990)
* Add iOS.10 with arm support to RID graph
* Make iOS RIDs go back to 8
Stephen Toub [Wed, 25 Mar 2020 02:22:17 +0000 (22:22 -0400)]
Disable UseClientCertOnHttp2_OSSupportsIt_Success test (#34028)
Stephen Toub [Wed, 25 Mar 2020 02:20:12 +0000 (22:20 -0400)]
Fix SemaphoreSlim handling of canceled continuation invocations (#34036)
When a SemaphoreSlim.WaitAsync(CancellationToken) completes because the token has cancellation requested, we end up invoking any continuations off of the returned Task synchronously as part of the cancellation registration. That in turn means that a thread is blocked waiting for that cancelation callback to complete, which can lead to deadlock in niche situations. We need to force this continuation to be async.
Eric StJohn [Wed, 25 Mar 2020 02:14:19 +0000 (19:14 -0700)]
Adding transport package for extensions (#33515)
Stephen Toub [Wed, 25 Mar 2020 02:00:45 +0000 (22:00 -0400)]
Update analyzer versions and fix violations (#34041)
Andy Ayers [Wed, 25 Mar 2020 01:43:01 +0000 (18:43 -0700)]
JIT: block throw helper merges for first block of a try (#34039)
Otherwise we may create a branch into the middle of a try. We could fix the
transform, but if the first block of a try has a throw helper call, the rest
of the try will subsequently be removed, so merging is not all that
interesting.
Addresses an issue that came up in #33924.
Ryan Lucia [Tue, 24 Mar 2020 23:40:25 +0000 (19:40 -0400)]
[metadata] Fix leak in custom attribute lookup (#33937)
Santiago Fernandez Madero [Tue, 24 Mar 2020 22:49:28 +0000 (15:49 -0700)]
Disable zip download for azure devops download task (#34032)
* Disable zip download for azure devops download task
* Fix typo
Alexander Köplinger [Tue, 24 Mar 2020 22:39:42 +0000 (23:39 +0100)]
Add Android build configurations for Mono/Libraries (#33881)
* Add Android build configurations
* Enable System.Globalization.Native on Android
Dynamically load the libicu from the system. Android NDK doesn't ship with icu headers so for now define prototypes for all the functions we use ourselves.
* Add temporary stub HashProvider that throws NIE on Android
We still need to hook up the native System.Security.Native library.
Unblocks Xamarin.Forms startup.
Eirik Tsarpalis [Tue, 24 Mar 2020 22:01:27 +0000 (22:01 +0000)]
[CBOR] Implement indefinite length writer and reader support (#33831)
* Implement indefinite length writes
* add indefinite-length cbor reader support
* Use CborReaderState.FormatError in Peek() instead of throwing exceptions.
* use verbose naming for indefinite-length write methods
* address feedback
* implement concatenation logic for indefinite-length string readers
* add tests for nested indefinite-length strings
* fix naming issues
* check that TryReadString() methods are idempotent on failed reads.
* use string.Create instead of char buffer; share single range list allocation
* only clear List if it is guaranteed to be reused
* move field to top of main CborReader source file.
monojenkins [Tue, 24 Mar 2020 21:25:10 +0000 (17:25 -0400)]
[debugger] Implementing step through multithreaded code. (#33062)
* Implementing step through multithreaded code.
* Fixing concurrency in the case that more than one thread will run the same code, then when the jit is finished, the thread which jitted the code calls jit_done and the others that were waiting don't call, in this case, the other threads can run before the thread which is calling the jit_done set the breakpoint, so the other threads will not stop in the breakpoint.
As I understood we don't need to check if the try_suspend_runtime is returning false or true when we hit a breakpoint from context, so removed the call.
Co-authored-by: Aleksey Kliger (λgeek) <akliger@gmail.com>
Santiago Fernandez Madero [Tue, 24 Mar 2020 20:29:15 +0000 (13:29 -0700)]
Set osOverride default value to empty on mono builds (#33987)
Author: Santiago Fernandez Madero <safern@microsoft.com>
Marek Safar [Tue, 24 Mar 2020 19:41:23 +0000 (20:41 +0100)]
Re-enable linker optimization disabled in #2334 (#32865)
Alexander Köplinger [Tue, 24 Mar 2020 17:20:37 +0000 (18:20 +0100)]
Fix compilation of System.Net.Security.Native (#34018)
It was accidentally moved to a OSX/iOS-only conditional in https://github.com/dotnet/runtime/pull/33970 but it should be built on Linux too.
Nikola Milosavljevic [Tue, 24 Mar 2020 17:10:01 +0000 (10:10 -0700)]
Add System*Native libraries from .NET Core 3.1 release, to Platform Manifest (#33988)
* Add System*Native libraries from .NET Core 3.1 release, to Platform Manifest
* Updates based on PR comments
Stephen Toub [Tue, 24 Mar 2020 17:09:47 +0000 (13:09 -0400)]
Disable failing WinHttpHandler HTTP/2 test (#34011)
dotnet-maestro[bot] [Tue, 24 Mar 2020 16:37:57 +0000 (17:37 +0100)]
Update dependencies from https://github.com/dotnet/llvm-project build
20200316.2 (#33961)
- runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools - 6.0.1-alpha.1.20166.2
- runtime.win-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk - 6.0.1-alpha.1.20166.2
- runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Tools - 6.0.1-alpha.1.20166.2
- runtime.linux-x64.Microsoft.NETCore.Runtime.Mono.LLVM.Sdk - 6.0.1-alpha.1.20166.2
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Alexander Nikolaev [Tue, 24 Mar 2020 16:35:00 +0000 (17:35 +0100)]
Run stress tests on private Asp.Net Core package (#33860)
Currently, it's possible to run stress tests on privately built CoreCLR and libraries by executing load-corefx-testhost.ps1 -b followed by run-docker-compose.ps1 -b. However, it was not possible to run the stress server on a private Asp.Net Core package which is used for private libraries build.
This PR adds a new -pa parameter to run-docker-compose.ps1 which builds a server container with a private Asp.Net Core package version.
David Wrighton [Tue, 24 Mar 2020 16:34:05 +0000 (09:34 -0700)]
Reenable unified instruction set logic (#33936)
* Revert "Revert "Unify instruction set definition (#33730)""
This reverts commit
5a71f14da2c9c2f4ef4fc1dc85f40a70bbc10dc5.
* Ensure that 64 bit variants of instruction sets are handled correctly
- Make sure to enable them based on the related 32bit instruction sets before disabling instruction sets that are enabled but not compatible with the instruction set hierarchy the runtime is designed for.
* Update jit EE version interface as this revert changes the interface back to the pre-revert state.
Tanner Gooding [Tue, 24 Mar 2020 16:28:08 +0000 (09:28 -0700)]
Update lowerxarch to handle some hwintrinsics that were missed (#33983)
* Update lowerxarch to handle some hwintrinsics that were missed
* Don't mark ShiftLeftLogical128BitLane or ShiftRightLogical128BitLane as NoContainment, as they have a containable immediate
Stephen Toub [Tue, 24 Mar 2020 15:44:28 +0000 (11:44 -0400)]
Disable JsonSerializer test failing in CI (#34012)
Anirudh Agnihotry [Tue, 24 Mar 2020 14:18:37 +0000 (07:18 -0700)]
fix clean (#33758)
Aleksey Kliger (λgeek) [Tue, 24 Mar 2020 13:29:45 +0000 (09:29 -0400)]
[mono] Make some API functions public and private (#33736)
* [mini] Move mono_install_load_aot_data_hook to a public header
It's already a MONO_API and it is used, for example, by Xamarin.iOS, but it
wasn't in a public header.
Mark it external only. There are no uses of it inside the runtiem
* [gc] Make mono_gc_init_finalizer_thread a public API
It was already used by Xamarin.iOS but wasn't in a public header and required
compiling with --disable-visibility-hidden in order to dlsym the symbol.
If --with-lazy-gc-thread-creation is used, embedders must call this function to
create the finalizer therad. Otherwise the function does nothing and the
runtime will create the finalizer thread automatically.
* [utils] Move mono_trace_init to a public header
It was already marked as MONO_API, but it was not in a public header.
It is used by embedders such as Xamarin.iOS
* Update ios sample
* Revert "[utils] Move mono_trace_init to a public header"
This reverts commit
a0cc08768e97c7b630ccbf54e48020b06436f874.
* [utils] init mono_logger in all public API functions
Embedders don't need to call mono_trace_init before calling
mono_trace_set_log_handler, mono_trace_set_print_handler or mono_trace_set_printerr_handler
* [jit] Move mono_install_load_aot_data_hook to mono-private-unstable.h
We do not guarantee that this API will be stable
Alexander Köplinger [Tue, 24 Mar 2020 13:29:16 +0000 (14:29 +0100)]
iOS: Enable System.Net.Security.Native and parts of System.Security.Cryptography.Native.Apple (#33970)
Unavailable APIs are excluded via #if for now.
Jan Kotas [Tue, 24 Mar 2020 13:20:28 +0000 (06:20 -0700)]
Fix build break with latest VS preview (#33996)
runtime\src\coreclr\src\gc\gc.cpp(4343,1): warning C5208: unnamed class used in typedef name cannot declare members other than non-static data members, member enumerations, or member classes
Anton Vasiliev [Tue, 24 Mar 2020 12:48:04 +0000 (15:48 +0300)]
Fix incorrect comment in Queue.Dequeue (#34006)
The comment in front of System.Collections.Queue.Dequeue() changed to
match actual routine behavior.
Jan Kotas [Tue, 24 Mar 2020 12:47:28 +0000 (05:47 -0700)]
Minor doc updates (#34003)
Stephen Toub [Tue, 24 Mar 2020 12:46:56 +0000 (08:46 -0400)]
Remove a few boxing/string allocations in XmlJsonWriter (#33991)
Stephen Toub [Tue, 24 Mar 2020 12:45:08 +0000 (08:45 -0400)]
Suppress analyzer warning about ValueTask usage (#33994)
monojenkins [Tue, 24 Mar 2020 11:59:18 +0000 (07:59 -0400)]
[interp] Replace ldloca + ldfld/stfld pairs with ldloc/stloc (#33952)
If loaded/stored field is the only field of the valuetype. This is meant to mainly optimize IntPtr accesses, which contains a single void* field and is heavily used in Unsafe intrinsics.
Co-authored-by: BrzVlad <BrzVlad@users.noreply.github.com>
Alexander Köplinger [Tue, 24 Mar 2020 10:44:34 +0000 (11:44 +0100)]
Rename TARGET_DARWIN to TARGET_OSX (#33959)
https://github.com/dotnet/runtime/pull/33716 set TARGET_DARWIN for iOS too but most of the logic is really OSX-specific.
Unset TARGET_DARWIN for iOS and rename the rest of the occurrences to TARGET_OSX.
dotnet-maestro[bot] [Tue, 24 Mar 2020 09:12:04 +0000 (10:12 +0100)]
[master] Update dependencies from dotnet/arcade mono/linker (#33852)
* Update dependencies from https://github.com/dotnet/arcade build
20200320.1
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.20170.1
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.20170.1
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.20170.1
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20170.1
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.20170.1
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.20170.1
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.20170.1
- Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk - 5.0.0-beta.20170.1
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.20170.1
- Microsoft.DotNet.GenAPI - 5.0.0-beta.20170.1
- Microsoft.DotNet.GenFacades - 5.0.0-beta.20170.1
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.20170.1
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.20170.1
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.20170.1
* Update dependencies from https://github.com/dotnet/arcade build
20200320.4
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.20170.4
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.20170.4
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.20170.4
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20170.4
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.20170.4
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.20170.4
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.20170.4
- Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk - 5.0.0-beta.20170.4
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.20170.4
- Microsoft.DotNet.GenAPI - 5.0.0-beta.20170.4
- Microsoft.DotNet.GenFacades - 5.0.0-beta.20170.4
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.20170.4
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.20170.4
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.20170.4
* Update dependencies from https://github.com/mono/linker build
20200320.1
- ILLink.Tasks - 0.1.6-prerelease.20170.1
* Update dependencies from https://github.com/dotnet/arcade build
20200321.1
- Microsoft.DotNet.XUnitExtensions - 5.0.0-beta.20171.1
- Microsoft.DotNet.VersionTools.Tasks - 5.0.0-beta.20171.1
- Microsoft.DotNet.ApiCompat - 5.0.0-beta.20171.1
- Microsoft.DotNet.Arcade.Sdk - 5.0.0-beta.20171.1
- Microsoft.DotNet.Build.Tasks.Feed - 5.0.0-beta.20171.1
- Microsoft.DotNet.Build.Tasks.Packaging - 5.0.0-beta.20171.1
- Microsoft.DotNet.Build.Tasks.SharedFramework.Sdk - 5.0.0-beta.20171.1
- Microsoft.DotNet.Build.Tasks.TargetFramework.Sdk - 5.0.0-beta.20171.1
- Microsoft.DotNet.CodeAnalysis - 5.0.0-beta.20171.1
- Microsoft.DotNet.GenAPI - 5.0.0-beta.20171.1
- Microsoft.DotNet.GenFacades - 5.0.0-beta.20171.1
- Microsoft.DotNet.Helix.Sdk - 5.0.0-beta.20171.1
- Microsoft.DotNet.RemoteExecutor - 5.0.0-beta.20171.1
- Microsoft.DotNet.XUnitConsoleRunner - 2.5.1-beta.20171.1
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Johan Lorensson [Tue, 24 Mar 2020 07:24:12 +0000 (08:24 +0100)]
Remove Mono runtime vcruntime140.dll release build dependency. (#33853)
CoreCLR static link vcruntime140.dll, but dynamic link rest of
C-runtime using ucrt.lib in release build. Commit align Mono runtime to
follow same pattern, removing dependency on vcruntime140.dll.
Johan Lorensson [Tue, 24 Mar 2020 07:22:46 +0000 (08:22 +0100)]
Implement icall used by RuntimeHelpers.EnsureSufficientExecutionStack on netcore Mono. (#33857)
Current implementation always returned true for Windows/Linux/Android.
There are however use of this API in Task library to make sure recursive
tasks won't hit stackoverflow. There are several tests in System.Threading.Tasks
that currently hit this, at least on Windows, causing test failures.
Fix use stack limits already setup in register_thread and used by GC when
doing conservative stack scan. If the limits have not been setup or is not
supported on platform, we will use old defaults, always assume there is
enough stack space available. Heuristics around size of minimum execution
stack needed are picked from corresponding CoreCLR implementation.
Jan Kotas [Tue, 24 Mar 2020 07:00:45 +0000 (00:00 -0700)]
Fix nullability annotations for ProfileOptimization.StartProfile (#33945)
Fixes #33426
Robert Henry [Tue, 24 Mar 2020 04:42:23 +0000 (21:42 -0700)]
Update README.md (#33999)
Add missing back-ticks to quote a path name.
Robert Henry [Tue, 24 Mar 2020 04:40:13 +0000 (21:40 -0700)]
Update README.md (#33995)
Add missing articles ("the") to README.md
monojenkins [Tue, 24 Mar 2020 04:28:06 +0000 (00:28 -0400)]
Move unbox tramp method address table to data segment, MONO_ARCH_CODE_EXEC_ONLY. (#33969)
unbox tramp method addresses are emitted as a table of calls and read at runtime by get_call_table_entry. This is problematic on platforms that doesn't allow data to be read from instruction stream.
Fix follow same pattern as method address table emitted as function pointers into table in data segment when using MONO_ARCH_CODE_EXEC_ONLY.
Co-authored-by: lateralusX <lateralusX@users.noreply.github.com>
Aleksey Kliger (λgeek) [Tue, 24 Mar 2020 03:13:58 +0000 (23:13 -0400)]
[mono] retry mono_threads_pthread_kill if result == EAGAIN on Linux (#33966)
* [mono] retry mono_threads_pthread_kill if result == EAGAIN on Linux
Try to address https://github.com/dotnet/runtime/issues/32377
(signal queue overflow) by sleeping and retrying a few times.
Egor Chesakov [Tue, 24 Mar 2020 02:39:36 +0000 (19:39 -0700)]
[Arm64] Implement more hardware intrinsics as proposed in #24794 (#33889)
- Implements the following intrinsics as proposed in #24794:
* AbsoluteDifferenceAdd
* MultiplyExtended, MultiplyExtendedScalar
* PolynomialMultiply
* ReciprocalEstimate, ReciprocalEstimateScalar
* ReciprocalExponentScalar
* ReciprocalSquareRootEstimate, ReciprocalSquareRootEstimateScalar
* ReciprocalSquareRootStep, ReciprocalSquareRootStepScalar
* ReciprocalStep, ReciprocalStepScalar
- Implements frecpe, frecps, frecpx, frsqrte, frsqrts, urecpe, ursqrte instructions
- Fixes implementation for fcmeq, fcmge, fcmgt, fcmle, fcmlt *(zero immediate)* instructions
- Adds missing flag BaseTypeFromFirstArg for AbsoluteDifference intrinsics