Michal Strehovský [Fri, 22 Jul 2022 21:32:44 +0000 (06:32 +0900)]
Add support for static default interface methods (#72661)
We were only supporting default interface methods in the sense of non-abstract virtuals. We now also support overrides.
What's missing is support for diamond/reabstraction. I thin we need to make throwing stubs that we can dispatch to - it doesn't look like the strategy used in the VM (`callsiteCalloutHelper`) can be used for prejit. I don't want to increase the scope of this pull request, so we invalidate the entire method that has such dispatch.
Eric Erhardt [Fri, 22 Jul 2022 20:41:09 +0000 (14:41 -0600)]
Disable ThrowDuringProcessLog_ShutsDownGracefully test (#72680)
This test has been failing a few times a day. Disabling until it can be investigated to pass consistently.
See #71242
Drew Kersnar [Fri, 22 Jul 2022 19:49:49 +0000 (14:49 -0500)]
Fix DivRem bug (#72115)
Dustin Campbell [Fri, 22 Jul 2022 19:22:12 +0000 (12:22 -0700)]
Add missing nullability annotation in CodeDom (#72532)
The `CodeTypeReference` constructors allow a `null` type name to be
provided, but one constructor was missed during annotation.
Simon Rozsival [Fri, 22 Jul 2022 18:54:00 +0000 (20:54 +0200)]
Disable failing System.Text.Json tests on Android x86 and on Browser with threading enabled (#72664)
* Disable tests failing on Android x86
* Disable test projects timing out on multi-threaded Browser lanes
* Disable more tests on Android x86
* Replace conditional fact with active issue
* Fix build
* Disable 5 additional failing Android x86 tests
Badre BSAILA [Fri, 22 Jul 2022 18:36:02 +0000 (20:36 +0200)]
PipeReaderStream.ReadInternal throws AggregateException unexpectedly (#70248)
* PipeReaderStream.ReadInternal throws AggregateException unexpectedly
* add unit test
* assert on error message
* Update src/libraries/System.IO.Pipelines/tests/PipeReaderStreamTests.nonnetstandard.cs
simplify task throwing exception
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Carlos Sanchez [Fri, 22 Jul 2022 18:08:29 +0000 (11:08 -0700)]
Bump Intellisense package version to Preview6 (#72631)
Lakshan Fernando [Fri, 22 Jul 2022 16:05:57 +0000 (09:05 -0700)]
Fix Globalization tests (#72653)
* Fix Globalization tests
* enable test in rolling runs
Jan Vorlicek [Fri, 22 Jul 2022 15:51:17 +0000 (17:51 +0200)]
Remove wrong cgroups assert (#72372)
* Remove wrong cgroups assert
When detecting the current cgroup version on Linux, checked and
debug builds assert when the filesystem type of /sys/fs/cgroup is
neither TMPFS_MAGIC nor CGROUP2_SUPER_MAGIC. This change removes
the assert and considers it as "no cgroup support".
Release builds already have this behavior.
Close #62960
* Update the nativeaot version too
Corcodel Iulia [Fri, 22 Jul 2022 15:31:22 +0000 (18:31 +0300)]
HTTP/3 Improved message for failing QUIC connection (#72374)
* [#70949 issue] Made test and added inner exception for uninformative
message
* Apply suggestions from code review
Co-authored-by: Marie Píchová <11718369+ManickaP@users.noreply.github.com>
Co-authored-by: Natalia Kondratyeva <knatalia@microsoft.com>
* Solving the rest of the coding review
* Update src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.Http3.cs
Co-authored-by: Natalia Kondratyeva <knatalia@microsoft.com>
Co-authored-by: iuliaco <t-icorcodel@microsoft.com>
Co-authored-by: Marie Píchová <11718369+ManickaP@users.noreply.github.com>
Co-authored-by: Natalia Kondratyeva <knatalia@microsoft.com>
Aaron Robinson [Fri, 22 Jul 2022 14:48:56 +0000 (07:48 -0700)]
Add `UnscopedRefAttribute` (#72499)
Vladimir Sadov [Fri, 22 Jul 2022 14:44:21 +0000 (07:44 -0700)]
[NativeAOT] Some cleanup of assembly helpers in hijack area. (#72542)
* remove RhpReversePInvokeAttachOrTrapThread (dead code)
* remove RhpWaitForGC
* removing some dead code
* remove unused extraStack parameter to PUSH_PROBE_FRAME
* make all working variants of RhpGcProbeHijack to have the same shape
* fix Unix build, tweak some comments
* check the trap flag in RhpGcProbeHijack
* add a stub for RhpGcStressHijack on Unix
* save flags for windows x64 should not have rdx
* not saving scratch registers on win-arm64
* PUSH_PROBE_FRAME on arm64
* couple comments
* make RhpGcProbeHijack responsible for setting PTFF_SAVE_ bits
* revert `RhpReversePInvokeAttachOrTrapThread2` change
* fix indentation
* made 32bit RhpGcStressHijack similar to 64bit counterparts
(as much as can be done without trying to compile and test)
* Renamed `RhpGcProbe` --> `RhpWaitForGC`
Jan Kotas [Fri, 22 Jul 2022 14:06:02 +0000 (07:06 -0700)]
Delete ConservativelyReportedRegion and CallingConventionConverterHelpers (#72659)
Yusuke Yamada [Fri, 22 Jul 2022 13:18:15 +0000 (22:18 +0900)]
Templates outputs ejs instead of cjs (#71951)
Stephen Toub [Fri, 22 Jul 2022 13:09:54 +0000 (09:09 -0400)]
Fix potential out-of-bounds array accesses in System.Data.Operators (#72654)
Radek Zikmund [Fri, 22 Jul 2022 12:40:38 +0000 (14:40 +0200)]
[QUIC] Support for OpenSSL build of MsQuic on Windows (Attempt 2) (#72609)
* Initial OpenSSL MsQuic support
* Don't check Windows version when OpenSSL is used
* Update src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/MsQuicApi.cs
Co-authored-by: Marie Píchová <11718369+ManickaP@users.noreply.github.com>
* Gracefully close the API handle before unloading the library
* Minor formatting change
* Update src/libraries/System.Net.Quic/src/System/Net/Quic/Internal/MsQuicApi.cs
Co-authored-by: Marie Píchová <11718369+ManickaP@users.noreply.github.com>
Co-authored-by: Marie Píchová <11718369+ManickaP@users.noreply.github.com>
Eirik Tsarpalis [Fri, 22 Jul 2022 11:08:44 +0000 (14:08 +0300)]
Fix #72614. (#72630)
Ilya Pospelov [Fri, 22 Jul 2022 10:17:17 +0000 (13:17 +0300)]
Additional tests for Generics in System.Text.Json.SourceGeneration (#72449)
* generic types tests
* test nested generic class serialization
Andy Gocke [Fri, 22 Jul 2022 08:22:41 +0000 (01:22 -0700)]
Simplify AppModel addToProject settings (#72072)
Johan Lorensson [Fri, 22 Jul 2022 07:44:45 +0000 (09:44 +0200)]
Fixes overwrite of last captured managed stack frame address in EventPipe stack trace. (#72362)
When collecting stack frames in EventPipe, buffer manager buffer layout
depends on the struct layout of the compiler up until data gets
serialized into blocks and put into output stream following nettrace
format.
In the past, there was a 1:1 map between the data collected for a stack
trace and what was copied into buffer manager memory. Due to inefficiency,
wasting a lot of memory when having small stack traces, this was
optimized by https://github.com/dotnet/runtime/pull/68134, greatly
reducing overhead and improved EventPipe throughput.
That change started to use a different struct when capturing the
callstack compared to the layout written into buffer manager.
Since buffer manager memory still relies on compiler struct layout,
code must take that into account when copying stack data into
buffer manager memory, but the new optimized implementation didn't,
meaning that it fails in cases where compiler adds padding inside
EventPipeStackContentsInstance (done on 64-bit bit systems).
That in turn will write event payload, starting 4 bytes into last
captured stack frame causing issues for tools to symbolicate address,
but payload data will still be correct, since EventPipeEventInstance
keeps pointer to payload data, meaning most of the event will still be
correct, covering up the overwrite to only affect last managed stack
frame and only on 64-bit release builds.
Fix adjust the size calculation and make sure it takes any padding
added by compiler into the computation of EventPipeEventInstance size.
Natalia Kondratyeva [Fri, 22 Jul 2022 06:24:51 +0000 (23:24 -0700)]
Fix HttpConnectionPool timers race on disposal (#72615)
Access _authorityExpireTimer and _altSvcBlocklistTimerCancellation under lock and check for disposed.
Fixes #66782.
Mike McLaughlin [Fri, 22 Jul 2022 06:08:43 +0000 (23:08 -0700)]
Add GCDescs in front of MethodTable to dumps (#72658)
* Add GCDescs in front of MethodTable to dumps
* Make DacValidateMethodTable more bullet proof by DAC'ifing the MethodTable pointer (using PTR_MethodTable). On Windows,
SEH can catch the native AV exceptions but on Linux/MacOS this can crash lldb/SOS on invalid MT addresses.
This will also help with eestack/dumpstack crashing lldb also.
Radek Doulik [Fri, 22 Jul 2022 03:06:33 +0000 (05:06 +0200)]
[wasm] Return int from console template (#72623)
Also update the template tests to test that it propagates correctly as
an exit code from the node process.
Tarek Mahmoud Sayed [Fri, 22 Jul 2022 01:57:08 +0000 (18:57 -0700)]
Port the doc changes to source (#72638)
* Port the doc changes to source
* Address the feedback
* Update src/libraries/System.ComponentModel.TypeConverter/src/System/ComponentModel/DateOnlyConverter.cs
Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
* Remove duplicated summary section
* reorder the doc elements
* reorder the remaining doc elements
Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
Eric Erhardt [Fri, 22 Jul 2022 01:43:06 +0000 (19:43 -0600)]
Correct nullable annotation on ICustomTypeDescriptor.GetConverter (#72629)
The documentation, and even some of our own code, return null for this method. Correcting the nullable annotation to indicate that null can be returned.
Fix #69229
Stephen Toub [Fri, 22 Jul 2022 01:09:02 +0000 (21:09 -0400)]
Clear list in Enumerable.Chunk prior to yielding (#72637)
To avoid the iterator keeping alive references unnecessarily. If the consumer takes their time in processing the resulting array and nulls out values as they go, we don't want the list referenced by the enumerator still keeping those objects referenced.
Qiao Pengcheng [Fri, 22 Jul 2022 01:02:35 +0000 (09:02 +0800)]
amend the LoongArch64-ABI for GCstress and NullableObject. (#72573)
Jeremy Barton [Fri, 22 Jul 2022 00:38:08 +0000 (17:38 -0700)]
Disable NoStapledOcsp test on Debian 10 for now. (#72634)
Zoltan Varga [Thu, 21 Jul 2022 23:32:50 +0000 (19:32 -0400)]
[mono][aot] Don't fail AOT for methods referencing fnptr classes. (#72574)
Really fixes https://github.com/dotnet/runtime/issues/72460.
github-actions[bot] [Thu, 21 Jul 2022 23:32:33 +0000 (16:32 -0700)]
Sync shared code from aspnetcore (#72588)
dotnet-maestro[bot] [Thu, 21 Jul 2022 22:26:17 +0000 (15:26 -0700)]
[main] Update dependencies from dotnet/arcade (#72178)
* Update dependencies from https://github.com/dotnet/arcade build
20220713.1
Microsoft.DotNet.ApiCompat , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 7.0.0-beta.22362.1 -> To Version 7.0.0-beta.22363.1
* Update dependencies from https://github.com/dotnet/arcade build
20220714.1
Microsoft.DotNet.ApiCompat , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 7.0.0-beta.22362.1 -> To Version 7.0.0-beta.22364.1
* Update dependencies from https://github.com/dotnet/arcade build
20220715.4
Microsoft.DotNet.ApiCompat , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 7.0.0-beta.22362.1 -> To Version 7.0.0-beta.22365.4
* Update dependencies from https://github.com/dotnet/arcade build
20220717.1
Microsoft.DotNet.ApiCompat , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 7.0.0-beta.22362.1 -> To Version 7.0.0-beta.22367.1
* Update dependencies from https://github.com/dotnet/arcade build
20220718.5
Microsoft.DotNet.ApiCompat , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 7.0.0-beta.22362.1 -> To Version 7.0.0-beta.22368.5
* Update dependencies from https://github.com/dotnet/arcade build
20220719.9
Microsoft.DotNet.ApiCompat , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 7.0.0-beta.22362.1 -> To Version 7.0.0-beta.22369.9
* Update dependencies from https://github.com/dotnet/arcade build
20220720.1
Microsoft.DotNet.ApiCompat , Microsoft.DotNet.Arcade.Sdk , Microsoft.DotNet.Build.Tasks.Archives , Microsoft.DotNet.Build.Tasks.Feed , Microsoft.DotNet.Build.Tasks.Installers , Microsoft.DotNet.Build.Tasks.Packaging , Microsoft.DotNet.Build.Tasks.TargetFramework , Microsoft.DotNet.Build.Tasks.Templating , Microsoft.DotNet.Build.Tasks.Workloads , Microsoft.DotNet.CodeAnalysis , Microsoft.DotNet.GenAPI , Microsoft.DotNet.GenFacades , Microsoft.DotNet.Helix.Sdk , Microsoft.DotNet.PackageTesting , Microsoft.DotNet.RemoteExecutor , Microsoft.DotNet.SharedFramework.Sdk , Microsoft.DotNet.VersionTools.Tasks , Microsoft.DotNet.XUnitConsoleRunner , Microsoft.DotNet.XUnitExtensions
From Version 7.0.0-beta.22362.1 -> To Version 7.0.0-beta.22370.1
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Zoltan Varga [Thu, 21 Jul 2022 21:14:58 +0000 (17:14 -0400)]
[mono][aot] Pass -mattr=crc32 to opt/llc when sse4.2 is enabled and using llvm 14. (#72579)
Andy Gocke [Thu, 21 Jul 2022 21:12:19 +0000 (14:12 -0700)]
Revert "Always use live host (#71725)" (#72628)
This reverts commit
c4277b99ef2b623dca6ed2c1427890855e3deced.
Ivan Diaz Sanchez [Thu, 21 Jul 2022 21:01:45 +0000 (14:01 -0700)]
Clarified documentation regarding building the Core_Root. (#72560)
* Added a note emphasizing Libraries have to be built in Release mode to generate the Core_Root.
* Corrected a statement regarding libraries' configuration.
Co-authored-by: Seeker186 <101211595+Seeker186@users.noreply.github.com>
Tlakaelel Axayakatl Ceja [Thu, 21 Jul 2022 20:47:55 +0000 (13:47 -0700)]
Support for RequiresAttributeMismatch testing (#72496)
The RequiresAttributeMismatch warnings were not being generated since one of the answers from the MultiFileSharedCompilatioModuleGroup was to generate Vtables from everything. The logic for checking for warning mismatch is gated by not having a vtable being generated so needed to create a copy of the MultiFileSharedCompilationModuleGroup for testing purposes. Adding testing also unveils some issues with the current way of producing warnings in NativeAOT that are addressed in this PR.
- Create a copy of the MultiFileSharedCompilationModuleGroup into the test infrastructure
- Default answer of ShouldProduceFullVTable to false in the TestInfraMultiFileSharedCompilationModuleGroup, otherwise, the logic for checking for mismatch in NativeAOT will not work as currently implemented.
- Property names don't need parenthesis, escape before they are added.
- Small fix when ExplicitInterface names are used, cannot rely on name starting with get_/set_ in all cases.
- Additional RUC warning check when a method is marked via DAM and is not TypeHierarchy marking
- Adds RequiresAttributeMismatch test file from linker (includes adding NativeAOT specific ProducedBy attributes)
Stephen Toub [Thu, 21 Jul 2022 20:38:29 +0000 (16:38 -0400)]
Avoid AsyncLocal read in Activity.set_Current when CurrentChanged isn't handled (#72621)
Jeremy Koritzinsky [Thu, 21 Jul 2022 20:38:06 +0000 (13:38 -0700)]
Allow not finding attribute data for more cases that we don't care about (#72620)
* Allow not finding attribute data for more cases that we don't care about
This will fix the upstream repo intake of dotnet/runtime by allowing us to fall back to null for cases where Roslyn does things that we aren't expecting with the "ContainingSymbol" value.
* Update test
Zoltan Varga [Thu, 21 Jul 2022 20:33:53 +0000 (16:33 -0400)]
[mono] Pass the pending exception correctly from interp_runtime_invoke (). (#72126)
Fixes https://github.com/dotnet/runtime/issues/71838.
Brennan [Thu, 21 Jul 2022 20:08:47 +0000 (13:08 -0700)]
[RateLimiting] Fix test race with timer (#72118)
Pavel Savara [Thu, 21 Jul 2022 19:07:14 +0000 (21:07 +0200)]
[wasm] bump npm packages, fix lint errors (#72600)
* bump npm packages, fix lint errors
* document
Jeremy Barton [Thu, 21 Jul 2022 18:38:24 +0000 (11:38 -0700)]
Add ease of use helpers in X.509
Youssef Victor [Thu, 21 Jul 2022 18:32:51 +0000 (20:32 +0200)]
Assert compiler diagnostics in UpgradeToRegexGeneratorAnalyzerTests and simplify tests (#72580)
* Assert compiler diagnostics in UpgradeToRegexGeneratorAnalyzerTests
* Simplify tests
Jan Kotas [Thu, 21 Jul 2022 18:19:56 +0000 (11:19 -0700)]
Sleep infinitely on secondary crashing threads (#72618)
Sleeping infinitely instead of continuing should be better for crash reporting reliability.
Also, change the crashing thread detection to use thread ID instead of Thread*. It is fixing bogus "Fatal error while logging another fatal error." message when the crash occurs without Thread* being setup.
Stephen Toub [Thu, 21 Jul 2022 18:11:54 +0000 (14:11 -0400)]
Disable NamedPipeTest_ServerInOut_ClientInOut_Synchronous test configuration (#72613)
* Disable NamedPipeTest_ServerInOut_ClientInOut_Synchronous test configuration
This variation was named pipes stream conformance tests was just introduced and appears to be unstable, resulting in multiple tests hanging frequently.
* Update PipeStreamConformanceTests.cs
Stephen Toub [Thu, 21 Jul 2022 18:11:29 +0000 (14:11 -0400)]
Improve RegexCharClass.Analyze for sets with subtraction (#72328)
* Improve RegexCharClass.Analyze for sets with subtraction
Character classes containing subtraction are currently skipped in RegexCharClass.Analyze as it depends on CanEasilyEnumerateSetContents, which in turn bails for sets with subtraction. Most of the calls to CanEasilyEnumerateSetContents can't deal with subtraction as they require an exact answer (e.g. GetSetChars needs to enumerate the ranges to yield those and only those characters that match). But Analyze is fine producing an overestimate, and since subtraction can only ever narrow the set of what's accepted, we can simply ignore subtraction in Analyze. This is useful because RegexCompiler and source generator have multiple optimizations that kick in based on the results of Analyze. For example, today the set `[a-z-[aeio]` would still produce a fall back path for non-ASCII, even though the ranges highlight that the only accepted values are ASCII... with this change, that fallback won't be needed. Similarly, a set with subtraction but only Unicode ranges could now end up satisfying various optimizations, like using a 64-bit lookup table if the range of accepted characters is no larger than that.
* Add RegexCharClass.Analyze unit tests
Also improve Analyze to handle a few more cases
Stephen Toub [Thu, 21 Jul 2022 17:30:30 +0000 (13:30 -0400)]
Fix TwoServerInstances_OnceDisposed_Throws test for non-overlapped I/O (#72617)
Stephen Toub [Thu, 21 Jul 2022 17:28:18 +0000 (13:28 -0400)]
Fix accidentally removed Add in TypeSpec.AddModifier (#72605)
Tarek Mahmoud Sayed [Thu, 21 Jul 2022 17:14:23 +0000 (17:14 +0000)]
Fix minor triple slash comment (#72569)
Jakob Botsch Nielsen [Thu, 21 Jul 2022 16:41:15 +0000 (18:41 +0200)]
Fix x86 GCStress race with indirect calls before epilogs (#72592)
For partially interruptible methods there is a mismatch between where GC
stress runs GCs and where normal return address hijacking would run GCs.
GC stress runs the GC on the first instruction after a call returns,
where there for partially interruptible methods is no GC info that says
to protect GC pointers in return registers. It means GC stress needs to
do some special work to figure out that these need to be protected.
The way it does that is the following:
* For direct call sites, in GCCoverageInfo::SprinkleBreakpoints it gets
the target MD of each call site and places a special illegal
instruction right after the call that the GC stress handler will use
to figure out which (if any) registers have GC pointers that need
protection
* For indirect call sites, in GCCoverageInfo::SprinkleBreakpoint it will
first place an illegal instruction on the call instruction so that the
GC stress handler will break there. Once the GC stress handler breaks,
it computes the target address and gets the target MD from that, and
then places the illegal instruction on the next instruction like
above.
GCCoverageInfo::SprinkleBreakpoints runs right after jitting and should
therefore not race with anything. However, the GC stress handler can
race with any other thread accessing the same function. That makes the
latter problematic on x86 where unwinding reads the epilog code to work.
In this particular case thread A is about to unwind through the epilog
when thread B stops on an indirect call right before the epilog. Thread
B then overwrites the first instruction of the epilog, causing thread A
to unwind incorrectly.
UnwindStackFrame already has access to the GC stress saved code and is
actually already using it for other unwinding. To fix the issue, make it
use the saved code for unwinding epilogs as well.
Fix #68431
Pahontu Stefan-Alin [Thu, 21 Jul 2022 16:35:19 +0000 (19:35 +0300)]
[wasm] add new interop to the console template (#72375)
* first try for wasm console template
* removed unnecessary references
* modified initial .csproj file
* Delete console.csproj
* solved formatting and fixed failing test
* solved failing tests
* fixed styling
* simplified updating of Program.cs
* removed unnecessary files
* used string.replace instead of regex
Co-authored-by: Stefan Pahontu <t-spahontu@microsoft.com>
Stephen Toub [Thu, 21 Jul 2022 16:19:11 +0000 (12:19 -0400)]
Clean up #nullable in source (#72568)
We had dozens of uses of `#nullable disable` left in source in places we shouldn't have, resulting in lack of annotation in sources we'd declared NRT-enabled. We also had dozens of use of `#nullable enable` in source it shouldn't have been in, resulting in us actually shipping public annotations in code we didn't fully review for that purpose (e.g. some types in CodeDom). This cleans all of that up, removing unnecessary #nullables in the source.
This also now defaults test projects to `<Nullable>annotations</Nullable>`. Test projects often include annotated files shared with product source, and while we generally don't require test projects be NRT-enabled, they can be tolerant of the annotations; we don't ship them, so we don't need to be concerned about what annotations show up on public types in test assemblies.
Lakshan Fernando [Thu, 21 Jul 2022 15:58:49 +0000 (08:58 -0700)]
Annotating System.Formats.Asn1 library for Aot (#72533)
* Annotating System.Formats.Asn1 library for Aot
* FB
* Update src/libraries/System.Formats.Asn1/src/System.Formats.Asn1.csproj
* Update src/libraries/System.Formats.Asn1/src/System.Formats.Asn1.csproj
* enabling the tests by exluding not supported scenarios
* changed the failing tests to be disabled under an active bug
* update the bug number
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Anton Firszov [Thu, 21 Jul 2022 15:55:55 +0000 (17:55 +0200)]
Fix HttpStress build (#72601)
Brennan [Thu, 21 Jul 2022 15:53:04 +0000 (08:53 -0700)]
Add TranslateKey to PartitionedRateLimiter (#69407)
Brennan [Thu, 21 Jul 2022 15:51:28 +0000 (08:51 -0700)]
Avoid empty segments from PipeReader.ReadAsync (#72536)
Radek Zikmund [Thu, 21 Jul 2022 15:42:18 +0000 (17:42 +0200)]
Disable long running ReadAsync_CancelPendingTask_ThrowsCancellationException tests for some Http1 cases (#72596)
Andy Ayers [Thu, 21 Jul 2022 15:29:00 +0000 (08:29 -0700)]
JIT: hash lookup vn func before trying to optimize (#72576)
Always consult the func hash table before trying to optimize, and record the
optimized result in the hash table.
Also found a few more cases where we can defer work on a VN pair when the
liberal and conservative VNs match.
Elinor Fung [Thu, 21 Jul 2022 14:02:41 +0000 (07:02 -0700)]
Warn on trimming with COM hosting (built-in COM support) enabled (#72493)
Ilona Tomkowicz [Thu, 21 Jul 2022 11:11:59 +0000 (13:11 +0200)]
Enable string properties evaluation of Length and Char[]. (#67028)
* Testcases.
* Fixed indexing property and length property.
* Fixed changes from https://github.com/dotnet/runtime/pull/67095 that I broke sometime when merging.
* Granted objectId to string: properties and methods on strings are evaluated the similarly as on objects.
* Removed the comments.
* Fixed EvaluateMethodsOnPrimitiveTypesReturningObjects on Firefox.
* Disabled firefox test https://github.com/dotnet/runtime/issues/70819.
* Fixed the test build error.
* Full names to fix the tests.
Zoltan Varga [Thu, 21 Jul 2022 10:37:21 +0000 (06:37 -0400)]
[mono] Fix https://github.com/dotnet/runtime/issues/72519. (#72563)
SingleAccretion [Thu, 21 Jul 2022 10:29:54 +0000 (13:29 +0300)]
Do not assume return type ABIs match in `RETURN(CALL)` (#72285)
* Do not assume calling conventions match
When importing GT_RETURN.
* Add a test
* Disable the test on Mono
Jakob Botsch Nielsen [Thu, 21 Jul 2022 10:08:38 +0000 (12:08 +0200)]
JIT: Move cpblk GC ref layout check back to lowering (#72516)
The check in codegen runs only for arm64 but this check needs to happen
for arm32 as well. This moves the GC ref layout check back to lowering
and aligns it with xarch as well.
Fix #69976
Egor Bogatov [Thu, 21 Jul 2022 09:30:21 +0000 (11:30 +0200)]
Fix "cns".StartsWith bug (#72558)
dotnet-maestro[bot] [Thu, 21 Jul 2022 08:32:43 +0000 (01:32 -0700)]
[main] Update dependencies from dotnet/linker (#72257)
* Update dependencies from https://github.com/dotnet/linker build
20220714.1
Microsoft.NET.ILLink.Tasks
From Version 7.0.100-1.22362.3 -> To Version 7.0.100-1.22364.1
* Update dependencies from https://github.com/dotnet/linker build
20220715.1
Microsoft.NET.ILLink.Tasks
From Version 7.0.100-1.22362.3 -> To Version 7.0.100-1.22365.1
* Fix warning in lambda body
* Update dependencies from https://github.com/dotnet/linker build
20220718.1
Microsoft.NET.ILLink.Tasks
From Version 7.0.100-1.22362.3 -> To Version 7.0.100-1.22368.1
* Update dependencies from https://github.com/dotnet/linker build
20220719.1
Microsoft.NET.ILLink.Tasks
From Version 7.0.100-1.22362.3 -> To Version 7.0.100-1.22369.1
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
Co-authored-by: Sven Boemer <sbomer@gmail.com>
Johan Lorensson [Thu, 21 Jul 2022 08:16:30 +0000 (10:16 +0200)]
[Mono]: Fix infrequent infinite loop on Mono EventPipe streaming thread. (#72517)
* Fix infrequent infinite loop on Mono EventPipe streaming thread.
As observed by https://github.com/dotnet/runtime/issues/59296, EventPipe
streaming thread could infrequently cause an infinite loop on Mono
when cleaning up stack hash map, ep_rt_stack_hash_remove_all called
from ep_file_write_sequence_point, flushing buffer memory into file stream.
Issue only occurred on Release builds and so far, only observed on OSX,
and reproduced in 1 of around 100 runs of the test suite.
After debugging the assembler when hitting the hang, it turns out that
one item in the hash map has a hash key, that doesn't correspond
to its hash bucket, this scenario should not be possible
since items get placed into buckets based on hash key value that
doesn't change for the lifetime of the item. This indicates that
there is some sort of corruption happening to the key, after it
has been added to the hash map.
After some more instrumentation it turns out that insert into the
hash map infrequently triggers a replace, but Mono hash table used in
EventPipe is setup to insert without replace, meaning it will keep old
key but switch and free old value. Stack has map uses same memory
for its key and value, so freeing the old value will also free the key,
but since old key is kept, it will point into freed memory and future
reuse of that memory region will cause corruption of the hash table key.
This scenario should not be possible since EventPipe code will only add
to the hash map, if the item is not already in the hash map. After some
further investigation it turns out that the call to ep_rt_stack_hash_lookup
reports false, while call to ep_rt_stack_hash_add for the same key
will hit replace scenario in g_hash_table_insert_replace.
g_hash_table_insert_replace finds item in the hash map, using callbacks for
hash and equal of hash keys. It turns out that the equal callback is defined to return
gboolean, while the callback implementation used in EventPipe is defined to return
bool. gboolean is typed as int32_t on Mono and this is the root cause of the complete issue.
On optimized OSX build (potential on other platforms) the callback will do a memcmp
(updating full eax register) and when returning from callback, callback will only update
first byte of eax register to 0/1, keeping upper bits, so if memcmp returns negative value
or a positive value bigger than first byte, eax will contains garbage in byte 2, 3 and 4,
but since Mono's g_hash_table_insert_replace expects gboolean, it will
look at complete eax content meaning if any of the bits in byte 2, 3 or 4 are still set,
condition will still be true, even if byte 1 is 0, representing false, incorrectly trigger the
replace logic, freeing the old value and key opening up for future corruption of the key,
now reference freed memory.
Fix is to make sure the callback signatures used with hash map callbacks,
match expected signatures of underlying container implementation.
Fix also adds a checked build assert into hash map’s add implementation
on Mono validating that the added key is not already contained in the hash map
enforcing callers to check for existence before calling add on hash map.
Carlos Sanchez [Thu, 21 Jul 2022 07:34:40 +0000 (00:34 -0700)]
Remove code duplication in TarHeader class (#72501)
* Missing ConfigureAwait(false) in await using.
* Remove argument from TarSizeFieldNegative exception resource string.
* TarHeader.TryGetNextHeaderAsync: Reduce duplication.
* TarHeader.ReadExtendedAttributesBlockAsync: reduce duplication.
* TarHeader.ReadGnuLongPathDataBlockAsync: reduce duplication.
* TarHeader.ReadExtendedAttributesFromBuffer: reduce duplication.
* TarHeader.WriteAsV7Async: Reduce duplication.
* TarHeader.WriteAsUstarAsync: reduce duplication.
* TarHeader.*Pax*Async: reduce duplication.
* TarHeader.WriteAsGnuAsync: reduce duplication.
* Use pretty switch for async writing. Move the sync version to its own method, to keep similar logic close by.
* checksum => tmpChecksum for consistency with other similar methods.
* Add ExtendedAttributes non-nullable property that initializes private nullable property if needed.
* Remove unnecessary buffer cleaning call.
Co-authored-by: carlossanlop <carlossanlop@users.noreply.github.com>
Dan Moseley [Thu, 21 Jul 2022 07:05:19 +0000 (01:05 -0600)]
Fix flaky PhysicalFileProviderTests (#72553)
Jan Kotas [Thu, 21 Jul 2022 03:32:26 +0000 (20:32 -0700)]
Fix hang caused by calling Environment.FailFast on multiple threads (#72566)
Fixes #72565
MSDN.WhiteKnight [Thu, 21 Jul 2022 02:43:00 +0000 (07:43 +0500)]
Add markdown readme for System.Reflection.Metadata (#71925)
* Update System.Reflection.Metadata.csproj
Co-authored-by: Theodore Tsirpanis <teo@tsirpanis.gr>
Andy Ayers [Thu, 21 Jul 2022 00:21:59 +0000 (17:21 -0700)]
JIT: speed up VNPairForFunc (#72527)
No need to call VNForFunc twice, if liberal and conservative VNs agree.
Youssef Victor [Wed, 20 Jul 2022 22:22:57 +0000 (00:22 +0200)]
Delete reachable Debug.Fail in regex generator codefix (#72534)
* Delete reachable Debug.Fail in regex generator codefix
* Simplify test
* Add test for local constant
* Address feedback
Aaron Robinson [Wed, 20 Jul 2022 22:17:24 +0000 (15:17 -0700)]
[mono] ThisCall with no arguments is invalid (#72495)
* [mono] ThisCall with no arguments is invalid
* Disable test on llvmfullaot
Eirik Tsarpalis [Wed, 20 Jul 2022 21:39:00 +0000 (00:39 +0300)]
Update DebuggerDisplay for metadata types & JsonSerializerOptions (#72524)
* Update DebuggerDisplay for metadata types & JsonSerializerOptions
* address feedback
Jeremy Koritzinsky [Wed, 20 Jul 2022 21:05:24 +0000 (14:05 -0700)]
Fix finding attribute data for syntax for assembly/module symbols (#72535)
Jeremy Barton [Wed, 20 Jul 2022 20:56:34 +0000 (13:56 -0700)]
Add missing <returns> documentation to NonCryptographicHashAlgorithm
Michal Strehovský [Wed, 20 Jul 2022 20:39:01 +0000 (05:39 +0900)]
Generate SerializeHandler as an instance method (#72510)
Fixes #61448.
Aleksey Kliger (λgeek) [Wed, 20 Jul 2022 19:51:02 +0000 (15:51 -0400)]
[wasm] Dev loop incremental build fixups (#72502)
1. Look for changes to `*.ts` files in subdirectories, now that we
have code in subdirectories in `src/mono/wasm/runtime`
2. Write the rollup `--environment` argument to a file in
artifacts/obj and use it as an input to the `BuildWithRollup` target.
That will cause wasm.proj to re-run rollup if we pass different values
for properties that affect the environment. Some of those values are
used as const inputs to rollup tree-shaking and can affect the final
contents of dotnet.js
dotnet bot [Wed, 20 Jul 2022 19:25:58 +0000 (12:25 -0700)]
Localized file check-in by OneLocBuild Task: Build definition ID 679: Build ID 1892163 (#72508)
Mukund Raghav Sharma (Moko) [Wed, 20 Jul 2022 19:03:24 +0000 (12:03 -0700)]
Fix for m_alignpad == 0 assertion failure (#72475)
* Added fix for m_alignpad == 0 assertion failure
* Improved logging
* Replaced logging with StressLog and tested to make sure the values show up
Adeel Mujahid [Wed, 20 Jul 2022 18:46:31 +0000 (21:46 +0300)]
Update llvm-libunwind from v9.0.0 to v14.0.6 (#72442)
* Delete src/native/external/llvm-libunwind
* Add LLVM libunwind-14.0.6
* Apply all patches from 3719058
* Disable DynamicGenerics tests
* Update llvm-libunwind-version.txt
* Revert "Disable DynamicGenerics tests"
This reverts commit
ef0164fd669626343c73972f62d0a15e0dd9ffd9.
* make the codeOffset check in parseFDEInstructions end-inclusive
* Update src/native/external/llvm-libunwind-version.txt
Co-authored-by: vsadov <8218165+VSadov@users.noreply.github.com>
Pavel Savara [Wed, 20 Jul 2022 18:26:01 +0000 (20:26 +0200)]
fix typos (#72515)
Aaron Robinson [Wed, 20 Jul 2022 18:24:10 +0000 (11:24 -0700)]
Update /// comments for new InteropServices APIs (#72473)
* Update /// for official documentation.
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Co-authored-by: Elinor Fung <elfung@microsoft.com>
Co-authored-by: Jeremy Koritzinsky <jkoritzinsky@gmail.com>
Steve Pfister [Wed, 20 Jul 2022 17:51:15 +0000 (10:51 -0700)]
[iOS] Use different tvOS helix queue for PR's (#72467)
Up until now, we have used a single tvOS queue for all pipelines. This has lead to frequent timeouts because there simply aren't enough devices to handle spikes in traffic. We will now make use of two queues, one for runtime (PR's) and one for runtime-extra-platforms (scheduled jobs, manual runs). Since we are only running System.Runtime tests on PR's, we should see PR timeouts much less.
Lakshan Fernando [Wed, 20 Jul 2022 16:01:41 +0000 (09:01 -0700)]
[NativeAot] Fixing Resources.Reader and ComponentModel tests (#72497)
* Fixing Resources.Reader and ComponentModel tests
* enable the tests in proj file
* FB
Stephen Toub [Wed, 20 Jul 2022 15:18:48 +0000 (11:18 -0400)]
Enable cancellation for anonymous pipes and non-async named pipes on Windows (#72503)
* Enable cancellation for anonymous pipes and non-async named pipes on Windows
Although ReadAsync, WriteAsync, and WaitForConnectionAsync on pipes all accept a CancellationToken, that token is only usable on Windows for canceling an in-flight operation when the pipe is using overlapped I/O. If the pipe was created for non-overlapped I/O, as is the case for anonymous pipes and can be the case for named pipes, the token stops being useful for anything other than an up-front cancellation check.
This change fixes that by using CancelSynchronousIo to cancel the synchronous I/O performed as part of these async operations, which are implemented as async-over-sync (queueing to the thread pool a work item that performs the synchronous I/O).
(The Unix implementation already supports cancellation in these situations.)
* Address PR feedback (tweak comments)
Youssef Victor [Wed, 20 Jul 2022 14:33:55 +0000 (16:33 +0200)]
Compare symbols instead of fully qualified name (#72507)
Jakob Botsch Nielsen [Wed, 20 Jul 2022 14:15:19 +0000 (16:15 +0200)]
Mark b311420 test GC Stress incompatible on all platforms (#72444)
Fix #71593
Michael Simons [Wed, 20 Jul 2022 13:23:31 +0000 (08:23 -0500)]
Remove hard-coded RunAnalyzer property in JSImportGenerator (#72487)
Jakob Botsch Nielsen [Wed, 20 Jul 2022 12:53:36 +0000 (14:53 +0200)]
Fix pri1 test build (#72520)
Eirik Tsarpalis [Wed, 20 Jul 2022 11:49:13 +0000 (14:49 +0300)]
Ensure metadata originating from converters is surfaced while JsonTypeInfo is mutable. (#72483)
Simon Rozsival [Wed, 20 Jul 2022 09:49:36 +0000 (11:49 +0200)]
[Android] Fix some System.Net tests (#71385)
* Implement IncludeNetworkSecurityConfig
* Use IncludeNetworkSecurityConfig
* Fix tests
* Remove active issue attributes
* Rename certificate file
* Revert unnecessary changes
* TMP: re-throw caught exception to reveal more information in logs
* Revert "TMP: re-throw caught exception to reveal more information in logs"
This reverts commit
039d051d6ac60c1c3f1baf37b0c06872f87cac84.
* TMP: add and update res folders until they are merged into runtime-assets
* Fix System.Net.Requests tests
* Re-enable System.Net.Http functional tests
* Try fixing failing test
* Skip failing test
* Add missing using
* Remove temporary test data
* Relax exception type assertion for Android
* Code cleanup
* Fix test failures in System.Net.WebSockets.Client.Tests
* Remove active issue attribute
* Remove most explicit usages of the server certificate custom validation callback in tests
* Fix several tests
* Remove weird condition
* Code clean-up
* Remove unrelated active issue attributes
* Turn ActiveIssue attributes into permanent SkipOnPlatform
* Update explanation for SkipOnPlatform
* Revert partial fix and keep active issue
* Keep active issue for android x64 and x86
* Remove invalid attribute
* Fix test on Browser
* Allow all certificates by default
* Fix build
* Fix http client handler factory on Browser
* Skip failing test
* Fix net48 build
* Revert unintentional change in WinHttpHandler tests
* Avoid using unsupported property on Browser
* Remove unnecessary default value
* Avoid using unsupported property on Browser
Jakob Botsch Nielsen [Wed, 20 Jul 2022 08:13:25 +0000 (10:13 +0200)]
Update NuGet reference versions (#72451)
These references were still pulling in Newtonsoft.Json 9.0.1 causing
governance problems.
Also update a Microsoft.Build.Tasks.Core reference to use our defined
property for it.
Zoltan Varga [Wed, 20 Jul 2022 04:04:47 +0000 (00:04 -0400)]
[mono][jit] Fix an infinite loop in the abcrem pass. (#72213)
* [mono][jit] Fix an infinite loop in the abcrem pass.
Fixes https://github.com/dotnet/runtime/issues/71592.
* Add a test.
Jeremy Barton [Wed, 20 Jul 2022 03:43:07 +0000 (20:43 -0700)]
Add X509 SAN extension and RFC6125 MatchesHostname (#72304)
* Add X509 SAN extension and RFC6125 MatchesHostname
* Address feedback
* Make macOS happy
* Make macOS happier
* Small test enhancements
* Add new X.509 extensions into CryptoConfig tests
* Apply feedback
* Clarify the position on SRV-ID and URI-ID matching in API docs and tests
* Add some more IPv6 tests
* Delete a now-redundant test
* Change a dead if to an assert.
Mitchell Hwang [Wed, 20 Jul 2022 03:37:55 +0000 (23:37 -0400)]
[libs] Add EventSourceSupport to CountersTest (#72484)
Kevin Jones [Wed, 20 Jul 2022 03:37:02 +0000 (23:37 -0400)]
Move UnsupportedOSPlatform from class to methods for MD5 and HMACMD5 (#72488)
* Move UnsupportedOSPlatform from class to methods for MD5 and HMACMD5
* Code review feedback
Dan Moseley [Wed, 20 Jul 2022 03:35:57 +0000 (21:35 -0600)]
Update recursive resource load message (#72480)
* Update recursive resource load message
* simplify
* Update src/libraries/System.Private.CoreLib/src/System/SR.cs
Co-authored-by: Stephen Toub <stoub@microsoft.com>
* break
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Jan Vorlicek [Wed, 20 Jul 2022 03:34:19 +0000 (05:34 +0200)]
Fix PAL GetFullPathNameA test3 (#72492)
This test had a missing path separator character.
Jose Perez Rodriguez [Wed, 20 Jul 2022 02:25:58 +0000 (21:25 -0500)]
Adding rust tests for match boundaries (#72490)
Jeremy Koritzinsky [Wed, 20 Jul 2022 02:21:45 +0000 (19:21 -0700)]
Add analyzer for validating NativeMarshallingAttribute and parameters of CustomMarshallerAttribute (#72299)
* Remove unused resource strings
* Update analyzer to check for correct usage of NativeMarshallingAttribute and MarshalUsingAttribute
* Fix a few bugs in the nested generics handling. Move all generic resolution into specialized functions in ManualTypeMarshallingHelper.
Enable using a marshaller entry-point type that has marshallers for more than one managed type.
* Split the NativeMarshallingAttribute analyzer and the CustomMarshallerAttribute analyzer into separate analyzers.
Add more tests for more generic arity scenarios.
* PR feedback and add a test to the generator suite to validate that the generator can use the improved generics handling.
* Rename tests and reword comment.