Age | Commit message (Collapse) | Author | Files | Lines |
|
Fix Ubuntu arm corefx triggers: no cron trigger on build job
|
|
|
|
Fix arm corefx test exclusions
|
|
1. Enable using the test exclusion file for Ubuntu arm32.
2. Update the Ubuntu and Windows arm32 exclusion files based on
current GitHub issues.
|
|
Enable Ubuntu arm32 corefx testing
|
|
* Set -march=armv7-a for Alpine Linux ARM32
* Remove armv7-linux-gnueabi[hf]
* Cast RLIM_INFINITY to size_t
|
|
* Reapply https://github.com/dotnet/coreclr/pull/17639
* tryagain-wip 4/23/2018 7:27:37 AM - Fix Invoke of enum-returning methods
* Assert for refbufargs implying valuetype
* Catch ref to void in managed layer
|
|
preview1-26423-05, preview3-26423-04, master-20180423-0039, respectively (#17683)
|
|
|
|
This assert was firing when there was a struct with explicit layout and
two byref fields overlapping each other. The assert was checking that
the respective location on the stack was not reported yet.
To fix that, I have changed the assert to fire only if the already
reported kind of reference was different from the current one. That
enables overlapping of two byref fields or two ref fields, but not a
byref and ref fields.
|
|
Fixes #17716
|
|
|
|
exception (#17710)
|
|
Treat EDI as killed by MaskMove
|
|
Also fixes the test Main to correctly collect result codes from all 3 subtests.
|
|
* Preserve pinned flag in {ReadOnly}Memory<T>.Slice
* Address PR feedback.
Signed-off-by: dotnet-bot-corefx-mirror <dotnet-bot@microsoft.com>
|
|
It should really only be a fixed reference, not a kill, but if the reference is changed by `LinearScan::resolveConflictingDefAndUse()` it can fail to cause the value in EDI to be killed.
Fix #17634
|
|
(#17709)
Signed-off-by: dotnet-bot-corefx-mirror <dotnet-bot@microsoft.com>
|
|
* Fix GC tests that contain GC.Collect() used in wrong scope
* Fix GCLarge
* fix typos/build errors
* More test failures...
* more ci failure fix
* Fix all the build errors
* Fix test failure
|
|
Add adityamandaleeka to arm64 users
|
|
Fix for Retail/Checked Asm diffs
|
|
Stop building Linux with "verbose"
|
|
|
|
Using "verbose" creates an extraordinary amount of output,
obscuring interesting output. I don't know of a compelling
reason to continue using "verbose", so stop doing so.
|
|
`UnManagedPerAppDomainTPCount::QueueUnmanagedWorkRequest` fires an ETW event inside a spin lock and a nested spin lock is taken here:
```
SpinLock::GetLock + 0x8E (0x719da71d)
EventPipeBufferManager::AllocateBufferForThread + 0x7B (0x71afa92e)
EventPipeBufferManager::WriteEvent + 0x250 (0x71afbe0a)
EventPipe::WriteEventInternal + 0x125 (0x71951c93)
EventPipe::WriteEvent + 0x91 (0x71951714)
EventPipeWriteEventThreadPoolEnqueue + 0x9E (0x71d468a6)
FireEtwThreadPoolEnqueue + 0xF (0x71b7a04b)
UnManagedPerAppDomainTPCount::QueueUnmanagedWorkRequest + 0x21D (0x71b7a597)
```
Nesting spin locks is not allowed, moved the ETW firing outside the lock.
|
|
Disable AVX2 when AVX is disabled
|
|
Skip commas when trying to remove some narrowing casts
|
|
|
|
This change addresses races that cause spurious failures in when running
GC stress on multithreaded applications.
* Instruction update race
Threads that hit a gc cover interrupt where gc is not safe can race to
overrwrite the interrupt instruction and change it back to the original
instruction.
This can cause confusion when handling stress exceptions as the exception code
raised by the kernel may be determined by disassembling the instruction that
caused the fault, and this instruction may now change between the time the
fault is raised and the instruction is disassembled. When this happens the
kernel may report an ACCESS_VIOLATION where there was actually an attempt to
execute a priveledged instruction.
x86 already had a tolerance mechanism here where when gc stress was active
and the exception status was ACCESS_VIOLATION the faulting instruction would
be retried to see if it faults the same way again. In this change we extend
this to tolerance to cover x64 and also enable it regardless of the gc mode.
We use the exception information to further screen as these spurious AVs look
like reads from address 0xFF..FF.
* Instrumentation vs execution race
The second race happens when one thread is jitting a method and another is
about to call the method. The first thread finishes jitting and publishes the
method code, then starts instrumenting the method for gc coverage. While this
instrumentation is ongoing, the second thread then calls the method and hits
a gc interrupt instruction. The code that recognizes the fault as a gc coverage
interrupt gets confused as the instrumentation is not yet complete -- in
particular the m_GcCover member of the MethodDesc is not yet set. So the second
thread triggers an assert.
The fix for this is to instrument for GcCoverage before publishing the code.
Since multiple threads can be jitting a method concurrently the instrument and
public steps are done under a lock to ensure that the instrumentation and code
are consistent (come from the same thread).
With this lock in place we have removed the secondary locking done in
SetupGcCoverage as it is no longer needed; only one thread can be instrumenting
a given jitted method for GcCoverage.
However we retain a bailout` clause that first looks to see if m_GcCover is
set and if so skips instrumentation, as there are prejit and rejit cases where we
will retry instrumentation.
* Instruction cache flushes
In some cases when replacing the interrupt instruction with the original the
instruction cache was either not flushed or not flushed with sufficient length.
This possibly leads to an increased frequency of the above races.
No impact expected for non-gc stress scenarios, though some of the code changes
are in common code paths.
Addresses the spurious GC stress failures seen in #17027 and #17610.
|
|
|
|
master-20180419-0038, respectively (#17667)
|
|
|
|
preview3-26419-01, respectively (#17662)
|
|
* Fix GC leakwheel scenario test
* Should be passing for most cases
|
|
Fixes https://github.com/dotnet/corefx/issues/29158
|
|
* Fix reading Time zone rules using Julian days
* Order the condition correctly
* Start searching from month 1 and not 0
* Exclude n Julian format
* fix typo
* Adding the suggested assert
|
|
Remove incorrect UNIX_AMD64_ABI define
|
|
preview3-26418-02, respectively (#17638)
|
|
CAS leftover
|
|
|
|
The code was incorrectly using signed conditions, which doesn't work for
server GC where the high ephemeral limit is 0xffffffffffffffff and so it
was checking if the address is less than -1, which is never the case. So
the card table was never updated.
|
|
* Enable Invoke and GetValue for ref-returning members
https://github.com/dotnet/corefx/issues/15960
Returned magic object is the object pointed to by
the ref. If the ref is null, NullReferenceException.
* Fix error message
* Found way to reuse InvokeUtil::CreateObject
* Remove comment, BYREF case.
|
|
[arm32] Disable corefx Microsoft.Win32.SystemEvents.Tests
|
|
[Arm64/Linux] Enable crosscomponent build in CI
|
|
Disallow Ubuntu arm32 non-PR jobs in non-master branches
|
|
|
|
Disallow Ubuntu arm32 non-PR jobs in non-master branches
|
|
Need to include the `-x64` in the output rid.
|
|
Unix/x64 ABI cleanup
|
|
preview1-26418-01, preview3-26418-01, master-20180418-0040, respectively (#17621)
|