Zoltan Varga [Thu, 24 Sep 2020 16:17:17 +0000 (12:17 -0400)]
Ongoing work on the cmake build. (#42647)
* Fix some warnings.
* Avoid creating netcore/config.make.
* Fix CPU_COUNT test.
* Add missing source file.
Nathan Ricci [Thu, 24 Sep 2020 16:15:08 +0000 (12:15 -0400)]
[Mono] [GC] Fix TotalBytesAllocated and reenable test (#42388)
* Account for bytes in tlab when a thread detaches.
Stephen Toub [Thu, 24 Sep 2020 15:46:09 +0000 (11:46 -0400)]
Expose StackTraceHiddenAttribute publicly (#42632)
* Expose StackTraceHiddenAttribute publicly
* Add hiding tests
Geoff Kizer [Thu, 24 Sep 2020 15:37:00 +0000 (08:37 -0700)]
add SocketsHttpHandler.PlaintextStreamFilter (#42660)
Carol Eidt [Thu, 24 Sep 2020 15:16:32 +0000 (08:16 -0700)]
Interleave GC Info with assembly (#42552)
* Interleave GC Info with assembly
Output GC info deltas *after* the instruction (or label) that changes it.
Add `COMPlus_JitDisasmWithGC` option to turn on the interleaving with assembly.
Fix #41647
Santiago Fernandez Madero [Thu, 24 Sep 2020 13:54:00 +0000 (08:54 -0500)]
Update intellisense package version to RC2 (#42220)
* Update intellisense package version to RC2
* Update intellisense package.
Co-authored-by: Carlos Sanchez <1175054+carlossanlop@users.noreply.github.com>
Co-authored-by: Carlos Sanchez <1175054+carlossanlop@users.noreply.github.com>
Tomas Weinfurt [Thu, 24 Sep 2020 13:13:04 +0000 (06:13 -0700)]
Fix spelling errors in SslStream (#42662)
Viktor Hofer [Thu, 24 Sep 2020 12:27:24 +0000 (14:27 +0200)]
Print help for -? and /? cross-plat (#42396)
* Print help for -? and /? cross-plat
Jan Kotas [Thu, 24 Sep 2020 09:38:23 +0000 (02:38 -0700)]
Use function pointers in crossgen2 (#42655)
Co-authored-by: Adeel Mujahid <adeelbm@outlook.com>
Jan Vorlicek [Thu, 24 Sep 2020 08:31:54 +0000 (10:31 +0200)]
Compile test framework using R2RTest (#42617)
This change switches crossgening of framework when building coreclr
tests to using R2RTest instead of explicitly invoking crossgen /
crossgen2.
To support that, the R2RTest was slightly updated to support specifying
target architecture, full path to crossgen2 and overriding the output
directory.
imhameed [Thu, 24 Sep 2020 08:07:13 +0000 (01:07 -0700)]
[mono] Fix LLVM IR emission for Ssse3.AlignRight and Sse2/Sse41.Extract (#42648)
The `mask` parameter to `shufflevector` must be a vector of `i32`s; we
were mistakenly using a vector of `i8`s previously.
`extractelement` requires that supplied index is smaller than the source
vector's length. The underlying instructions only pay attention to the
lower bits of the index, so replicate this behavior manually with
masking at the LLVM IR level.
This change makes JIT/HardwareIntrinsics/X86/Sse2/Sse2_{r,ro} pass with
LLVM JIT. LLVM AOT still makes this test fail for unrelated reasons.
This change makes more subtests in
JIT/HardwareIntrinsics/X86/Ssse3/Ssse3_{r,ro} pass with LLVM JIT. But
there are still other unrelated failures.
Larry Ewing [Thu, 24 Sep 2020 04:35:51 +0000 (23:35 -0500)]
[wasm][bindings] Fix an api regression introduced in #42486 (#42658)
* Fix an api regression introduced in #42486
* Update src/mono/wasm/runtime/binding_support.js
a number it is
Co-authored-by: Ankit Jain <radical@gmail.com>
Co-authored-by: Ankit Jain <radical@gmail.com>
monojenkins [Thu, 24 Sep 2020 03:19:22 +0000 (23:19 -0400)]
[runtime] Throw a MarshalDirectiveException when returning an array from a pinvoke method. (#42631)
Fixes https://github.com/mono/mono/issues/20367.
Co-authored-by: vargaz <vargaz@users.noreply.github.com>
Stephen Toub [Thu, 24 Sep 2020 02:26:31 +0000 (22:26 -0400)]
Add IDE warnings to code analysis ruleset (#42566)
- Add all IDEXXXX warnings to ruleset, but as hidden for now
- Enable IDE0073: file header mismatch
Tarek Mahmoud Sayed [Thu, 24 Sep 2020 01:34:33 +0000 (18:34 -0700)]
Support cp1252 codepage alias (#42599)
* Support cp1252 codepage alias
* Apply suggestions from code review
Co-authored-by: Stephen Toub <stoub@microsoft.com>
* Fix teh License comment in the file headers
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Bruce Forstall [Thu, 24 Sep 2020 00:58:40 +0000 (17:58 -0700)]
Fix use of uninitialized 'altjit' attribute (#42656)
Change the `-altjit` flag to require passing a JIT filename. There are
too many altjits (cross-compile JITs) available now to be able to pick
a good default, so force the user to pick.
Eric Erhardt [Wed, 23 Sep 2020 22:22:05 +0000 (17:22 -0500)]
Ensure Enumerable methods are preserved by System.Linq.Querable (#42603)
* Ensure Enumerable methods are preserved by System.Linq.Querable
When using System.Linq.Queryable against an in-memory collection, and trimming the application, the underlying Enumerable methods need to be preserved by the linker.
Annotating each Queryable method with a DynamicDependency to the corresponding Enumerable method will fix this scenario.
Fix #42536
Yaroslav Yamshchikov [Wed, 23 Sep 2020 19:26:18 +0000 (22:26 +0300)]
fix dwarf-based unwinding to the end of stack (#42620)
We experience CLR crash on some architectures (at least in x86) in case
of unhandled managed exception. libunwind steps to the very end of a
stack, and if .eh_frame info is correct, it returns with retcode 0 and
ip=0 from unw_step, then PAL calls unw_is_signal_frame with
c->validate==0 which in turn dereferences zeroed ip in access_mem.
libunwind spec says that retcode 0 from unw_step means very end of a
stack, so PAL should not expect any frames, signal or not. It should
convert cursor back to SEH representation and return with TRUE.
Jan Kotas [Wed, 23 Sep 2020 19:23:55 +0000 (12:23 -0700)]
Delete unused Monitor.Wait argument (#42610)
* Delete unused Monitor.Wait argument
* Move Monitor to shared partition
Kevin Jones [Wed, 23 Sep 2020 19:16:57 +0000 (15:16 -0400)]
Return null from ClaimsPrincipal.Current if no thread principal. (#42622)
* Return null from ClaimsPrincipal.Current if no thread principal.
In the .NET Framework, the AppDomain's default PrincipalPolicy is
UnauthenticatedPrincipal. When falling back to the thread's principal,
this would no throw because a GenericPrincipal was returned.
If the policy was changed to NoPrincipal, ClaimsPrincipal.Current would
throw constructing the ClaimsPrincipal since there is no principal.
However that behavior was opt-in.
In .NET Core, the default policy was changed to NoPrincipal, which would
mean unless a principal was explicitly set, Current would always throw.
This changes the behavior to return null instead of throw for
NoPrincipal. This is to continue supporting the existing behavior in
.NET Core 3 of returning null if there is no principal, but continue
to allow falling back to the thread's principal.
* Code review feedback.
Co-authored-by: Stephen Toub <stoub@microsoft.com>
* Fix typos
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Eugene Rozenfeld [Wed, 23 Sep 2020 18:47:14 +0000 (11:47 -0700)]
Delete dead code in `genCheckUseBlockInit`. (#42601)
Stephen Toub [Wed, 23 Sep 2020 18:34:29 +0000 (14:34 -0400)]
Fix nullable annotation on Socket.BeginSendFile (#42623)
Koundinya Veluri [Wed, 23 Sep 2020 17:08:45 +0000 (13:08 -0400)]
Fix to allow entering cooperative GC mode when the thread is in a forbid-suspend-for-debugger region (#42587)
- Followup to https://github.com/dotnet/runtime/pull/40060
- In short timing windows if a thread is placed in a pending-suspend-for-debugger state while in a forbid-suspend-for-debugger region, from the above PR it would not suspend for the debugger but it was missed that it can also get stuck in a perpetual spin-wait while entering cooperative GC mode. This causes the thread to not suspend for the debugger (VS times out after waiting) and the thread can only progress by unmarking it for debugger suspension.
- Fixed to break the spin-wait by checking whether the thread is in the forbid region
Fix for https://github.com/dotnet/runtime/issues/42375 in master
Andy Ayers [Wed, 23 Sep 2020 16:06:21 +0000 (09:06 -0700)]
JIT: initial version of a profile checker (#42481)
Adds a new flowgraph checker that tries to verify that the profile data is
self-consistent.
Use `COMPlus_JitProfileChecks=1` to enable in dumps, `=2` to raise asserts
if issues are found.
I plan on using this to start fixing the issues it finds and then perhaps
gradually enable more stringent checking.
Marie Píchová [Wed, 23 Sep 2020 15:41:26 +0000 (17:41 +0200)]
HTTP stress test improvements (#42313)
Fixes:
stress client double read of content fixed
fixed stress client hangs at start and stop
leveraged HttpVersionPolicy
increased pipeline timeout since we doubled the runs
fixed base docker images to avoid missing IO.Pipelines Kestrel exception.
Re-hauled tracing:
added server file logging
added log file rotation
Minor renames.
Contributes to: #42211 and #42198
Steve Harter [Wed, 23 Sep 2020 14:52:41 +0000 (09:52 -0500)]
Make nullable-related checks consistent and faster (#42401)
Omair Majid [Wed, 23 Sep 2020 14:48:12 +0000 (10:48 -0400)]
Fix singlefilehost build in non-portable mode (#42415)
The singilefilehost needs to follow the libraries build in terms of how
it links to OpenSSL: if it's a non-portable build, the singlefilehost
needs to link to OpenSSL via linker arguments.
The installer also needs to have FEATURE_DISTRO_AGNOSTIC_SSL defined
just like it is defined for the libraries build.
Fixes: #41768
Stephen Toub [Wed, 23 Sep 2020 13:22:58 +0000 (09:22 -0400)]
Fix a few Socket.SendFile issues (#42535)
* Fix a few Socket.SendFile issues
- The string argument in the single-argument overload should be nullable.
- All overloads on Windows should allow a null file path, but they've been throwing an exception
- On Linux, data was silently truncated when sending a file larger than int.MaxValue with BeginSendFile.
* Address PR feedback
Jan Kotas [Wed, 23 Sep 2020 13:16:12 +0000 (06:16 -0700)]
Integrate changes in shared files from dotnet/runtimelab:NativeAOT (#42609)
- Style analyzer fixes
- ARM64 port
Jan Kotas [Wed, 23 Sep 2020 12:55:32 +0000 (05:55 -0700)]
Fix race condition in Environment.GetEnvironmentVariable (#42608)
Eirik Tsarpalis [Wed, 23 Sep 2020 12:40:03 +0000 (13:40 +0100)]
Revert "Make Console.ReadKey() distinguish between CR and LF inputs" (#42470)
* Revert "Make Console.ReadKey() distinguish between CR and LF inputs (#37491)"
This reverts commit
a62bfcbd6e03396e85232a73aeef10df9df5fa4d.
* Account for terminals that have ICRNL disabled
* Add manual tests that validates the current \n ReadKey() behaviour on Unix
dotnet-maestro[bot] [Wed, 23 Sep 2020 09:59:47 +0000 (09:59 +0000)]
[master] Update dependencies from dotnet/xharness mono/linker dotnet/arcade Microsoft/vstest dotnet/llvm-project dotnet/icu (#42201)
[master] Update dependencies from dotnet/xharness mono/linker dotnet/arcade Microsoft/vstest dotnet/llvm-project dotnet/icu
- Merge branch 'master' into darc-master-
c2f56120-c0a9-49ac-83ec-
d0550f2e6a36
- Fix merge conflict
- Revert override of local changes to send-to-helix.yml
- Fix path to ILLink.Tasks.dll
- Revert override of local changes to send-to-helix.yml
- Revert override of local changes to send-to-helix.yml
- Fix path to ILLink.Tasks.dll
- Fix another path to ILLink.Tasks.dll
Tarek Mahmoud Sayed [Wed, 23 Sep 2020 06:28:04 +0000 (23:28 -0700)]
Fix the closure allocations in ActivityTagsCollection (#42606)
Jackson Miller [Wed, 23 Sep 2020 04:57:04 +0000 (00:57 -0400)]
add tests to increase enum serialization code coverage (#40601)
* add tests to increase enum serialization code coverage
* implement feedback and add test to cover naming policy scenario
* remove unnecessary bound check now that all primitive types are supported
* Revert "remove unnecessary bound check now that all primitive types are supported"
This reverts commit
0a6a345ed3eaf65be8efbb51c6258a8448aaf9c1.
* implement review feedback
remove unnecessary serializer options in test
rename JsonNamingPolicy ToLower -> ToLowerNamingPolicy
* Remove commented-out code
Co-authored-by: David Cantú <dacantu@microsoft.com>
Jan Kotas [Wed, 23 Sep 2020 01:08:15 +0000 (18:08 -0700)]
Rewrite Type.GetTypeFromProgID in C# (#42546)
- Move CoreRT managed implementation of Type.GetTypeFromProgID to CoreCLR
- Delete dead code and unnecessary levels of indirection
- Add tests for Type.GetTypeFromProgID and Type.GetTypeFromCLSID
Eric Erhardt [Tue, 22 Sep 2020 22:12:28 +0000 (17:12 -0500)]
Always generate resx default values in ComponentModel.DataAnnotations (#42274)
Since many resource strings in ComponentModel.DataAnnotations contain messages that will be shown to end-users, we generate the "default value" string into the SR code. When a trimmed app strips the system resources, these strings will be used instead of the resource keys.
Fix #42257
Egor Bogatov [Tue, 22 Sep 2020 22:07:35 +0000 (01:07 +0300)]
RyuJIT: Optimize "x<0" to "x>>31" (#35627)
* Optimize x<0 to x>>31
* enable for x86, handle "x>=0" case
Aaron Robinson [Tue, 22 Sep 2020 21:27:00 +0000 (14:27 -0700)]
Address reliability issue with setting ITypeInfo (#42560)
Bruce Forstall [Tue, 22 Sep 2020 20:53:06 +0000 (13:53 -0700)]
Reduce the number of platforms run by the ilasm round-trip test (#42567)
Specifically, don't run on Windows arm32. Also, don't
run on the musl platforms, either; just run on the same set
as most of the JIT pipelines.
David Wrighton [Tue, 22 Sep 2020 17:55:10 +0000 (10:55 -0700)]
Tweak crossgen2 so that SuperPMI should work (#42555)
- Remove unneeded getBuiltinClass for CLASSID_ARGUMENT_HANDLE from SuperPMI
- Tweak crossgen2 single threaded compilation to reliably only use exactly 1 for compilation
- This allows superpmi to rely on the detail that handles are unique.
- This assumes that superpmi collection is done with the compilation options `--parallelism 1`
David Wrighton [Tue, 22 Sep 2020 17:54:17 +0000 (10:54 -0700)]
First steps towards x86 compatible crossgen2 (#42471)
- Fix bug in crossgen2 around compilation of type forwarder only assemblies
- Use 64bit x86 crossgen2 when running crossgen2 as part of test build
- Disable inlined pinvoke generation on X86 until failures are understood
- Autolayout alignment should align to 4 byte offsets on X86 platforms
- Convert ArgIterator to use CoreCLR ABI instead of ProjectN ABI
- Align instance fields of classes to the start of the fields of the object, not the start of the object
- Fix hardware intrinsic support for X86
- MDArray address method uses custom calling convention on X86
- X86 JIT expects VM to normalize some single element structures to int, and inptr types
- Enable crossgen2smoke test for x86
With this change the crossgen2smoke test passes when compiled with crossgen2, as do simpler tests which use a crossgen2 compiled variant of the framework libraries. crossgen2smoke + libraries compiled with crossgen2 does not pass due to issues in resource handling.
Bruce Forstall [Tue, 22 Sep 2020 17:12:09 +0000 (10:12 -0700)]
Build and archive all JITs in the JIT rolling build (#42559)
* Build and archive all JITs in the JIT rolling build
* Disable debug info uploading
Ryan Lucia [Tue, 22 Sep 2020 16:57:57 +0000 (12:57 -0400)]
[mono] Add test for wasm loader regression, fix loading from bundle (#42425)
* Add LoaderLinkTest
As-is, this will fail on Browser
* Disable LoadFromAssemblyName_ValidTrustedPlatformAssembly on Browser
This test relies on loading corelib from disk via Assembly.Location, none of which works on Browser. It passing historically is a quirk of our previously broken implementation.
* Fix mono netcore bundle loading algorithm
Load after checking the default ALC, non-satellite loads go into the default ALC, satellite loads go into the parent assembly's ALC (following the managed logic)
Mike McLaughlin [Tue, 22 Sep 2020 16:36:48 +0000 (09:36 -0700)]
Fix createdump on the alpine distro (#42565)
The stack unwinding in createdump was looping forever on the same IP (different SP) when it
was attempting to unwind a frame that was in the ld module (typically libld*.so or on alpine
ld-musl-x86_64.so). The ld module on Alpine doesn't having any unwind info (GNU_EH_FRAME empty)
causing the libunwind code to loop on the same IP.
This was caused by a recent change in PR #42159 to createdump that included the ld in the
coredump. Createdump wouldn't attempt to unwind IPs in the ld module because it wasn't added
to the module lookup list.
Including the ld module is important to the windbg linux support so it will have to be revisited
in 6.0 by changing the remote unwinder to handle this case of the Alpine ld module.
Geoff Kizer [Tue, 22 Sep 2020 16:11:59 +0000 (09:11 -0700)]
Improve ConnectCallback tests (#42562)
* make existing tests run on HTTP2
* add exception test
Co-authored-by: Geoffrey Kizer <geoffrek@windows.microsoft.com>
monojenkins [Tue, 22 Sep 2020 15:34:37 +0000 (11:34 -0400)]
[interp] Track MINT_MONO_LDPTR as constants (#42531)
This allows us to optimize out checks like `typeof(T1) == typeof(T2)`, which is very common in bcl.
Co-authored-by: BrzVlad <BrzVlad@users.noreply.github.com>
Maxim Lipnin [Tue, 22 Sep 2020 15:27:27 +0000 (18:27 +0300)]
Mark some APIs throwing PNSE from runtime as unsupported on Browser (#42310)
* Mark some APIs throwing PNSE from runtime as unsupported on Browser
* Annotate APIs in coreclr part
Maxim Lipnin [Tue, 22 Sep 2020 15:04:45 +0000 (18:04 +0300)]
[browser] Reenable marshal library tests (#42574)
Jan Vorlicek [Tue, 22 Sep 2020 08:44:08 +0000 (10:44 +0200)]
Fix argument type in a call to SSLSetEnabledCiphers (#42543)
The latest version of macOS clang from XCode 12 beta complains about
data type of the 2nd argument passed to SSLSetEnabledCiphers.
This change fixes it by casting it to the actual argument type.
Ankit Jain [Tue, 22 Sep 2020 05:36:56 +0000 (01:36 -0400)]
[wasm][debugger][tests] Add some async stepping tests (#42461)
* [wasm][debugger][tests] Move stepping tests to a separate file
* [wasm][debugger][tests] Add more async stepping tests, some of which are
.. failing.
Safia Abdalla [Mon, 21 Sep 2020 23:31:34 +0000 (23:31 +0000)]
Add support for associating BrowserDebugHost with parent process (#42541)
Josh Schreuder [Mon, 21 Sep 2020 21:45:22 +0000 (07:45 +1000)]
Add test case for growing beyond buffer size in Utf8JsonWriter (#28409) (#36917)
* Add test case for growing beyond buffer size in Utf8JsonWriter (#28409)
* Update with review feedback
Co-authored-by: Josh Schreuder <josh.schreuder@gmail.com>
Brian Sullivan [Mon, 21 Sep 2020 18:50:03 +0000 (11:50 -0700)]
Annotate handle indirections with GTF_IND_INVARIANT and add validation to fgDebugCheckFlags (#42021)
* Rename GTF_ICON_PTR_HDL to GTF_ICON_PTR_GLOBAL - Use this whenever we are embedding a pointer to mutable data from the VM state
* Rename GTF_ICON_PSTR_HDL to GTF_ICON_CONST_PTR, use this when the constant is a pointer to immutable data, (e.g. IAT_PPVALUE)
* Use GTF_ICON_TOKEN_HDL only for a constant that is a token handle, other than class, method or field.
* In gtDispConst - print H or I when we have a handle, or O for a field offset
In gtNewStringLiteralNode - Added assert for non-CoreRT case of a IAT_VALUE of a TYP_REF
* In optHoistThisLoop - print if the loop has a single exit or multiple exits
as this can currently significantly limit our hoisting optimization.
* Added assert for later lowering of IAT_PPVALUE in Lowering::LowerDirectCall
and comment in Lowering::LowerNonvirtPinvokeCall where we currently allow this late expansion.
* Added function fgDebugCheckDispFlags to support extra flag checking of GTF_IND_INVARIANT
Disable the GTF_IND_INVARIANT for the cases that currentlt do not set it correctly.
* Added additional support for checking of GTF_IND_NONFAULTING in fgDebugCheckFlags (disabled)
Minor changes with GTF_IND_NONFAULTING
Added assert(!"Check this")
Add check for GTF_ICON_PINVKI_HDL // Eventually remove, as this is immutable
* Changed a GTF_ICON_FIELD_HDL to be invariant in fgMorphField
Added assert(!"Unreached GTF_IND_INVARIANT") in fgMorphField
Fixed IAT_PPVALUe and modified IAT_PVALUE cases in fgMorphLeaf for GT_FTN_ADDR
* Mark indirection of handles created by gtNewIconEmbHndNode as invariant
This was previously #ifdef out
ran jit-format
* Enable checking of GTF_IND_INVARIANT in fgDebugCheckFlags
* Fix Compiler::fgMorphLeaf for extra fgMorpgTree in GT_FTN_ADDR IAT_VALUE case
Removed #if 0 code
* Reverse the if-the-else block for creating a static field address or value
Remove the unreachable block
* Added asserts to gtNewIndOfIconHandleNode if isInvariant is set incorrectly, set GTF_GLOB_REF for all class static indirections
Check that all class static indirections have GTF_GLOB_REF set
Changed two asserts to be noway_asserts
Changed the indirection that points to the array initialization blob to be a GTF_ICON_CONST_PTR instead of a GTF_ICON_STATIC_HDL.
Changed the indirection that fetches the field offset value for ReadyToRun to be a GTF_ICON_CONST_PTR instead of a GTF_ICON_FIELD_HDL.
* ifdef 0 code to touch the codegen of Generic methods via GTF_DONT_CSE
* Rename of GTF_ICON_PTR_GLOBAL to GTF_ICON_GLOBAL_PTR
* Refactor morph of static field and eliminate the dead code
* Add method header for fgDebugCheckDispFlags
Rename of GTF_ICON_GLOBAL_PTR) for emitarm64.ccp
Cory Nelson [Mon, 21 Sep 2020 18:29:23 +0000 (11:29 -0700)]
Encode the alt-svc header after pseudo-headers ("All pseudo-header fields MUST appear in the header field section before regular header fields.") (#42545)
Hugh Bellamy [Mon, 21 Sep 2020 17:58:39 +0000 (18:58 +0100)]
Add CSharpCodeGenerator tests (#33886)
* Add CSharpCodeGenerator tests
Bruce Forstall [Mon, 21 Sep 2020 17:22:54 +0000 (10:22 -0700)]
Support auto-download of JIT baseline for SuperPMI asm diffs (#42511)
Add `-base_git_hash` to allow specifying the exact baseline hash to use.
Depends on JIT rolling build implemented in https://github.com/dotnet/runtime/pull/42507
Allows running asm diffs with just:
python superpmi.py asmdiffs
Bruce Forstall [Mon, 21 Sep 2020 17:11:08 +0000 (10:11 -0700)]
Add CLR JIT rolling build (#42507)
Build just the JIT, and upload the resulting JIT DLL to
CLR JIT Azure Storage.
This will be used as a baseline JIT for developer use, such
as assembly diffs.
Linux arm and Linux arm64 are disabled for now, until we can
determine how to properly configure Python on the build machines
with the azure-storage-blob package required for upload of the
JIT to Azure blob storage.
Stephen Toub [Mon, 21 Sep 2020 13:48:21 +0000 (09:48 -0400)]
Fix Enumerable.Take/SkipLast on mutable collections (#42506)
* Fix Take/SkipLast on mutable collections
LINQ operators are lazy and can't factor in the current contents of a mutable list when making decisions about how to subsequently process that list.
* Address PR feedback
Vitek Karas [Mon, 21 Sep 2020 13:20:13 +0000 (06:20 -0700)]
Fix mapping of files from bundle to only map the necessary part (#42402)
Mapping the whole bundle every time leads to VM space starvation. Which mostly matters on 32bit.
Martin Costello [Mon, 21 Sep 2020 09:58:31 +0000 (10:58 +0100)]
Fix typos in comment (#42367)
Fix a handful of typos in a comment for AllocateUninitializedArray<T>().
Jan Vorlicek [Mon, 21 Sep 2020 09:10:44 +0000 (11:10 +0200)]
Cleanup libraries CMakeLists (#42380)
* Cleanup libraries CMakeLists
The Windows CMakeLists.txt was unnecessarily using build configuration
information extracted from an environment variable to set
configuration specific options. Generator expressions are a better way
to handle that.
Besides that, I've also added support for Checked build.
Both of these changes are needed for the single exe host work where
libraries will be built during coreclr build.
Matt Mitchell [Mon, 21 Sep 2020 08:27:40 +0000 (01:27 -0700)]
Fix artifact source globbing for extract (#42484)
* Fix artifact source globbing for extract
There was a change the extract AzDO task that fixed a bug where it appeared to be matching some subpaths without globbing.
If you specified foo/x* it would apparently match subpaths of foo. Runtime was relying on this behavior, as the artifact target directory would implicitly get a subdirectory which was the artifact name, but not including that artifact name in the globbing pattern.
Fix this by including ** before the archive.
* Update download-artifact-step.yml
nathan-moore [Mon, 21 Sep 2020 06:58:52 +0000 (02:58 -0400)]
emit test for bounds checks against a 0 index (#42295)
* emit test for bounds checks against 0
* formatting
* remove dead code
* formatting
Tarek Mahmoud Sayed [Sat, 19 Sep 2020 22:42:35 +0000 (15:42 -0700)]
Fix the mechanism getting Constructed Culture (#42480)
Tarek Mahmoud Sayed [Sat, 19 Sep 2020 20:16:57 +0000 (13:16 -0700)]
Fix Getting default parent span Id with root Parent (#42483)
Eric Erhardt [Sat, 19 Sep 2020 15:39:50 +0000 (10:39 -0500)]
Memory Leak in Microsoft.Extensions.Caching.Memory when handling exceptions (#42355)
* Memory Leak in Microsoft.Extensions.Caching.Memory when handling exceptions
When an exception is thrown inside MemoryCache.GetOrCreate, we are leaking CacheEntry objects. This is because they are not being Disposed properly, and the async local CacheEntryStack is growing indefinitely.
The fix is to ensure the CacheEntry objects are disposed correctly. In order to do this, I set a flag to indicate whether the CacheEntry.Value has been set. If it hasn't, Disposing the CacheEntry won't add it to the cache.
Fix #42321
* Fix another memory leak when one cache depends on another cache. The inner cache's entries will reference the outer cache entries through the ScopeLease object.
Null'ing out the CacheEntry._scope field when it is disposed fixes this issue.
Frank Bolero [Sat, 19 Sep 2020 11:16:34 +0000 (13:16 +0200)]
SemaphoreSlim spelling corrections (#42451)
* Fixes comment spelling errors in SemaphoreSlim.cs
Words "increments" and "exceeded" where incorrectly spelled.
* Text change for clarity
Changed maxi to maximum to align with the rest of the comments
and variables in the file.
Katelyn Gadd [Sat, 19 Sep 2020 11:04:53 +0000 (04:04 -0700)]
Fix JS<->WASM string marshaling crash (#42486)
Fix JS strings being truncated at the first null when passed to mono
Fix crashes when moving large strings across the JS<->WASM boundary
Stephen Toub [Sat, 19 Sep 2020 10:52:30 +0000 (06:52 -0400)]
Avoid reusing Regex.Replace Match objects with MatchEvaluator (#42452)
One of the allocation-related optimizations we made for Regex in .NET 5 was for Regex.Replace and Regex.Split to not allocate unnecessary Match objects. Previously, every match was producing a Match object which was then used to implement the API's semantics. But in the case of an API like `Replace(string, string)`, those Match objects never make their way out to user code, so we can avoid creating a new Match object each time and instead only create one Match object for the whole operation and just reuse it over and over.
However, one of the overloads of Regex.Replace accepts a MatchEvaluator, a delegate that's handed the Match object. The intent is that the callback fishes out from the Match whatever it needs and doesn't hold onto the Match object, that ownership isn't transferred... but it turns out some applications are indeed storing these Match objects and assuming ownership... and the reuse behavior breaks that.
This PR tweaks the caching behavior to be parameterized, only reusing the match object from callers where the Match object is never handed out to user code.
Stephen Toub [Sat, 19 Sep 2020 10:51:20 +0000 (06:51 -0400)]
Fix several BeginXx nullable annotations (#42442)
AsyncCallback and object state parameters in APM BeginXx methods should always be nullable. Several in annotated libraries were annotated incorrectly.
Jan Kotas [Sat, 19 Sep 2020 04:30:43 +0000 (21:30 -0700)]
Use ReadOnlySpan<byte> for parsing FileWatcher responses (#42474)
Sergey Andreenko [Sat, 19 Sep 2020 01:20:12 +0000 (18:20 -0700)]
A small ref PR in preparation for arm64 apple work. (#42270)
* Mark some getters as const to avoid build errors.
* use `gtGetStructHandle` if `NO_CLASS_HANDLE` means an error.
* Add `GetStructHnd` to `LclVarDsc`.
A small contirubtion to https://github.com/dotnet/runtime/issues/32648.
* additional asserts
Stephen Toub [Sat, 19 Sep 2020 01:04:45 +0000 (21:04 -0400)]
Update to latest StyleCop.Analyzers and Microsoft.CodeAnalysis.NetAnalyzers (#42413)
Stephen Toub [Sat, 19 Sep 2020 00:58:44 +0000 (20:58 -0400)]
Remove implicit anchoring optimization from Regex (#42408)
* Remove implicit anchoring optimization from Regex
In .NET 5 we added a bunch of optimizations to Regex. One of them was a transform that optimized for the case where the pattern begins with `.*`. If it does, then we insert an implicit anchor at the beginning in order to avoid unnecessary backtracking. Imagine the pattern `.*a` and the pattern `bcdefghijklmnopqrstuvwxyz`. This is going to start matching at `b`, find the next newline, and then backtrack from there looking for the `a`; it won't find it and will backtrack all the way, failing the match at that position. At that point it'll bump to the next position, starting at `c`, and do it all over. It'll fail, backtrack all the way, and bump again, starting at `d`, and doing it all over. Etc. The optimization recognizes that since `.` will match anything other than newline, after it fails to match at the first position, we can just skip all subsequent positions until the next newline, as they're all going to fail.
However, the optimization failed to take into account that someone can explicitly start a match in the middle of the provided text. In that case, the implicitly added anchor will fail the match in the actual "Go" matching logic.
There are safe ways to do this optimization, e.g. introducing a variant of these anchors that let FindFirstChar skip ahead but that aren't considered for Go's matching purposes, but we can look at employing those for .NET 6. For now for .NET 5, this commit just deletes the faulty optimization and adds a few tests that were failing it.
* Address PR feedback
Tom Deseyn [Sat, 19 Sep 2020 00:50:29 +0000 (02:50 +0200)]
Console.Unix: fix inverted TreatControlCAsInput (#42432)
The logical negation was unintentionally removed while refactoring.
Carlos Sanchez [Fri, 18 Sep 2020 23:01:58 +0000 (16:01 -0700)]
Fix Windows AccessViolationException in FileSystemWatcher when monitoring network share for changes (#42419)
* Fix FileSystemWatcher crash due to malformed data coming from Windows.
* Address PR suggestions.
* Bring back assert for numBytes.
Co-authored-by: carlossanlop <carlossanlop@users.noreply.github.com>
Bruce Forstall [Fri, 18 Sep 2020 22:32:42 +0000 (15:32 -0700)]
Improve superpmi.py scripting (#42238)
* Improve superpmi.py scripting
1. Update Azure storage collections location to a new location
where we have appropriate permissions to manage the data.
2. Update the Azure storage upload/download implementation
to the current version of the Azure Python API.
3. Add JIT-EE interface GUID to path of Azure stored
collections. When downloading collections, use the appropriate
collection for your JIT-EE interface GUID. This is all done
by adding a "-printJITEEVersion" option to the SuperPMI
MCS tool. Thus, to determine the JIT-EE version, we assume
that MCS is built with the same version as the JIT (which
will be true in a normal build), and that MCS is available
and able to be run -- this typically requires a Core_Root
location be available. The user can specify the JIT-EE
version explicitly with the new `-jit_ee_version` argument.
4. Simplify the Azure storage format: there is no longer
a JSON mapping of name to MCH file. Instead, there is just
a directory full of files. By default, all files are downloaded
and used for replay/asmdiffs, by that can be filtered with
the new `-filter` argument.
5. The `-mch_files` (previously `-mch_file`) argument used
by `replay`, `asmdiffs`, and `upload`, now accepts a list
of directories and files, and for each directory all MCH
files included in that directory, recursively, are used.
6. Also upload MCT (TOC) files with the MCH files.
7. A `--force_download` argument is added to allow forcing
re-download of the Azure collections to the local cache.
8. PMI.dll is also looked for on the PATH before downloading
a cached version from Azure storage.
9. Some of the lesser-used arguments were renamed to simplify them.
10. Various bugs were fixed and code simplification/reorganization was done.
E.g., some of the commonality between replay and asmdiffs was
factored out.
11. More code documentation was added.
12. The superpmi.md documentation was re-written and simplified.
* Add support for download and caching of UNC paths on Windows
* Support downloading and caching explicitly specified HTTP addressed files
Safia Abdalla [Fri, 18 Sep 2020 19:27:30 +0000 (19:27 +0000)]
Support loading assemblies and symbols into debugger via callback (#42255)
* Add test setup for debugging lazy-loaded assemblies
* Add mono_wasm_add_lazy_load_files callback
* Rely on assembly_load callback to register PDBs
* Address feedback on formatting
* Fix spacing on method invocations
* Address second round of feedback
* Transport assembly data as base64 string
* Revert automated whitespace changes
* [wasm][debugger] Fix some issues with lazy loading assemblies
- One of the problems I found was that we were sending lot of duplicate
assemblies.
- this is a problem because we are converting them to base64, then
sending them over the wire, unnecessarily.
- Also, the proxy wasn't correctly dealing with them, and ended up
processing them, and then sending out duplicate `scriptParsed`
events!
- So, we try to solve this at the `mono_wasm_asm_loaded` point:
- issue: the `MONO.mono_wasm_runtime_is_ready` check wasn't enough
- What we want to do is to send the events only for assemblies that
were not in the bundle, list of which we can get in
`MONO.loaded_files`.
- but that has the filename
- But we don't seem to be getting the filename from the MonoImage,
so we use the assembly name as a workaround.
- So, as a heuristic (and trying not too add too much new stuff this
close to rc2!), we check if the assembly name begins with `System.`,
or `Microsoft.`, and if it does then we look for `$assembly_name.dll`
in the the loaded filenames.
- If found, then we can skip these!
- The other point in the Proxy:
- where we avoid adding duplicate assemblies if we already have one
keyed by the assembly name.
* Fix spacing in function definition
* [wasm][debugger] Handle errors in downloading from symbol servers
* [wasm][debugger] MonoProxy: Don't skip assembly if no pdb is available
- this caused such assemblies not getting added `DebugStore.assemblies`
- which broke download symbols on demand, because it couldn't find the
corresponding assembly in the list
* [wasm][debugger] Use the correct assembly name for the search
* Fixing and changes things related to Embedded Pdb.
* Update check for loaded assemblies and initialize resolver once
* Changing the order of the checks.
* Fix indentation.
* [wasm][debugger][tests] Improve tests a bit
.. which includes setting breakpoint using a url, before loading the
dynamic assembly. This essentially tests that the bp request gets resolved
automatically when the assembly gets loaded.
- And add the embedded pdb test for `DuplicateAssemblyLoadedEvent*`
tests
* Add back types to DebugStore
* Comply with new code style requirements
Co-authored-by: Ankit Jain <radical@gmail.com>
Co-authored-by: Thays <thaystg@gmail.com>
Kenneth Pouncey [Fri, 18 Sep 2020 17:28:02 +0000 (19:28 +0200)]
[wasm][http] Add support for Blob URLs (#42111)
* [wasm][http] Add support for Blob URLs
* Modify the string to read `Only 'http' 'https' and 'blob' schemes are allowed.` for browser
* Add more tests
* Add blob Uri marshal test
* Address review comments to add comments within code about intentions.
* Multiple review comments.
- Split Fact into theory instead of specific test for blob.
- Split large test into multiple tests as well as mark it Theory where appropriate.
* Rename
* Add message to other validations as well
* Change name
* Update src/libraries/System.Net.Http/src/Resources/Strings.resx
Co-authored-by: Stephen Toub <stoub@microsoft.com>
* Create partial classes for HttpUtilities to replace the proliferating use of TARGETS_BROWSER in the sources.
* Define and call `HttpUtilities.InvalidUriMessage` to provide the invalid message to be thrown.
* Fix CI Build
* Rename modules to follow current standards
Co-authored-by: Stephen Toub <stoub@microsoft.com>
Chris Ross [Fri, 18 Sep 2020 16:25:22 +0000 (09:25 -0700)]
Fix stackalloc loop in hpack test (#42416)
Vitek Karas [Fri, 18 Sep 2020 15:24:14 +0000 (08:24 -0700)]
Adapt to new behavior of nano server in resource updater (#42444)
In recent builds of nano server BeginUpdateResource will return ERROR_CALL_NOT_IMPLEMENTED. ResourceUpdater needs to adapt to provide a good error experience.
Without this change the code still fails, but with a much less friendly error.
Thays Grazia [Fri, 18 Sep 2020 15:07:15 +0000 (12:07 -0300)]
[wasm] [debugger] Adding test for #42227 PR (#42299)
* Adding the test I realized that I need to move one more function.
* Adding line.
* Adding space.
monojenkins [Fri, 18 Sep 2020 13:45:30 +0000 (09:45 -0400)]
[metadata] Assorted enhancements for some CIL image formats (#42398)
Some cherrypicked changes from a work in progress
* Try to set MonoImage guid from modules table for metadata_only images
If the image has a modules table, and a guid heap, set MonoImage:guid when loading the image, even if it is metadata_only. In minimal delta images this is true.
* Minimal delta files have 4 byte indices, always
* Don't populate MonoImage:module_name for minimal deltas
* Always store precise string heap size in MonoImage:heap_strings
In minimal delta images, the String heap is appended to the heap of the base image. But in the physical base image, the String heap is zero-padded to a size that's a multiple of 4 bytes.
Compute the precise String heap size at base image load time.
Co-authored-by: lambdageek <lambdageek@users.noreply.github.com>
Vitek Karas [Fri, 18 Sep 2020 13:37:49 +0000 (06:37 -0700)]
Update ownership of area-Single-File (#42445)
Aleksey Kliger (λgeek) [Fri, 18 Sep 2020 13:36:01 +0000 (09:36 -0400)]
Add a minimal .editorconfig for Mono C files (#42286)
monojenkins [Fri, 18 Sep 2020 11:45:27 +0000 (07:45 -0400)]
[jit] Transition some memory allocations to memory managers. (#42351)
Co-authored-by: vargaz <vargaz@users.noreply.github.com>
Sergey Andreenko [Fri, 18 Sep 2020 05:21:29 +0000 (22:21 -0700)]
Allow more obj(addr(lcl_var) foldings. (#42343)
* Allow `struct<N> with no GCPointers <-> block<N>` replacements.
* Alllow local morph to fold `OBJ(ADDR(LCL_VAR))` when obj and lclVar loayouts are compatible.
Zoltan Varga [Fri, 18 Sep 2020 04:49:10 +0000 (00:49 -0400)]
Ongoing cmake build work. (#42182)
* Ongoing cmake build work.
* Fix indentation.
* Add linux support.
* Add tvos support.
* Use clang only options only with clang.
* Add check for iconv.
* Fix indentation.
Adam Sitnik [Fri, 18 Sep 2020 03:46:30 +0000 (05:46 +0200)]
Annotate Min and Max WorkingSet setters as supported on macOS and FreeBSD (#42385)
* Annotate MaxWorkingSet setter as supported on macOS and FreeBSD
* annotate MinWorkingSet as well, simplify the comment
* update ref assembly
Omair Majid [Fri, 18 Sep 2020 03:22:06 +0000 (23:22 -0400)]
Fix build warning/error about converting a constant to a boolean (#42389)
On Fedora 32 with Clang 10, I get this warning/error when building
coreclr:
/home/omajid/devel/dotnet/runtime/src/coreclr/src/jit/emitarm.cpp:5553:31: error: converting the enum constant to a boolean [-Werror,-Wint-in-bool-context]
assert(ins == INS_cbz || INS_cbnz);
^
This looks like a bug that should be fixed: ins should be compared with
the constant on both sides of the boolean operator. Otherwise the
conditional can always evaluate to true.
David Cantú [Thu, 17 Sep 2020 22:45:20 +0000 (15:45 -0700)]
Remove unnecessary logic to determine E format when parsing floating point values on Utf8JsonReader and JsonDocument (#42298)
Stephen Toub [Thu, 17 Sep 2020 21:40:01 +0000 (17:40 -0400)]
Fix handling of repo analyzers and warnings-as-errors (#42272)
* Fix handling of repo analyzers and warnings-as-errors
When we brought in the new SDK, it enabled analyzers by default (which then used our custom ruleset), but a bunch of projects (in particular tests) weren't expecting that, such that we now have thousands of warnings in the repo. This opts-out those projects.
It also enables warnings-as-errors at the root level of the repo, to hopefully avoid such warning storms in the future, and to also clean up the remaining that exist. This includes a bunch of new obsoletion and platform compat warnings that are firing in the runtime tests.
We may choose to run analyzers on additional projects in the future where it's currently disabled, but this gets us back to a state at least as good if not better than we were previously.
* Fix analyzer warnings on Microsoft.NET.HostModel
Fixes the warnings that were triggered by our rule set applying to this project. All fixes were automated.
* Fix analyzer warnings in additional projects
* Remove several `<RunAnalyzers>false</RunAnalyzers>`
* Try to opt-out remaining coreclr tests
Co-authored-by: David Mason <davmason@microsoft.com>
Tammy Qiu [Thu, 17 Sep 2020 20:44:33 +0000 (16:44 -0400)]
[wasm][filesystem] add arg to testharness for setting working dir (#42020)
* [wasm][tests] Fix failing System.IO.Tests.DirectoryInfo_Name.CurrentDirectory
Co-authored-by: Ankit Jain <radical@gmail.com>
Epsitha Ananth [Thu, 17 Sep 2020 18:15:17 +0000 (11:15 -0700)]
V3 publishing for Runtime (#42262)
* V3 publishing (#41899)
Mike McLaughlin [Thu, 17 Sep 2020 16:53:07 +0000 (09:53 -0700)]
Fix MacOS createdump testing failures (#42357)
Fix MacOS createdump testing failures
There are a few things that are causing MacOS dumps not to be complete and causing the diagnostics SOS tests to fail:
1) The threads were completely stopped with the per thread suspend. Switch from thread_suspend to task_suspend.
2) .Stopping filtering out SM_EMPTY share_mode type memory regions. There are read/write sections that are needed in the dump by the tools
Theodore Tsirpanis [Thu, 17 Sep 2020 15:58:21 +0000 (18:58 +0300)]
Avoid race condition in WebClient.IsBusy. (#42076)
Fan Yang [Thu, 17 Sep 2020 15:13:14 +0000 (11:13 -0400)]
Add a pointer to Android build doc and a pointer to Hello World sample (#42345)
* Update README.md
* Update docs/workflow/building/mono/README.md
Co-authored-by: Larry Ewing <lewing@microsoft.com>
* Update README.md
Resolve Egor's feedback
Co-authored-by: Larry Ewing <lewing@microsoft.com>
Steve Harter [Thu, 17 Sep 2020 14:58:11 +0000 (09:58 -0500)]
Fix default handling for value types when converter based on interface (#42319)
Omair Majid [Thu, 17 Sep 2020 14:26:52 +0000 (10:26 -0400)]
Fix order of singlefilehost libarires passed to the linker (#42094)
We give a list of arguments to the linker which includes a list of
static objects we want to be linked together and a set of system-wide
native libraries they should be dynamically linked against.
Some build environments, such as Fedora, use the `--as-needed` linker
flag. This makes the linker pay attention to the order in which
libraries appear and remove uneeded libararies.
When the linker sees this:
ld --as-needed -lz staticobject.a
It works from left to right and sess that nothing so far depends on
libz. The linker removes libz from the set of objects being linked. Then
it links staticobject.a, which needs symbols from libz. The linker then
complains that it contains an undefined reference.
We can fix that by changing the order so that dependencies appear last
in the linker command line:
ld --as-needed staticobject.a -lz
This makes the linker link staticobject.a against libz correctly.
Tom Deseyn [Thu, 17 Sep 2020 14:20:22 +0000 (16:20 +0200)]
Console.Unix: fix terminal settings during Console.KeyAvailable (#42371)
* Console.Unix: fix terminal settings during Console.KeyAvailable
Arguments passed to configure the terminal are in the wrong order.
This causes Enter keys to be returned as ConsoleKey.J instead of
ConsoleKey.Enter.
* Add test