Jonghyun Park [Wed, 25 May 2016 02:23:51 +0000 (11:23 +0900)]
[ARM/Linux] Fix incorrect return marshaling in PInvoke stub (dotnet/coreclr#5010)
* Revises compMethodReturnsMultiRegRetType for ARM
For ARM, the current implementation of 'compMethodReturnsMultiRegRetType'
always returns false.
Unfortunately, this behavior is inconsistent with JIT importer. JIT impoter
attempts to merge various return statements as one statement via inserting
an assignment statement just before each return statement if there are more
than 4 returns.
If the method of interest has a return value, then JIT importer
introduces a local temporary variable, and use it to return value.
Due to the above implementation, JIT importer never generates a return
variable, which results in assertion violation insider JIT morph, which
is discussed in dotnet/coreclr#5009.
This commit attempts to fix dotnet/coreclr#5009 via implementing 'compMethodReturnsMultiRegRetType'
for ARM.
* Uses compRetNativeType instead of compRetType
* Fix typo '_TARGET_ARM' as '_TARGET_ARM_'
Commit migrated from https://github.com/dotnet/coreclr/commit/
bcc8495653c03b8ba4bb61fbd4828cac90789c4e
Manu [Wed, 25 May 2016 02:21:23 +0000 (11:21 +0900)]
Support the CORE_LIBRARIES environment variable on Unix (dotnet/coreclr#5112)
Mimic the Windows behavior by adding to the search path of native dlls
the content of the CORE_LIBRARIES environment variable.
Commit migrated from https://github.com/dotnet/coreclr/commit/
31031a3e21e6cbe227b99d9febcfaa554a8774d1
Vance Morrison [Wed, 25 May 2016 01:45:10 +0000 (18:45 -0700)]
Fix Guid's GetHashCode to work better (not ignore parts of it) (dotnet/coreclr#5191)
A common pattern is that the last bits of the GUID are the most unique, however our current hash code ignores most of them.
Fix this to simply XOR all bits in the GUID 32 bits at a time. This is more efficient and a better hash than what we have currently.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a22c755549f6c472af861d7b1eaef918db9a0041
Dmitri-Botcharnikov [Tue, 24 May 2016 21:59:24 +0000 (01:59 +0400)]
Improve vtbl matching loop in DacGetVtNameW. (dotnet/coreclr#5179)
Commit migrated from https://github.com/dotnet/coreclr/commit/
bdd7edfa55ea2bdd922f4a94609fa15d674bed73
Jan Vorlicek [Tue, 24 May 2016 21:43:49 +0000 (23:43 +0200)]
Fix filter funclet handling during stack walk on Unix (dotnet/coreclr#5183)
The filter funclets are not handled correctly during stack walk on Unix. When
the funclet's parent frame is reached, the filter funclet was mistakenly handled
as a non-filter funclet by the Unix specific code that is used to figure out
parent frames of funclets from exception trackers.
The fix is to skip this Unix specific code when we are looking for a parent of
a filter funclet. Filter funclet frame is always on the stack when the stack
walk reaches its parent frame.
Commit migrated from https://github.com/dotnet/coreclr/commit/
1cfb4f3b9a4df31d05317fb9052e6c210a4c7a95
Lubomir Litchev [Tue, 24 May 2016 21:26:27 +0000 (14:26 -0700)]
Merge pull request dotnet/coreclr#5153 from LLITCHEV/r2r_jitstress_jobs
Add R2R JitStress, JitStressRegs, JITMinOpts and ForceRelocs jobs to CI.
Commit migrated from https://github.com/dotnet/coreclr/commit/
b4376ab45f2dd969e840187e11053bda4fb58af8
Lubomir Litchev [Tue, 24 May 2016 21:25:37 +0000 (14:25 -0700)]
Added jit related R2R jobs.
Added jobs for R2R jitstress, jitstressregs, JITMinOpts and ForceRelocs testing.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d3cba5577d3151fb3dcbe98db22b2eb42280ced3
William Godbe [Tue, 24 May 2016 19:42:30 +0000 (12:42 -0700)]
Merge pull request dotnet/coreclr#5192 from wtgodbe/updatePublishedVersions
Add PowerShell script to update latest package version info in Versions repo
Commit migrated from https://github.com/dotnet/coreclr/commit/
62003155b53d50881dd2c353dd628376501ffa46
wtgodbe [Tue, 24 May 2016 19:13:18 +0000 (12:13 -0700)]
Add PowerShell script to update latest package version info in Versions repo
Commit migrated from https://github.com/dotnet/coreclr/commit/
33e975a39a7c9f84e30ec8f31a18b276547e450d
Aditya Mandaleeka [Tue, 24 May 2016 17:21:45 +0000 (10:21 -0700)]
Merge pull request dotnet/coreclr#5129 from leemgs/upstream-diff-time-of-unittest
Linux/ARM: Display execution time of ./tests/runtest.sh
Commit migrated from https://github.com/dotnet/coreclr/commit/
57f0280aca50c815994d8a842835d02cd0211674
William Godbe [Tue, 24 May 2016 17:07:33 +0000 (10:07 -0700)]
Merge pull request dotnet/coreclr#5171 from wtgodbe/syncFix
Update sync.cmd to download Azure Blobs. Also change publish.proj to …
Commit migrated from https://github.com/dotnet/coreclr/commit/
c5f8d0128a6bf91b8742908feab6de5c66cb6fb4
Russ Keldorph [Tue, 24 May 2016 15:09:22 +0000 (08:09 -0700)]
Merge pull request dotnet/coreclr#5180 from RussKeldorph/jit32va
Exclude varags tests for JIT32
Commit migrated from https://github.com/dotnet/coreclr/commit/
21755a3a0614b1b774e205f2e53ab45bd1e22bf1
Russ Keldorph [Tue, 24 May 2016 14:00:02 +0000 (07:00 -0700)]
Exclude varags tests for JIT32
Add same exclusions as added for other platforms in dotnet/coreclr#5124. These were
missed because we don't have JIT32 testing on dotnet-ci.
Commit migrated from https://github.com/dotnet/coreclr/commit/
ac81aaf7317e5ce6840e8fbe3e5b911ab6e2c5e7
Koundinya Veluri [Tue, 24 May 2016 07:41:22 +0000 (00:41 -0700)]
Merge pull request dotnet/coreclr#5170 from kouvel/NamedMutexPalTestFix
Fix intermittent test failure in paltest_namedmutex_test1
Commit migrated from https://github.com/dotnet/coreclr/commit/
a90240d95e926721b5cb5a78e274a071928254a3
Kyungwoo Lee [Tue, 24 May 2016 05:02:34 +0000 (22:02 -0700)]
Merge pull request dotnet/coreclr#5173 from kyulee1/ilasmpack
ILAsm/ILDAsm Package
Commit migrated from https://github.com/dotnet/coreclr/commit/
f8970fb9c58e5043a96243e320b26b32cc90721d
Kyungwoo Lee [Mon, 23 May 2016 22:33:23 +0000 (15:33 -0700)]
ILAsm/ILDAsm Package
Fixes dotnet/coreclr#5172
This has dependency on CoreCLR.
Use the same version 1.0.3 as CoreCLR.
Tested both packages are produced in Windows/Linux locally.
Commit migrated from https://github.com/dotnet/coreclr/commit/
877352fc1e5498f31f552300f07010a7377b1e88
Lubomir Litchev [Sat, 21 May 2016 21:23:11 +0000 (14:23 -0700)]
Add R2R JitStress, JitStressRegs, JITMinOpts and ForceRelocs jobs to CI.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a99abc5cf4b7df4d6a43f1793209d850b22b5c73
Jeremy Kuhne [Mon, 23 May 2016 23:48:28 +0000 (16:48 -0700)]
Merge pull request dotnet/coreclr#4884 from JeremyKuhne/JeremyKuhne-linuxhandles
Update file handle steps
Commit migrated from https://github.com/dotnet/coreclr/commit/
457b8fcaa67aac2f67bd7622c6503e2d7b230cb8
Geunsik Lim [Fri, 20 May 2016 13:31:32 +0000 (22:31 +0900)]
Linux/ARM: Add execution time of ./tests/runtest.sh
We have to wait for a long time to complete all unit tests on the ARM-based
embedded boards (e.g, Raspberry Pi, Odroid, Chromebook) compared to the
X86-based server environment. So, let's display execution time after finishing
the unit test.
* After PR:
128 minutes and 36 seconds taken to run CoreCLR tests.
ver1:
The existing measured time still includes overlay creation and some
package restoration. So, let's put time_start in front of
if($testDirectories).
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
Reviewed-by: Aditya Mandaleeka <adityamandaleeka@microsoft.com>
Reviewed-by: Sergiy Kuryata <sergiy-k@microsoft.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
4f330fdcb0bfee6372584b28a098a14bc7803c5c
wtgodbe [Mon, 23 May 2016 21:31:19 +0000 (14:31 -0700)]
Update sync.cmd to download Azure Blobs. Also change publish.proj to publish packages into symbol/pkg directories
Commit migrated from https://github.com/dotnet/coreclr/commit/
d75cfc2d6d51d17d8ae026968772627617bf7d9f
Jan Kotas [Mon, 23 May 2016 21:20:22 +0000 (14:20 -0700)]
Merge pull request dotnet/coreclr#5167 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
cd950a32a3d318f38ab3ac5e76b9c57b8587d6c9
Aditya Mandaleeka [Mon, 23 May 2016 20:49:35 +0000 (13:49 -0700)]
Merge pull request dotnet/coreclr#5042 from leemgs/upstream-display-clang-ver
Linux/ARM: display default clang version info at build-time
Commit migrated from https://github.com/dotnet/coreclr/commit/
058d43eacb67c8a8dae7c3dee119d764da43fd5a
Koundinya Veluri [Mon, 23 May 2016 20:34:27 +0000 (13:34 -0700)]
Fix intermittent test failure in paltest_namedmutex_test1
Fixes dotnet/coreclr#5169:
- Child thread/process was not closing their test mutex before indicating completion to the parent thread/process
- Fixed by enclosing the actual child test code in braces to force closing before the cleanup code runs. This is a minimal fix for the issue, I have a separate change that generally improves and refactors the tests further.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f60d720fce00189236fcf7f171b8aa5aece618d7
Jan Vorlicek [Mon, 23 May 2016 18:22:35 +0000 (20:22 +0200)]
Change Unix HW exception unwinding to not to go through signal trampoline (dotnet/coreclr#5140)
This change modifies the HW exception handling on Unix so that it doesn't unwind
from the context of the DispatchManagedException through the signal trampoline
to the actual location of the exception and uses the exception's context instead.
This fixes problem that some target systems like ARM Linux have with unwinding
through that trampoline.
Commit migrated from https://github.com/dotnet/coreclr/commit/
37d2c7bed790af03173bb66aeff37796cb25eb66
Jan Kotas [Mon, 23 May 2016 16:37:25 +0000 (09:37 -0700)]
Add missing #ifdef FEATURE_ICASTABLE
[tfs-changeset: 1607333]
Commit migrated from https://github.com/dotnet/coreclr/commit/
438383fdfd517d98116dd7735bc7ba00d0957598
Kyungwoo Lee [Mon, 23 May 2016 14:29:58 +0000 (07:29 -0700)]
Merge pull request dotnet/coreclr#5145 from kyulee1/newtest2
ARM64: Test Binary Update (dotnet/coreclr@
afa7fe5486fc90fec7df52bd134b789c568c8b45)
Commit migrated from https://github.com/dotnet/coreclr/commit/
a2d24aa4e65c8de05c1d760c4be7e7537378f3ed
Jan Kotas [Mon, 23 May 2016 02:05:27 +0000 (19:05 -0700)]
Merge pull request dotnet/coreclr#5159 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
d0028224f8b1809115787da2a39a43f9e35543c1
Jan Kotas [Sun, 22 May 2016 23:49:18 +0000 (16:49 -0700)]
Merge pull request dotnet/coreclr#5146 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
0a6ef944df2f01e40d161b68219682ee939c7cf6
Jan Kotas [Sun, 22 May 2016 17:07:15 +0000 (10:07 -0700)]
Update tests to build against rc3-24117-00 (dotnet/coreclr#5154)
Commit migrated from https://github.com/dotnet/coreclr/commit/
b72128b60a8ea7f5d37d9b6ac347ca0220e9f359
Andy Ayers [Sun, 22 May 2016 16:45:06 +0000 (09:45 -0700)]
Merge pull request dotnet/coreclr#5143 from AndyAyersMS/InlineXmlLock
Inliner: locks for xml read/write access
Commit migrated from https://github.com/dotnet/coreclr/commit/
e18a26099c1826c40c4b860e9316594f7e2a31b8
Wes Haggard [Sun, 22 May 2016 05:25:52 +0000 (22:25 -0700)]
Expose ResolveEventHandler and ResolveEventArgs in the mscorlib facade so that our test host still function.
[tfs-changeset: 1607062]
Commit migrated from https://github.com/dotnet/coreclr/commit/
df10d7a58894cb052cd72bbb177c2eadd3530c36
Kyungwoo Lee [Sat, 21 May 2016 00:11:28 +0000 (17:11 -0700)]
ARM64: Test Binary Update (dotnet/coreclr@
afa7fe5486fc90fec7df52bd134b789c568c8b45)
- vararg tests are deleted.
- dll not found issues are addressed.
Total: 9740
EXPECTED_PASS: 9658(99.2%)
EXPECTED_FAIL: 82(0.8%)
Commit migrated from https://github.com/dotnet/coreclr/commit/
2a0d3b8809c77b1138a2dde544f53ad12353a583
Matt Ellis [Sat, 21 May 2016 01:19:30 +0000 (18:19 -0700)]
Update pre-release tags to RC4
The long term plan is to move our packages versions up and the
prerelease tag back down to something like -beta, but for now we just
need to pick something that isn't RC3 as that's what
the release/1.0.0 branches are using.
Doing this gives us time to do the right thing without having version
clashes on myget.
[tfs-changeset: 1606983]
Commit migrated from https://github.com/dotnet/coreclr/commit/
3376767284fa7c86ca04a9498838ae6cbd21d9ae
Aditya Mandaleeka [Sat, 21 May 2016 00:04:33 +0000 (17:04 -0700)]
Merge pull request dotnet/coreclr#5136 from adityamandaleeka/xrtinit_fix
Change how InitAppXRT loads the XRT DLL
Commit migrated from https://github.com/dotnet/coreclr/commit/
60abbe3c88537d5c3c5544f36f432e7b5ba5c628
Pat Gavlin [Sat, 21 May 2016 00:03:14 +0000 (17:03 -0700)]
Merge pull request dotnet/coreclr#4990 from pgavlin/gh4912
Remove some preprocessor usage from the JIT interface.
Commit migrated from https://github.com/dotnet/coreclr/commit/
f581d33fb9d4bb95f1e83f636f07437500962054
John Chen [Fri, 20 May 2016 23:33:45 +0000 (16:33 -0700)]
Merge pull request dotnet/coreclr#5122 from JohnChen0/timeout
Resolve two issues that cause pri1r2r test timeout on Ubuntu
Commit migrated from https://github.com/dotnet/coreclr/commit/
af31341dfbd575fca460a96942fc4da51cef5f29
Andy Ayers [Thu, 19 May 2016 17:39:25 +0000 (10:39 -0700)]
Inliner: locks for xml read/write access
Move CritSecObject into util.h, and use it to lock around reading
and writing inline Xml. Introduce CritSecHolder for RAII management
of the locks.
Add a simple file position cache for methods to speed up replay
when the inline xml file is large.
Commit migrated from https://github.com/dotnet/coreclr/commit/
27484e2c82d8b3b98322e1d758b9caf312231c9c
Russ Keldorph [Fri, 20 May 2016 22:51:18 +0000 (15:51 -0700)]
Merge pull request dotnet/coreclr#5142 from RussKeldorph/delexcl
Remove ryujit_x86_no_fallback_issues.targets
Commit migrated from https://github.com/dotnet/coreclr/commit/
9fa7e7ffad864e33b0ef74ffb9e3b7737372dfc9
Russ Keldorph [Fri, 20 May 2016 22:34:53 +0000 (15:34 -0700)]
Remove ryujit_x86_no_fallback_issues.targets
We have decided this file isn't useful, so its continued presence
is just confusing.
Commit migrated from https://github.com/dotnet/coreclr/commit/
a6933d6f7c0f228df12dd8b2f5f34bdff7d9ba22
Sejong Oh [Fri, 20 May 2016 22:24:26 +0000 (15:24 -0700)]
Merge pull request dotnet/coreclr#5114 from sejongoh/mark_jit_opt_sensitive
Add JitOptimizationSensitive property to GC/API/WeakReference/IsAlive…
Commit migrated from https://github.com/dotnet/coreclr/commit/
afa7fe5486fc90fec7df52bd134b789c568c8b45
Michelle McDaniel [Fri, 20 May 2016 21:54:24 +0000 (14:54 -0700)]
Merge pull request dotnet/coreclr#5133 from adiaaida/disableStringarr_cs_ro
Disable stringarr_cs_ro for x86 RyuJIT
Commit migrated from https://github.com/dotnet/coreclr/commit/
060e7f07458194328e689e8609398c1d26209c19
Lee Culver [Fri, 20 May 2016 21:45:28 +0000 (14:45 -0700)]
Merge pull request dotnet/coreclr#5139 from leculver/shutdown
Prevent core dumps at shutdown due to ETW subsystem
Commit migrated from https://github.com/dotnet/coreclr/commit/
b91341d261cd8c03042b2c06cce949763b4ef4f9
Lee Culver [Fri, 20 May 2016 20:57:11 +0000 (13:57 -0700)]
Disable debugger termination to prevent shutdown race
Fixed another instance where debugger shutdown would race with ETW subsystem, causing segfaults.
Commit migrated from https://github.com/dotnet/coreclr/commit/
01e1fd14531b830bf3632f097cdcce6fe2de2f33
Stephen Toub [Fri, 20 May 2016 20:50:38 +0000 (14:50 -0600)]
Shrink AsyncMethodBuilder.MoveNextRunner by a field in common case (dotnet/coreclr#5131)
When an async method yields for the first time, there are several allocations, including a "MoveNextRunner" object that used to store the state machine and an ExecutionContext. However, for the common case where a default ExecutionContext is being used, we can avoid needing that field. For the simplest async method, this can reduce the total size of the allocations by ~4%.
(It would be nice in this case to be able to get rid of the MoveNextRunner entirely. However, the Action delegate that gets created needs to be stored into the builder before the builder is boxed to the heap, so that the cached delegate gets boxed with it; otherwise, the second yield in the async method will end up needing to reallocate the delegate. Since delegates are immutable, if the delegate was to point directly to a method on the boxed object, we would need to first have the object, a catch-22. So the MoveNextRunner serves as an intermediary that lets us create the delegate, store it into the struct builder, then box the builder, and then store the boxed object into the runner.)
Commit migrated from https://github.com/dotnet/coreclr/commit/
ce3ff76234bf199b4498a5d31f05af6eb43073f6
Gaurav Khanna [Fri, 20 May 2016 20:50:11 +0000 (13:50 -0700)]
Merge pull request dotnet/coreclr#5124 from gkhanna79/Fix4940
Throw InvalidProgramException when VarArgs are encountered
Commit migrated from https://github.com/dotnet/coreclr/commit/
18110e9a2ecf2f036953f398925ceef51375c2d9
Lee Culver [Fri, 20 May 2016 20:26:19 +0000 (13:26 -0700)]
Fix multiple LTTng issues (dotnet/coreclr#5068)
- Only emit LTTng events when LTTng is enabled. We now use the tracepoint_enabled macro to check if an event is enabled...when the version of lttng is installed that supports it.
- Unsplit LTTng events. Previously we split LTTng events when they exceeded the field limit of LTTng. Now we emit those events as a raw byte array so that it matches their windows ETW counterparts byte-for-byte.
- Emit any event with a struct or embedded array as a raw byte array too. The structure of memory that LTTng emits is incompatible with our ETW parsing. Changing events with struct/array fields greatly simplifies the parsing of events.
Commit migrated from https://github.com/dotnet/coreclr/commit/
92c2f926bd5eceea22211609ca63e27ff6a2be96
Jan Kotas [Fri, 20 May 2016 20:18:49 +0000 (13:18 -0700)]
Expose GetUninitializedObject on RuntimeHelpers (dotnet/coreclr#5104)
* In coreclr, expose GetUninitializedObject on RuntimeHelpers
* Include RuntimeHelpers.GetUninitializedObject in model.xml
Commit migrated from https://github.com/dotnet/coreclr/commit/
f38ec53d628bc0ab157678864fbddf255ad6591b
Pat Gavlin [Mon, 16 May 2016 18:16:07 +0000 (11:16 -0700)]
Remove some preprocessor usage from the JIT interface.
This fixes most of dotnet/coreclr#4912.
- The usage of `USE_ASM_GC_WRITE_BARRIERS` has been removed. The type it guarded is
now always defined.
- The JIT helpers that were guarded by `_TARGET_X86_` are now always defined.
- The intrinsic that was guarded by `_WIN64` is now always defined.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0ce37a46023f7242b8d71e5dc62376c7fbae4125
Pat Gavlin [Fri, 20 May 2016 19:57:58 +0000 (12:57 -0700)]
Merge pull request dotnet/coreclr#5123 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
e50420e0ceae9f62a874fdef6683092c8159f586
Koundinya Veluri [Fri, 20 May 2016 19:39:21 +0000 (12:39 -0700)]
Merge pull request dotnet/coreclr#5132 from kouvel/NamedMutexFix
Fix a few bugs in named mutexes
Commit migrated from https://github.com/dotnet/coreclr/commit/
8658b26db54d4b25b6d3c8b666d5239cfa10e575
John Chen [Fri, 20 May 2016 18:12:38 +0000 (11:12 -0700)]
Resolve two issues that cause pri1r2r test timeout on Ubuntu
* Fix Ready-to-Run image for System.Numerics.Vectors.dll.
* Disable tests\src\Loader\classloader\generics\regressions\
DD117522\Test.cs,
which contains an infinite generic type recursion. It causes CrossGen to
crash with stack overflow on Windows, and timeout on Ubuntu. Temporarily
disabling this test until we can properly fix it.
Commit migrated from https://github.com/dotnet/coreclr/commit/
94124570fa0e967e243f4c3b8cec22b3fcfa0e83
Aditya Mandaleeka [Fri, 20 May 2016 18:24:17 +0000 (11:24 -0700)]
Load XRT DLL from System32, and only on Win8+.
Commit migrated from https://github.com/dotnet/coreclr/commit/
9930c7e6093c2c96792721b1e38a2c7fbc09e970
Matt Ellis [Fri, 20 May 2016 17:57:26 +0000 (10:57 -0700)]
Merge pull request dotnet/coreclr#5105 from ellismg/fix-corefx-3467
Ignore empty collation elements in EndsWith
Commit migrated from https://github.com/dotnet/coreclr/commit/
7d1cd169944306ee25c847c77104722a60c2247c
dotnet-bot [Fri, 20 May 2016 17:53:17 +0000 (10:53 -0700)]
Merge remote-tracking branch 'upstream/master' into from-tfs
Commit migrated from https://github.com/dotnet/coreclr/commit/
6a84a4aa0c08f7db816cdd8eed9e2ecbcc877f52
dotnet-bot [Fri, 20 May 2016 17:50:20 +0000 (10:50 -0700)]
Fix line endings in src/vm/jitinterface.h
Commit migrated from https://github.com/dotnet/coreclr/commit/
a2728758512f4b13d50fd44f9be43cdb48bd7567
Michelle McDaniel [Fri, 20 May 2016 17:33:45 +0000 (10:33 -0700)]
Disable stringarr_cs_ro for x86 RyuJIT
This tests fails intermittently in the CI.
Commit migrated from https://github.com/dotnet/coreclr/commit/
4e2c006b8550c79d9e8db91d2a0d80cae9188c67
Koundinya Veluri [Fri, 20 May 2016 06:03:06 +0000 (23:03 -0700)]
Fix a few bugs in named mutexes
- When using pthread mutexes, if the mutex tells us that it was abandoned (due to owning process abruptly shutting down), it was calling ReleaseMutex (which takes a handle) on the pthread mutex object. It shouldn't be releasing the lock anyway.
- When a locked mutex is closed, it wasn't being removed from the owner thread's list of owned named mutexes. This case should be treated as abandoned.
- Since this could potentially happen from a different thread too, added the lock owner thread to the process data, added a critical section around list operations, and I now remove the process data from the owner thread's list on Close.
- Parent/child named mutex pal tests:
- Cleaned up tests by refactoring the setup/cleanup code
- Fixed a race where the parent may start a new child test before the previous child test closes its events
- Added new tests for verifying that a mutex is locked after it reports that it was abandoned, and abandoning by closing a locked mutex
Commit migrated from https://github.com/dotnet/coreclr/commit/
b75ddb170e50887677b94f757df8271b9c0d483e
Jan Vorlicek [Fri, 20 May 2016 16:49:48 +0000 (18:49 +0200)]
Add gchist SOS commands for Unix (dotnet/coreclr#5127)
This change adds HistClear, HistInit, HistObj, HistObjFind and HistRoot
commands to SOS on Unix
Commit migrated from https://github.com/dotnet/coreclr/commit/
3c61cb45c73ec7dd156475f95853abb2a6d74af0
Jose Perez Rodriguez [Fri, 20 May 2016 16:04:50 +0000 (09:04 -0700)]
Updating the version of buildtools we use to add commit hashes to native binaries (dotnet/coreclr#5103)
Commit migrated from https://github.com/dotnet/coreclr/commit/
d447c9afd906ce3cfb2fb2ffaaf2b42192cdc04f
John Chen [Fri, 20 May 2016 15:01:41 +0000 (08:01 -0700)]
Merge pull request dotnet/coreclr#5052 from JohnChen0/r2r
Initial Ready-to-Run tests for generics
Commit migrated from https://github.com/dotnet/coreclr/commit/
409c6cba761306b352e9eee7505ce55cf762b330
Jarret Shook [Fri, 20 May 2016 14:39:47 +0000 (07:39 -0700)]
Merge pull request dotnet/coreclr#5109 from jashook/b103058_exclude
Mark b103058 as stress sensitive
Commit migrated from https://github.com/dotnet/coreclr/commit/
0e8f00c1a8956e22c13b0608df5f7c2ab1f07b9d
Jarret Shook [Fri, 20 May 2016 14:38:04 +0000 (07:38 -0700)]
Merge pull request dotnet/coreclr#5108 from jashook/locals_exclude_min_opts
Mark opt/perf/doublealign/Locals stress sensitive
Commit migrated from https://github.com/dotnet/coreclr/commit/
1c045dfbbfb7b30d64ec2ed6fe0fd1003c279c82
Hanjoung Lee [Fri, 20 May 2016 14:37:48 +0000 (23:37 +0900)]
Fix typo in runtest.sh (dotnet/coreclr#5125)
Signed-off-by: Hanjoung Lee hanjoung.lee@samsung.com
Commit migrated from https://github.com/dotnet/coreclr/commit/
49592861227c6981e1c0e278db8e4d867af037ea
Gaurav Khanna [Wed, 18 May 2016 04:57:21 +0000 (21:57 -0700)]
Throw InvalidProgramException when a method with varargs is encountered.
Commit migrated from https://github.com/dotnet/coreclr/commit/
0a427c6d6d87e69ce0f87dafd2f965ee989e6d29
Lee Culver [Fri, 20 May 2016 06:46:00 +0000 (23:46 -0700)]
Prevent core dumps at shutdown when the ETW subsystem races with debugger cleanup. (dotnet/coreclr#5066)
Commit migrated from https://github.com/dotnet/coreclr/commit/
1d326bbdc1ebbd25b4680d3c801d3a9fb1b7bdbc
Geunsik Lim [Fri, 20 May 2016 06:43:33 +0000 (15:43 +0900)]
Documentation: Add CoreCLR binary folder to test results (dotnet/coreclr#5084)
When we get the test result with ./coreclr/tests/runtest.sh,
it is difficult to classify the build mode that we used after some days.
Let's add information of the CoreCLR binary folder in order to
know easily the build mode between debug-build and release-build mode.
Signed-off-by: Geunsik Lim <geunsik.lim@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
c6ac87f88f533cea120bbbd2c273a2e78cc2ea1f
Fadi Hanna [Fri, 20 May 2016 06:42:02 +0000 (23:42 -0700)]
Implementation of the following generic dictionary entries for R2R: (dotnet/coreclr#5079)
MethodDescSlot
MethodEntrySlot
DispatchStubAddrSlot
Commit migrated from https://github.com/dotnet/coreclr/commit/
7ea2604efd2c58e6279f19e069c844e50f3acbfa
Jan Kotas [Fri, 20 May 2016 06:39:35 +0000 (23:39 -0700)]
Merge pull request dotnet/coreclr#5111 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
8af8300d4a24e674b69b8399fc1a6de3cdcb7bc8
Jan Kotas [Fri, 20 May 2016 06:39:22 +0000 (23:39 -0700)]
Merge pull request dotnet/coreclr#5121 from dotnet/revert-5075-Fix4940
Revert "Change to reject varag methods"
Commit migrated from https://github.com/dotnet/coreclr/commit/
8fe3e8981017df9da8c15ddb0d01ab50c4f46dde
Koundinya Veluri [Fri, 20 May 2016 04:57:09 +0000 (21:57 -0700)]
Merge pull request dotnet/coreclr#5030 from kouvel/NamedMutex
Add named mutex for cross-process synchronization
Commit migrated from https://github.com/dotnet/coreclr/commit/
d3b3410eb8323a0286cd9c85441d962b3e7053cc
Brian Robbins [Fri, 20 May 2016 04:05:43 +0000 (21:05 -0700)]
Merge pull request dotnet/coreclr#5115 from brianrob/corelib_perfmap
Generate perfmap symbol file for System.Private.CoreLib
Commit migrated from https://github.com/dotnet/coreclr/commit/
d4393da0e714e889874115896af400fea2f530c8
Gaurav Khanna [Fri, 20 May 2016 04:03:33 +0000 (21:03 -0700)]
Revert "Change to reject varag methods"
Commit migrated from https://github.com/dotnet/coreclr/commit/
2eeabc0043ec11183eac773e9805c7eb5eed12fd
Gaurav Khanna [Fri, 20 May 2016 03:54:08 +0000 (20:54 -0700)]
Merge pull request dotnet/coreclr#5075 from gkhanna79/Fix4940
Change to reject varag methods
Commit migrated from https://github.com/dotnet/coreclr/commit/
4cc01b4468fb3fc8ce23fab6d7e8a31909538a2f
Rama krishnan Raghupathy [Fri, 20 May 2016 03:06:31 +0000 (20:06 -0700)]
Merge pull request dotnet/coreclr#5118 from ramarag/fixexchangeTStest
Removing ' from bash command line
Commit migrated from https://github.com/dotnet/coreclr/commit/
ae56f73c9dd94c27d6ab9868ba3fafddcacc6c51
Yi Zhang (CLR) [Fri, 20 May 2016 03:01:43 +0000 (20:01 -0700)]
Merge pull request dotnet/coreclr#5092 from yizhang82/icastable-fix2
Fix x86 only ICastable feature bug when we pass RuntimeTypeHandles
Commit migrated from https://github.com/dotnet/coreclr/commit/
c2366d1707067a0561fcc7898638522463043d2e
Sivarv [Fri, 20 May 2016 02:13:49 +0000 (19:13 -0700)]
Merge pull request dotnet/coreclr#5085 from sivarv/tcfix
Tail call test failure fixes.
Commit migrated from https://github.com/dotnet/coreclr/commit/
55f7034679a47fa8f905b7d66e75ac9fbcba96cd
Pat Gavlin [Fri, 20 May 2016 02:05:53 +0000 (19:05 -0700)]
Add some quirk and versioning flags and change some preprocessor symbols into fields of CORINFO_EE_INFO.
The quirk flags--CORJIT_FLG2_JIT32_QUIRKS and CORJIT_FLG2_JIT64_QUIRKS--are passed by the EE to request that the JIT
generate appropriately compatible executable code. These flags are only passed on x86/Windows and x64/Desktop/Windows,
respectively.
Version numbers for GC and EH info have been added to CORINFO_EE_INFO. The EE sets these versions to indicate the
formats of the aforementioned data that it supports.
CORINFO_PAGE_SIZE and MAX_UNCHECKED_OFFSET_FOR_NULL_OBJECT have been converted to fields on CORINFO_EE_INFO.
[tfs-changeset: 1606533]
Commit migrated from https://github.com/dotnet/coreclr/commit/
aa752704910dd2322be7733f0f648e3733522f42
Rama Krishnan Raghupathy [Fri, 20 May 2016 01:45:16 +0000 (18:45 -0700)]
Removing ' from bash command line
Commit migrated from https://github.com/dotnet/coreclr/commit/
ac868788000c683bbd6738b9938cf0e8588b0d67
Brian Robbins [Thu, 19 May 2016 23:08:32 +0000 (16:08 -0700)]
Generate perfmap symbol file for System.Private.CoreLib.
Commit migrated from https://github.com/dotnet/coreclr/commit/
abecf3a0db2c01e1c086af65c062885f5534b3c3
Andy Ayers [Fri, 20 May 2016 00:33:10 +0000 (17:33 -0700)]
Merge pull request dotnet/coreclr#5067 from AndyAyersMS/CalleeHashInXml
Inliner: small changes to inline xml
Commit migrated from https://github.com/dotnet/coreclr/commit/
174d6355db5ab8405097793f5600bbc336e0c562
Gaurav Khanna [Fri, 20 May 2016 00:21:40 +0000 (17:21 -0700)]
Baseline more tests
Commit migrated from https://github.com/dotnet/coreclr/commit/
777f5bd6ac26541c927924e12074b96e1cd1ea45
Jiyoung Giuliana Yun [Fri, 20 May 2016 00:01:53 +0000 (09:01 +0900)]
Fix case-sensitive issue on Linux (dotnet/coreclr#5086)
Fix dotnet/coreclr#5035
The file paths should be case-sensitive on Linux.
Signed-off-by: Jiyoung Yun <jy910.yun@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/
ec5f215aff689ff4db698cfc11d9e48691398f67
Sejong Oh [Thu, 19 May 2016 23:56:14 +0000 (16:56 -0700)]
Add JitOptimizationSensitive property to GC/API/WeakReference/IsAlive.csproj and GC/API/GCHandle/Weak.csproj
The testcases could fail if a reference is assigned to a stack temp.
Commit migrated from https://github.com/dotnet/coreclr/commit/
d42776308dd17a150190dc8ccd5939c2c7179915
Koundinya Veluri [Wed, 20 Apr 2016 13:57:19 +0000 (06:57 -0700)]
Add named mutex for cross-process synchronization
Fixes dotnet/coreclr#3422
- On systems that support pthread process-shared robust recursive mutexes, they will be used
- On other systems, file locks are used. File locks unfortunately don't have a timeout in the blocking wait call, and I didn't find any other sync object with a timed wait with the necessary properties, so polling is done for timed waits.
Shared memory files:
- Session-scoped mutexes (name not prefixed, or prefixed with Local\) go in /tmp/coreclr/shm/session<sessionId>/<mutexName>
- Globally-scoped mutexes (name prefixed with Global\) go in /tmp/coreclr/shm/global/<mutexName>
- Contains shared state, and is mmap'ped into the process, see SharedMemorySharedDataHeader and NamedMutexSharedData for data stored
- Creation and deletion is synchronized using an exclusive file lock on the shm directory
- Any process using the shared memory file holds a shared file lock on the shared memory file
- Upon creation, if the shared memory file already exists, an exclusive file lock is attempted on it, to see if the file data is valid. If no other processes have the mutex open, the file is reinitialized.
- Upon releasing the last reference to a mutex in a process, it will try to get an exclusive lock on the shared memory file to see if any other processes have the mutex opened. If not, the file is deleted, along with the session directory if it's empty. The coreclr and shm directories are not deleted.
- This allows managing the lifetime of mutex state based on active processes that have the mutex open. Depending on how the process terminated, the file may still be left over in the tmp directory, I haven't found anything that can be done about that.
Lock files when using file locks:
- In addition to the shared memory file, we need another file for the actual synchronization file lock, since a file lock on the shared memory file is used for lifetime purposes.
- These files go in /tmp/coreclr/lockfiles/session<sessionId>|global/<mutexName>
- The file is empty, and is only used for file locks
Process data
- See SharedMemoryProcessDataHeader and NamedMutexProcessData for data stored
- Per mutex name, there is only one instance of process data that is ref-counted. They are currently stored in a linked list in SharedMemoryManager. It should use a hash table, but of the many hash table implementations that are already there, none seem to be easily usable in the PAL. I'll look into that and will fix later.
- Refers to the associated shared memory, and knows how to clean up both the process data and shared data
- When using file locks for synchronization, a process-local mutex is also created for synchronizing threads, since file locks are owned at the file descriptor level and there is only one open file descriptor in the process per mutex name. The process-local mutex is locked around the file lock, so that only one thread per process is ever trying to flock on a given file descriptor.
Abandon detection
- When a lock is acquired, the process data is added to a linked list on the owning thread
- When a thread exits, the list is walked, each mutex is flagged as abandoned and released
- For detecting process abruptly terminating, pthread robust mutexes give us that. When using file locks, the file lock is automatically released by the system. Upon acquiring a lock, the lock owner info in the shared memory is checked to see if the mutex was abandoned.
Miscellaneous
- CreateMutex and OpenMutex both create new handles for each mutex opened. Each handle just refers to the process data header for the mutex name.
- Some of the above features are already available in the PAL, but not quite in a way that I can use for this purpose. The existing shared memory, naming, and waiting infrastructure is not suitable for this purpose, and is not used.
Commit migrated from https://github.com/dotnet/coreclr/commit/
249221697fc5cf18c07566bac0e9f0eb6525218a
Sejong Oh [Thu, 19 May 2016 23:21:42 +0000 (16:21 -0700)]
Merge pull request dotnet/coreclr#4963 from sejongoh/vector3_clear_upperbits
Vector3 clear upperbits
Commit migrated from https://github.com/dotnet/coreclr/commit/
9d7254efd6d1ef5d7c9aa8583eb1f6cccff6dfbc
Matt Ellis [Thu, 19 May 2016 18:48:56 +0000 (11:48 -0700)]
Ignore empty collation elements in EndsWith
We should ignore empty collaction elements at the end of the string
when doing our EndsWith checks. This means the match ICU finds might
not span to the end of string, but the only elements after the match
before the end are completely ignorable.
U+00AD (SOFT HYPHEN) is one such case where the codepoint is completely
ignorable.
Fixes dotnet/corefxdotnet/coreclr#3467
Commit migrated from https://github.com/dotnet/coreclr/commit/
4cdc520c627c655d9ebe52cc715baf2a30f2337d
Tarek Mahmoud Sayed [Thu, 19 May 2016 23:09:03 +0000 (16:09 -0700)]
Remove the wrong optimization from the string initialization (dotnet/coreclr#5107)
The string initilaization misteknly setting some flag for characters under 0x80
the fix here is just remove this part (per Jan Kotas recommendation)
Commit migrated from https://github.com/dotnet/coreclr/commit/
9e00c86e744d1db8737b5e52ac7111b1aab82e8c
Jan Kotas [Thu, 19 May 2016 23:08:39 +0000 (16:08 -0700)]
Merge pull request dotnet/coreclr#5106 from dotnet-bot/from-tfs
Merge changes from TFS
Commit migrated from https://github.com/dotnet/coreclr/commit/
1205aa01a485a49c4856e1637b1f7e87d12cd30a
Yi Zhang [Thu, 19 May 2016 06:05:53 +0000 (23:05 -0700)]
Fix x86 only ICastable feature bug.
When we call ICastable.IsInstanceOfInterface, we treat RuntimeTypeHandle as a OBJECTREF, which is incorrect as-per x86 calling convention since RuntimeTypehandle is a struct that contains a RuntimeType ref field and needs to be passed in stack. Our VM simple call helpers CALL_MANAGED_METHOD doesn't handle this correctly (it does the simple thing that always assume all the arguments are passed in register first). I'm fixing this by using a static method that takes RuntimeType instead of RuntimeTypeHandle, then convert it to RuntimeTypehandle.
Also switch to use PREPARE_NONVIRTUAL_CALLSITE(METHODID) as per Jan's suggestion.
ICastable test is now enabled in x86 for both JITs.
Commit migrated from https://github.com/dotnet/coreclr/commit/
aa08b53d25088dd9c2b7c9a8aa483b413906c7d4
Joel Hendrix [Thu, 19 May 2016 22:18:56 +0000 (15:18 -0700)]
Merge pull request dotnet/coreclr#5074 from jhendrixMSFT/master
Add sign.builds projects to facilitate real signing in official builds.
Commit migrated from https://github.com/dotnet/coreclr/commit/
fffe097e4a0b21b618543078a8fa19aec3d55856
Jeremy Kuhne [Thu, 19 May 2016 22:14:51 +0000 (15:14 -0700)]
Missing a check in the Unix part of the code.
[tfs-changeset: 1606433]
Commit migrated from https://github.com/dotnet/coreclr/commit/
c61b67485a363ee38e9882cc25d3a83f5239db49
sivarv [Thu, 19 May 2016 00:15:53 +0000 (17:15 -0700)]
Tail call test failure fixes.
Commit migrated from https://github.com/dotnet/coreclr/commit/
64256c38c4ca8951370ccda530bb668c52793465
Gaurav Khanna [Wed, 18 May 2016 04:57:21 +0000 (21:57 -0700)]
Throw InvalidProgramException when a method with varargs is encountered.
Commit migrated from https://github.com/dotnet/coreclr/commit/
af3aa9af73c8cb128e1d9f605483abf8a0c8616a
Jarret Shook [Thu, 19 May 2016 21:52:58 +0000 (14:52 -0700)]
Mark b103058 as stress sensitive
This test will not work under min opts, disable it under stress scenarios to address this.
Commit migrated from https://github.com/dotnet/coreclr/commit/
54106aec24fe02725b2290f85942c8c8eaf30539
Kyungwoo Lee [Thu, 19 May 2016 21:48:42 +0000 (14:48 -0700)]
Merge pull request dotnet/coreclr#5099 from kyulee1/fixr2r
ARM64: Fix R2R EntryPoint for Intrinsic
Commit migrated from https://github.com/dotnet/coreclr/commit/
00d3f3e45ee5648d8315c817b2e4bc0a76e4af4c
Jarret Shook [Thu, 19 May 2016 21:44:53 +0000 (14:44 -0700)]
Mark opt/perf/doublealign/Locals stress sensitive
The test is known to not work correctly under JitMinOpts. Disable it from running in that configuration.
Commit migrated from https://github.com/dotnet/coreclr/commit/
3098995d3417654973b194e53ab552d01c65a652
Russ Keldorph [Thu, 19 May 2016 21:39:49 +0000 (14:39 -0700)]
Merge pull request dotnet/coreclr#5098 from RussKeldorph/objects
Mark doublealign test as incompatible with GCStress
Commit migrated from https://github.com/dotnet/coreclr/commit/
257d8e5a26d597ca920250c80527f1f08270dc22
Russ Keldorph [Thu, 19 May 2016 21:39:09 +0000 (14:39 -0700)]
Merge pull request dotnet/coreclr#5100 from RussKeldorph/gcstress
Fix GCStress=0xC when build(tests).cmd called from outside root
Commit migrated from https://github.com/dotnet/coreclr/commit/
c48ac3e5cc8b100e808bc186aa98838bf7f49f61
Gaurav Khanna [Thu, 19 May 2016 19:54:30 +0000 (12:54 -0700)]
Merge pull request dotnet/coreclr#5091 from gkhanna79/Fix4531
Make Microsoft.NetCore.JIT package dependency of CoreCLR package
Commit migrated from https://github.com/dotnet/coreclr/commit/
c446e514885e91171cd77dc6d8a9b2cf9d6ca93b
Sejong OH [Fri, 13 May 2016 00:06:45 +0000 (17:06 -0700)]
Initialize unused upper bits of Vector3 arguments and return registers for
Linux
JIT requires the unused upper bits to be cleared but native compiler
doesn't clear the upper bits. This changes clear those bits for Reverse
PInvoke arguments and PInvoke return.
Commit migrated from https://github.com/dotnet/coreclr/commit/
eb4c7a280a00b344a9bb4d35172d0a0936ec5bdd