Skip to content

Conversation

@joshpeterson
Copy link

This is an automatically generated pull request to merge changes from the upstream main branch.

trylek and others added 30 commits January 29, 2022 08:52
…otnet#64482)

In my recent change I fixed C# test projects to stop using
command-line arguments. This follow-up change complements it by
applying the same transformation to IL projects. In most cases
the arguments were ignored so the transformation was trivial; in
the special case of twoEndFinallys.il the argument array is
passed to the method TwoEndFinallys so I patched it to allocate
a zero-sized string array instead (there are no tests passing
actual command-line arguments to the test app).

Thanks

Tomas
…otnet#64285)

- call cancel when disposing ReadableStream
- add unit test for the scenario
- enabled cancelation tests for browser
- fixed few cancelation issues
Co-authored-by: Larry Ewing <[email protected]>
…bad code (dotnet#64486)

To get good behavior in typescript, your enums need to be 'const enum', otherwise it generates some really gross JS with runtime overhead.
* Fix the GCInfo for types containing ByRef fields.

Update tests to use recursion and validate GCStress scenarios.

* Update stack walking for ref field discovery.

* Indicate the TypedReference is a value type during field initialization.
 - This was missed in the initial support for ref fields.
* Fold S.S.C.Csp into System.Security.Cryptography

This change leaves the tests in System.Security.Cryptography.Csp.Tests.dll,
because the crypto test infrastructure has not yet been upgraded to allow
for two algorithm provider tests in the same assembly (e.g. not both
Aes.Create() and AesCryptoServiceProvider can be tested)

* Change CryptoConfig string lookups to typeof for CSP types

* Fold S.S.C.Cng into S.S.Cryptography

* Fold S.S.C.OpenSsl into S.S.Cryptography

* Fold S.S.C.X509Certificates into S.S.Cryptography

* Fix dependent projects

* Fix ApiCompat errors

* Self-feedback

* Use typeof where now possible in CryptoConfig

* Don't use CNG's PKCS8 export for default EC objects

* RSA should probably function on Unix

* Fix nullability state of ChainPal.BuildChain across OSes

* Remove bad assert

* Special case macOS ECC data keys in CopyWithPrivateKey

* Undo some of the string resurrections

* Add missing Obsolete attribute
Wrap the SendPingAsync function with LogExceptions in Http2Connection.cs
to avoid any exception here being caught as an UnobservedTaskException.

Fix dotnet#64450

Signed-off-by: Shubhanshu Saxena <[email protected]>
This is meant to address the flakiness where chain building can time out for very busy CI machines.

The test fixture is already outerloop, so extending the timeout should not adversely affect CI inner loop performance.
* Add regression test for object[] -> Int32Enum[] array copy

where each element in the source array is the appropriate type

* Fix downcast check in slow array copy

When we have to resort to checking element by element, compare the type of each
actual element with the destination type. In particular, not the destinations
underlying type when it's an enum - we don't want to allow unrelated enums
using the same representation to copy over.

Fixes dotnet#64387
Context: dotnet#64232

Add 2 simple WebAssembly templates, `wasmbrowser` and `wasmconsole`.

The templates are packed into the nuget package, which is added to the `wasm-tools` workload manifest. When the workload is installed, the templates can be used with `dotnet new` command.

Add build tests to exercise the use of the templates - create, build and publish browser and console projects.

* [wasm] Initial templates implementation

* Use GetProductVersions target

To have package version with product version suffix, like `7.0.0-ci`.

* Do not set WasmAppDir in templates

* Add build tests for new templates

* Add newlines

* Apply suggestions from code review

Co-authored-by: Marek Fišera <[email protected]>

* Convert the console template to CommonJS/node

Also

 * add README with hint how to run the app
 * use top level statement to be consistent with browser template

* Add new section about the templates to the README

* Fix formatting

Co-authored-by: Marek Fišera <[email protected]>
Co-authored-by: dotnet-maestro[bot] <dotnet-maestro[bot]@users.noreply.github.com>
…et#64521)

* Delete code related to CompilationRelaxations.NoStringInterning

The code that was dealing with this relaxation was deleted in dotnet#57693 last year (ceeload.cpp, line 4006). We still had code that was telling RyuJIT not to inline string literals across modules if `NoStringInterning` is active because it might be observable, but since fragile NGen got deleted, I don't believe it's actually observable anymore and we could have deleted this together with fragile NGen support.

Closes dotnet#53726 - we no longer need to worry about loosening the restriction - we just drop it all.
In looking through usage data, it's pretty common to call Enumerable.Min/Max with an array.  At the cost of a type check when the source isn't an array, we can speed up the cases where it is, at a minimum by avoiding interface dispatch and in the best case by vectorizing.
* Remove some StringBuilderCache usage from Corelib

* Address PR feedback
Turns out CoreCLR uses platformgroups a lot for managing
extra pipelines, and ignores valid subsets for these pipelines.
We should just... not try and get involved in platformgroups.
* Optimize path check to skip to if statement if result is false.

If result is false, there is no reason to run the
PathInternal.IsDirectorySeparator function, since no matter what it
returns, the "result = result && ..." will always yeild false, since
result is false already.

So the entire if statement can be skipped, if result is false, since it
cannot possible change result to a true.

* Updated code to reduce code duplication
* Setup test pipeline for closest possible setup to what is currently working for android startup with the new adb method being used.

* Fix android scenario problems.

* Use latest xharness version for testing popen fix.

* Wrong branch changed.

* Final run setup for runtime part of the repo.

* Use test branch for full run test and keep it until the test finishes.

* Change perf pull branch back to main, hold until test run is complete.

* Add in iOS runtime builds for sure, and change branch for testing.

* Add in the file extraction of the built ios packs and changed workload typo to runtime to better match actual meaning.

* Revert back to main branch for setup.

* Git missed ios-arm runtime extraction, add that in.
* Use stable outputs in illink targets

While building locally multiple times, I noticed that the incremental build of the illink-targets are now to aggressive and could cause the targets to either never run or too often. This could be the case when the linker doesn't trim anything and copies the inputs to the outputs directory with preserving the timestamps. In such cases the inputs would always be newer than the outputs and the step would alway run. Also the path that was used to construct the outputs was missing a trailing directory separator. Using a marker file instead to not be dependent on the freshness of the linker output.
Some libraries still had ProjectReferences to libraries which refs
were added to the targeting pack with the last release. Therefore these
references can just be normal "Reference" items instead of P2Ps.
This wasm debugger test has been causing frequent failures in the rolling build.
…otnet#64546)" (dotnet#64574)

This reverts commit 09f681f.

This isn't needed as the tests are being run only in `runtime-staging`
now. And this commit itself doesn't build.
Adds a msbuild property `PositionIndependentExecutable` to the -pie
flag.

While good by default for security reasons they might make binary
incompatible with certain tools.
agocke and others added 25 commits February 3, 2022 12:57
* Update mac Helix queues

* Adjust test to account for Mac RID changes

* Disable DllImport probing test on Mac

* Disable profiler.multiple on Mac
…net#64708)

Previously I refactored these tests by moving the entrypoints from
the shared body_xxx source files into the test-specific expl_*
and seq_* source files but I didn't realize I'd also need to put
them into new uniquely named classes as we clearly cannot distinguish
30 methods named AA.TestEntrypoint().

Thanks

Tomas
…tnet#64709)

This is an interesting special example of deduplication where each of the tests (Test1, Test2, Test4)
runs alternatively in a single-assembly or multiple-assembly mode (compiled together with the
dependent source files teststr.cs / testgenstr.cs vs. using them via dependent projects
teststr.csproj / testgenstr.csproj).

As the actual content of the test source code is the same in both cases and just Roslyn-compiles
slightly differently based on the project structure, I have come to the conclusion that in this particular
case the least amount of churn can be achieved via a preprocessor define that is used to variate the
class name in the main test source files.

The tests were originally building in three flavors - "in-assembly", "cross-assembly" and "cross-module".
I have deleted the "cross-module" variants as I believe that they are identical to "cross-assembly".

Thanks

Tomas
* Use ordinal comparison for known header values

* Match 'text/html; charset=UTF-8' again
In this particular class of tests deduplicating tests via
namespace names is not useful as they use common modules
expecting the namespaces to match.

Thanks

Tomas
* re-enable some tests

* [wasm][debugger] Fix racy test - ExceptionTestAllWithReload

This test is set up to pause on all exceptions. So, it has some code to
hit `Debugger.resume` 100 times, hoping to skip all the non-user code
exceptions. But this can sometimes not be enough, and you might have
more exceptions which breaks rest of the test.

Instead, we try to resume till we won't get paused for a period of
10secs. And after that, we can call the user code, and execute rest of
the test.

Fixes dotnet#62666 .

* [wasm][debugger] Fix racy tests that use late loaded assemblies

`DebuggerTests.MiscTests.DebugLazyLoadedAssemblyWithEmbeddedPdb`
`DebuggerTests.BreakpointTests.BreakpointInAssemblyUsingTypeFromAnotherAssembly_BothDynamicallyLoaded`

These tests load assemblies dynamically, and depend on breakpoints in
those assemblies being resolved. But the tests don't wait for that to
happen. So, they can some times fail when the managed method is invoked
before the breakpoint being resolved.

Fixes dotnet#62823
Fixes dotnet#62667
Disable intrinsics tests that throw NotSupportedPlatformException on the corresponding platforms:

* Add JIT/HardwareIntrinsics/** to ExcludeList on Arm32 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/General/Vector256/** to ExcludeList on Arm64 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/X86/** to ExcludeList on Arm64 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/General/Vector64/** to ExcludeList on X64 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/Arm/** to ExcludeList on X64 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/General/Vector64/** to ExcludeList on X86 in src/tests/issues.targets

* Add JIT/HardwareIntrinsics/Arm/** to ExcludeList on X86 in src/tests/issues.targets
Extend ref counting done by local morph so that we can determine
single-def single-use locals.

Add a phase that runs just after local morph that will attempt to
forward single-def single-use local defs to uses when they are in
adjacent statements.

Fix or work around issues uncovered elsewhere:
* `gtFoldExprCompare` might fold "identical" volatile subtrees
* `fgGetStubAddrArg` cannot handle complex trees
* some simd/hw operations can lose struct handles
* some calls cannot handle struct local args
* morph expects args not to interfere
* fix arm; don't forward sub no return calls
* update debuginfo test (we may want to revisit this)
* handle subbing past normalize on store assignment
* clean up nullcheck of new helper

Addresses dotnet#6973 and related issues. Still sorting through exactly
which ones are fixed, so list below may need revising.

Fixes dotnet#48605.
Fixes dotnet#51599.
Fixes dotnet#55472.

Improves some but not all cases in dotnet#12280 and dotnet#62064.

Does not fix dotnet#33002, dotnet#47082, or dotnet#63116; these require handling multiple
uses or bypassing statements.
…se the r2rdump process to fail (dotnet#64772)

- This fix ignores the problem, and will produce somewhat wrong results when looking at the PGO data of an R2R binary, but it will at least permit the R2R file to be looked at

Fixes dotnet#64291
* fix some test for FreeBSD

* remove changes in IPGlobalPropertiesTest

* disable AddLongHeader_DoesNotThrow

* update description for skip
* [wasm][aot] Disable failing tests

`Microsoft.Extensions.HostFactoryResolver.Tests`: dotnet#64724
`Microsoft.Extensions.Logging.Tests`: dotnet#64725

* [wasm][aot] Disable `System.Text.Json.SourceGeneration.Roslyn3.11.Unit.Tests`

.. on linux.

Fixes dotnet#64762 .
Real issue being tracked in dotnet#61339

* disable failing nodejs samples

* [wasm] Disable more failing tests

System.Linq.Tests: dotnet#64774
System.Text.Json.Tests: dotnet#64775

* Disable System.Text.RegularExpressions.Tests due to issue#64769
Don't even build them as part of the clr subset, only on demand.
…ods (dotnet#64566)

The context is a MonoMethodRuntimeGenericContext when the method is a
default interface method.

Also re-enable broken DIM tests.

Fixes dotnet/runtime dotnet#62334
…net#64758)

* Fix outerloop AcceptAsync_WithTooSmallReceiveBuffer_Failure test

* Remove [Outerloop] per PR feedback
* pass ExitStatus when calling quit_
* set noExitRuntime
* fix double throw
* enable 64727 tests
For LIR we verify that we can really consider locals to be used at their
user by having a checker that looks for interfering stores to the same
locals. However, in some cases we may have "interfering"
GT_LCL_FLD/GT_STORE_LCL_FLD, in the sense that they work on the same
local but on a disjoint range of bytes. Add support to validate this.

This fixes dotnet#57919 which made the fuzzer jobs very noisy and made it easy
to miss actual new examples (e.g. dotnet#63720 was just merged even though
there were real examples found there).

Fix dotnet#57919
…mpletion (dotnet#64627)

Task's IAsyncResult.AsyncWaitHandle implementation lazily creates a ManualResetEventSlim, which is then set as part of the Task completing.  That AsyncWaitHandle is exposed publicly out of the surface area.  If code (arguably erroneously) Dispose's of that WaitHandle before the Task has completed, the task's completion routine will incur an ObjectDisposedException, which will propagate out and potentially disrupt caller logic or even crash the process if allowed to propagate on a thread without user code to catch it.

This just adds a catch (ObjectDisposedException) block to eat such an exception in order to make the system more reliable in the face of such spooky action at a distance.
…otnet#64624)

* Improve perf of Enumerable.Sum/Average/Max/Min for arrays and lists

It's very common to use these terminal functions for quick stats on arrays and lists of values.  Just the overhead of enumerating as an enumerable (involving multiple interface dispatch) per iteration is significant, and it's much faster to directly enumerate the contents of the array or the list.  In some cases, we can further use vectorization to speed up the processing.

This change:
- Adds a helper that does a fast check to see if it can extract a span from an enumerable that's actually an array or a list.  It could be augmented to detect other interesting types, but `T[]` and `List<T>` are the most relevant from the data I've seen, and we can fairly quickly do type checks to get the most benefit for a small amount of cost.
- Uses that helper in the int/long/float/double/decimal overloads of Sum/Average/Min/Max to add a span-based path.
- Vectorizes Sum for float and double
- Vectorizes Average for int, float, and double (the latter two via use of Sum)

* Address PR feedback
* make sure failed SSL does not imapct other sessions

* move innerError

* feedback from review

* remove try

* feedback from review
…4766)

* [wasm] Remove WBT from extra-platforms, as it runs in runtime, and runtime-staging

* [wasm] Run library tests on NodeJS for windows too

.. in `runtime-extra-platforms`.

* [wasm] runtime-extra-platforms: always run the helix step
@joshpeterson joshpeterson merged commit cc5da88 into unity-main Feb 7, 2022
@joshpeterson joshpeterson deleted the bot-upstream-main-merge-2022-02-05 branch February 7, 2022 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.