platform/upstream/dotnet/runtime.git
8 years agoMerge pull request dotnet/coreclr#5856 from AndyAyersMS/ConstantObservations
Andy Ayers [Fri, 17 Jun 2016 21:42:02 +0000 (14:42 -0700)]
Merge pull request dotnet/coreclr#5856 from AndyAyersMS/ConstantObservations

JIT: Cleanup code in and around fgFindJumpTargets

Commit migrated from https://github.com/dotnet/coreclr/commit/42d3f36d802b902c54288d75526908c4f8050026

8 years agoMerge pull request dotnet/coreclr#5854 from dotnet-bot/from-tfs
Jan Kotas [Fri, 17 Jun 2016 17:43:24 +0000 (10:43 -0700)]
Merge pull request dotnet/coreclr#5854 from dotnet-bot/from-tfs

Merge changes from TFS

Commit migrated from https://github.com/dotnet/coreclr/commit/b387b6eb6f4e1ddf4c20aece8d1508d011915c4c

8 years agoJIT: Cleanup code in and around fgFindJumpTargets
Andy Ayers [Thu, 16 Jun 2016 22:33:48 +0000 (15:33 -0700)]
JIT: Cleanup code in and around fgFindJumpTargets

Reorder code to remove gotos. Extract two large chunks of logic as
subroutines. Add braces and update comments. Bring `fgStack` class up
to current Jit coding conventions.  Reunite some orphaned comments for
fgFindJumpTargets.

No behavior change expected. No diffs seen via jit-diff tool. No diffs
seen in desktop testing.

Commit migrated from https://github.com/dotnet/coreclr/commit/06f902ab0614e76efb978249e62e4273f555431f

8 years agoMerge pull request dotnet/coreclr#5839 from swgillespie/gc-batch-fix
Sean Gillespie [Fri, 17 Jun 2016 16:55:33 +0000 (09:55 -0700)]
Merge pull request dotnet/coreclr#5839 from swgillespie/gc-batch-fix

Fix GC test batch script skip conditions that were behaving unexpectedly

Commit migrated from https://github.com/dotnet/coreclr/commit/61c639ba82beea7483b20d1adad352ffddfe23f5

8 years agoMerge pull request dotnet/coreclr#5852 from gkhanna79/Fix5837
Gaurav Khanna [Fri, 17 Jun 2016 15:09:45 +0000 (08:09 -0700)]
Merge pull request dotnet/coreclr#5852 from gkhanna79/Fix5837

Correctly resolve binding from Resolving event for static load

Commit migrated from https://github.com/dotnet/coreclr/commit/585d669d73a613f92501199cbf11a8fee13fbbe9

8 years agoChanges to update TFS packages post 1.0
Eric St. John [Fri, 17 Jun 2016 14:16:31 +0000 (07:16 -0700)]
Changes to update TFS packages post 1.0

[tfs-changeset: 1613358]

Commit migrated from https://github.com/dotnet/coreclr/commit/4d0f26aeeae7fbbd3ede20bc89f9acd6e7a7eac6

8 years agoAdd missing check to allow assembly bound using the Resolving event to be used during...
Gaurav Khanna [Fri, 17 Jun 2016 13:29:41 +0000 (06:29 -0700)]
Add missing check to allow assembly bound using the Resolving event to be used during static binding scenario

Commit migrated from https://github.com/dotnet/coreclr/commit/c335d794bd56f4971bd37bbb220b753ea04ec837

8 years agoMerge pull request dotnet/coreclr#5843 from dotnet-bot/UpdateDependencies20160617052045
Gaurav Khanna [Fri, 17 Jun 2016 12:32:04 +0000 (05:32 -0700)]
Merge pull request dotnet/coreclr#5843 from dotnet-bot/UpdateDependencies20160617052045

Updating External dependencies to rc4-24217-00

Commit migrated from https://github.com/dotnet/coreclr/commit/7b1dfcf9adb52e2d2382259786ffe939c494510c

8 years agoUse LEAF_END_MARKED instead of LEAF_END for ARM64 debugbreak.S (dotnet/coreclr#5850)
Jonghyun Park [Fri, 17 Jun 2016 11:36:07 +0000 (20:36 +0900)]
Use LEAF_END_MARKED instead of LEAF_END for ARM64 debugbreak.S (dotnet/coreclr#5850)

This commit applies the changes in dotnet/coreclr#5847 (which fixes dotnet/coreclr#5845) into ARM64
stub.

Commit migrated from https://github.com/dotnet/coreclr/commit/6ea358025edca8908cf9823ad62734530dc85578

8 years agoUse Use LEAF_END_MARKED instead of LEAF_END for various functions (dotnet/coreclr...
Jonghyun Park [Fri, 17 Jun 2016 08:55:43 +0000 (17:55 +0900)]
Use Use LEAF_END_MARKED instead of LEAF_END for various functions (dotnet/coreclr#5849)

This commit fixes dotnet/coreclr#5848.

Commit migrated from https://github.com/dotnet/coreclr/commit/897fe098ad1cf08a83e68da76a33c68dad82f3e7

8 years agoUse LEAF_END_MARKED instead of LEAF_END for DBG_DebugBreak (dotnet/coreclr#5847)
Jonghyun Park [Fri, 17 Jun 2016 08:55:24 +0000 (17:55 +0900)]
Use LEAF_END_MARKED instead of LEAF_END for DBG_DebugBreak (dotnet/coreclr#5847)

This commit tries to fix dotnet/coreclr#5845

Commit migrated from https://github.com/dotnet/coreclr/commit/1df2061b82e10047463e425aaeb7008c7a5f3209

8 years agoMerge pull request dotnet/coreclr#5842 from prajwal-aithal/devel/arm-ci-emul-fix
Jarret Shook [Fri, 17 Jun 2016 06:21:43 +0000 (23:21 -0700)]
Merge pull request dotnet/coreclr#5842 from prajwal-aithal/devel/arm-ci-emul-fix

ARM-CI: Create mount path if not already present

Commit migrated from https://github.com/dotnet/coreclr/commit/7b32045a32ac744105c607a15c03855508279b25

8 years agoUpdating External dependencies to rc4-24217-00
dotnet-bot [Fri, 17 Jun 2016 05:20:45 +0000 (05:20 +0000)]
Updating External dependencies to rc4-24217-00

Commit migrated from https://github.com/dotnet/coreclr/commit/bd79c382864f6bd0e6dc84771cf037083a30b2e4

8 years agoARM-CI: Create mount path if not already present
Prajwal A N [Fri, 17 Jun 2016 03:24:24 +0000 (12:24 +0900)]
ARM-CI: Create mount path if not already present

* Previous PRs assumed that the mount path is already created on the CI machine
* This results in errors if the same is not true

Signed-off-by: Prajwal A N <an.prajwal@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/173e56ed4a43ff7863bb78e95d94bb4a1673970a

8 years agoMerge pull request dotnet/coreclr#5841 from rahku/master
Rahul Kumar [Fri, 17 Jun 2016 01:05:11 +0000 (18:05 -0700)]
Merge pull request dotnet/coreclr#5841 from rahku/master

Fix arm64 build break

Commit migrated from https://github.com/dotnet/coreclr/commit/9593aae441d823e2bfe912a33e4b463b704b020e

8 years agoFix arm64 build break
Rahul Kumar [Fri, 17 Jun 2016 00:59:06 +0000 (17:59 -0700)]
Fix arm64 build break

Commit migrated from https://github.com/dotnet/coreclr/commit/32c9ea52468df18285efa8eb617d16c1baf87fd4

8 years agoMerge pull request dotnet/coreclr#5822 from adityamandaleeka/setup-runtime-dependenci...
Aditya Mandaleeka [Thu, 16 Jun 2016 23:36:36 +0000 (16:36 -0700)]
Merge pull request dotnet/coreclr#5822 from adityamandaleeka/setup-runtime-dependencies_changes

Remove set -x from tests/setup-runtime-dependencies.sh.

Commit migrated from https://github.com/dotnet/coreclr/commit/f64c1eea8f1c898d02362549cb3acd7eb9c4b56c

8 years agoFix GC test batch script skip conditions that were behaving unexpectedly
Sean Gillespie [Thu, 16 Jun 2016 23:30:54 +0000 (16:30 -0700)]
Fix GC test batch script skip conditions that were behaving unexpectedly

Commit migrated from https://github.com/dotnet/coreclr/commit/8964be339e7836c1da8acae1d1c47d4ca4aee6e2

8 years agoMerge pull request dotnet/coreclr#5835 from wtgodbe/buildFix
William Godbe [Thu, 16 Jun 2016 22:05:19 +0000 (15:05 -0700)]
Merge pull request dotnet/coreclr#5835 from wtgodbe/buildFix

Fix error when passing msbuild args to build.cmd/buildtest.cmd

Commit migrated from https://github.com/dotnet/coreclr/commit/d3ab0326868872a0d65d7cd092fcbd4cdf253a72

8 years agoFix error when passing msbuild args to build.cmd/buildtest.cmd
wtgodbe [Thu, 16 Jun 2016 19:47:06 +0000 (12:47 -0700)]
Fix error when passing msbuild args to build.cmd/buildtest.cmd

Commit migrated from https://github.com/dotnet/coreclr/commit/54dd349dbf706aef10515d9e907fd18ae377717a

8 years agoMark Volatile methods with NonVersionable attribute (dotnet/coreclr#5830)
Jan Kotas [Thu, 16 Jun 2016 19:32:16 +0000 (12:32 -0700)]
Mark Volatile methods with NonVersionable attribute (dotnet/coreclr#5830)

Commit migrated from https://github.com/dotnet/coreclr/commit/d3371a42051db96b3f93a6d01358d17b2db9103b

8 years agoFix some typos in setup-runtime-dependencies.cmd
Aditya Mandaleeka [Thu, 16 Jun 2016 18:57:06 +0000 (11:57 -0700)]
Fix some typos in setup-runtime-dependencies.cmd

Commit migrated from https://github.com/dotnet/coreclr/commit/bbf48b9f2481ef48146b5d5892e804396286bbd7

8 years agoMerge pull request dotnet/coreclr#5821 from kyulee1/fixwb
Kyungwoo Lee [Thu, 16 Jun 2016 18:08:16 +0000 (11:08 -0700)]
Merge pull request dotnet/coreclr#5821 from kyulee1/fixwb

ARM64: Fix WriteBarrier

Commit migrated from https://github.com/dotnet/coreclr/commit/9c504436ed09e6a31251f3b7d85d457f9c5da9f9

8 years agoARM64: Fix WriteBarrier
Kyungwoo Lee [Wed, 15 Jun 2016 22:57:19 +0000 (15:57 -0700)]
ARM64: Fix WriteBarrier

I think this finally fixes most of long outstanding GC issues that appear in different
forms so far that include dotnet/coreclr#4877, dotnet/coreclr#4879, dotnet/coreclr#4890 and more.

The issues was WriteBarrier implementation.
When we update card table, the address has been already incremented by 8.

With this fix, all corefx tests seem to run on xunit framework without crashing.
I verified this with an out-of-date build locally, so there are not found
assembly errors like System.Runtime.Extensions with different versions, though.
These are what I tested so far that safely finished all runs with very high percentage of pass.
System.Collections.Tests
System.Dynamic.Runtime.Tests
System.Linq.Expressions.Tests
System.Linq.Parallel.Tests

Potentially more coreclr tests will pass. I will update them as tests go.

Commit migrated from https://github.com/dotnet/coreclr/commit/49c2eec8568b4471f1dcbc0e0f4016ff62c7c989

8 years agoMerge pull request dotnet/coreclr#5824 from dotnet-bot/UpdateDependencies20160616051753
Wes Haggard [Thu, 16 Jun 2016 17:04:18 +0000 (10:04 -0700)]
Merge pull request dotnet/coreclr#5824 from dotnet-bot/UpdateDependencies20160616051753

Updating External dependencies to rc4-24216-00

Commit migrated from https://github.com/dotnet/coreclr/commit/5de21b3b4d5dad2f069d1dfd4f8efe6d88f4e6f8

8 years agoRemove end labels from regular asm procs on Unix (dotnet/coreclr#5777)
Jan Vorlicek [Thu, 16 Jun 2016 13:15:08 +0000 (15:15 +0200)]
Remove end labels from regular asm procs on Unix (dotnet/coreclr#5777)

All ASM proc now unnecessarily have xxx_End label marking
the end of the proc. This causes confusing stack traces in
some cases, especially on OSX, when instead of a name of
an actual function, a name of the previous one with the
_End attached to it is shown.
This change fixes that by modifying the LEAF_END macro to
not to be defined as an equivalent of the LEAF_END_MARKED.

Commit migrated from https://github.com/dotnet/coreclr/commit/aaf5e7d6a1fa53576bbaa057eb7b7147281284cf

8 years agoMerge pull request dotnet/coreclr#5819 from AndyAyersMS/InlineTestsV1
Andy Ayers [Thu, 16 Jun 2016 05:53:47 +0000 (22:53 -0700)]
Merge pull request dotnet/coreclr#5819 from AndyAyersMS/InlineTestsV1

Inliner: simple performance tests

Commit migrated from https://github.com/dotnet/coreclr/commit/d5a0338ddefc9551f3f573b4950ab046f58d9464

8 years agoUpdating External dependencies to rc4-24216-00
dotnet-bot [Thu, 16 Jun 2016 05:17:53 +0000 (05:17 +0000)]
Updating External dependencies to rc4-24216-00

Commit migrated from https://github.com/dotnet/coreclr/commit/d861cbe4febdbf3deff214c5444daf422e9adef2

8 years agoMerge pull request dotnet/coreclr#5794 from briansull/vm-retbuf
Brian Sullivan [Thu, 16 Jun 2016 01:10:01 +0000 (18:10 -0700)]
Merge pull request dotnet/coreclr#5794 from briansull/vm-retbuf

Fixes for two JIT helpers that should not use the x8 RetBuf argument on ARM64

Commit migrated from https://github.com/dotnet/coreclr/commit/9ec70e119cca0cf317e1d64a3efd2bb9021e6d80

8 years agoRemove set -x from tests/setup-runtime-dependencies.sh.
Aditya Mandaleeka [Thu, 16 Jun 2016 00:26:05 +0000 (17:26 -0700)]
Remove set -x from tests/setup-runtime-dependencies.sh.

Commit migrated from https://github.com/dotnet/coreclr/commit/0aed7c9a2c88a9332712905dbcd06c855cf7586d

8 years agoFixes for two JIT helpers that should not use the x8 RetBuf argument on ARM64
Brian Sullivan [Mon, 13 Jun 2016 21:06:14 +0000 (14:06 -0700)]
Fixes for two JIT helpers that should not use the x8 RetBuf argument on ARM64

Fixes these two JIT helpers" CORINFO_HELP_GETFIELDSTRUCT and CORINFO_HELP_UNBOX_NULLABLE
We no longer set GTF_CALL_M_RETBUFFARG for the two special Jit helpers
We insert the extra byref argument in the x0 position for these two JIT helpers

Commit migrated from https://github.com/dotnet/coreclr/commit/987536accfc50a689b914f343d79fb3588cc552b

8 years agoMerge pull request dotnet/coreclr#5820 from wtgodbe/groovyR2R
William Godbe [Wed, 15 Jun 2016 22:57:56 +0000 (15:57 -0700)]
Merge pull request dotnet/coreclr#5820 from wtgodbe/groovyR2R

Update crossgen strings for coreclr coverage tests

Commit migrated from https://github.com/dotnet/coreclr/commit/65786f04d36e9886c4e1b004e5d233eb708fa0b9

8 years agoUpdate crossgen strings for coreclr coverage tests
wtgodbe [Wed, 15 Jun 2016 22:54:33 +0000 (15:54 -0700)]
Update crossgen strings for coreclr coverage tests

Commit migrated from https://github.com/dotnet/coreclr/commit/e071b691843ae71b81855a8704862871dbb9975d

8 years agoMerge pull request dotnet/coreclr#5815 from BruceForstall/RemoveAmd64Legacy
Bruce Forstall [Wed, 15 Jun 2016 22:54:22 +0000 (15:54 -0700)]
Merge pull request dotnet/coreclr#5815 from BruceForstall/RemoveAmd64Legacy

Remove AMD64 code from legacy code path

Commit migrated from https://github.com/dotnet/coreclr/commit/9a28e845d94df0f3d95903e9cfd77251d67b061e

8 years agoMerge pull request dotnet/coreclr#5814 from JohnChen0/r2rtest
John Chen [Wed, 15 Jun 2016 22:29:56 +0000 (15:29 -0700)]
Merge pull request dotnet/coreclr#5814 from JohnChen0/r2rtest

Modify CrossGen test script to work around cmd.exe bug

Commit migrated from https://github.com/dotnet/coreclr/commit/b3806248c80471c70d5fb80b0f4676bda2cc49f0

8 years agoInliner: simple performance tests
Andy Ayers [Fri, 10 Jun 2016 21:58:11 +0000 (14:58 -0700)]
Inliner: simple performance tests

Tests that demonstrate that constant arguments passed to callees can
lead to inlining performance wins. All numeric types are tested, as
well as strings.

Tests are generally written as positive/negative pairs with calls to
the same inlinee. This exposes the call site sensitivity. Performance
of the positive test should be better than the negative test.

The overall benchmarking approach used here is something that we might
consider adopting for other small-scale codegen performance tests.

Commit migrated from https://github.com/dotnet/coreclr/commit/1b34b726c3644ca494be54f90bbb190905e52e4e

8 years agoFix exception stacktrace when ulimit is hit OSX. (dotnet/coreclr#5802)
Mike McLaughlin [Wed, 15 Jun 2016 22:03:57 +0000 (15:03 -0700)]
Fix exception stacktrace when ulimit is hit OSX. (dotnet/coreclr#5802)

* Fix exception stacktrace when ulimit is hit OSX.

Issue dotnet/coreclr#5782.

Wrap the everything in try/catch replacing the existing try/finally
and removed the recursion protection thread var.

* Restore recursion protection.

Commit migrated from https://github.com/dotnet/coreclr/commit/93a9d70bfa87193d29b69b3242f5cc588f417f0d

8 years agoMerge pull request dotnet/coreclr#5786 from prajwal-aithal/devel/arm-ci-cross-build-fix
Jarret Shook [Wed, 15 Jun 2016 21:38:29 +0000 (14:38 -0700)]
Merge pull request dotnet/coreclr#5786 from prajwal-aithal/devel/arm-ci-cross-build-fix

ARM-CI: Convert Linux ARM emulator CI check to cross build (fixes PR dotnet/coreclr#5680)

Commit migrated from https://github.com/dotnet/coreclr/commit/ab4cc73d46fd733fb3976b4fe53d8837257cc948

8 years agoRemove AMD64 code from legacy code path
Bruce Forstall [Wed, 15 Jun 2016 19:44:19 +0000 (12:44 -0700)]
Remove AMD64 code from legacy code path

There were some AMD64 #ifdefs and code in the legacy code path from an
ancient AMD64 porting effort. They are unused, and were confusing to me
when searching the code base, so I removed them.

Commit migrated from https://github.com/dotnet/coreclr/commit/f03d7f5655f4f0d1f3d6be6f66965a2f5e6c477d

8 years agoUpdate SpecializeComparer for enums (dotnet/coreclr#5805)
James Ko [Wed, 15 Jun 2016 19:15:12 +0000 (15:15 -0400)]
Update SpecializeComparer for enums (dotnet/coreclr#5805)

Fixes dotnet/coreclr#5751

Commit migrated from https://github.com/dotnet/coreclr/commit/b3b183e7b4b384792370fae56dcb702afbfcb2a9

8 years agoFix sos.DumpIL on LP64 systems with s/long/LONG/g (dotnet/coreclr#5810)
Ivan Baravy [Wed, 15 Jun 2016 19:14:52 +0000 (23:14 +0400)]
Fix sos.DumpIL on LP64 systems with s/long/LONG/g (dotnet/coreclr#5810)

sos.DumpIL command used readData<long> to disassemble CIL,
this failed on LP64 systems like Linux where long is 8 bytes.

This commit tries to fix dotnet/coreclr#5457.

Commit migrated from https://github.com/dotnet/coreclr/commit/bc273bb498c51720e7199ea44d15ee6b1bed07d4

8 years agoMerge pull request dotnet/coreclr#5807 from Maoni0/obj_addr
Maoni Stephens [Wed, 15 Jun 2016 18:13:02 +0000 (11:13 -0700)]
Merge pull request dotnet/coreclr#5807 from Maoni0/obj_addr

Need to filter addresses not in the heap range in NextObj

Commit migrated from https://github.com/dotnet/coreclr/commit/b8813ee80bc00ccf46cc781de5d2f5f807813319

8 years agoModify CrossGen test script to work around cmd.exe bug
John Chen (CLR) [Wed, 15 Jun 2016 18:11:37 +0000 (11:11 -0700)]
Modify CrossGen test script to work around cmd.exe bug

Commit migrated from https://github.com/dotnet/coreclr/commit/d33d62e74cd8577420160685190e5c1eabfed9bb

8 years agoMerge pull request dotnet/coreclr#5682 from lemmaa/fix-error-index-must-be-an-integer...
Rahul Kumar [Wed, 15 Jun 2016 17:44:16 +0000 (10:44 -0700)]
Merge pull request dotnet/coreclr#5682 from lemmaa/fix-error-index-must-be-an-integer-in-range

[ARM64/Linux] Fix `error: index must be an integer in range.`

Commit migrated from https://github.com/dotnet/coreclr/commit/25b1e6a9eb3cac4abadaf1a65d7a75448cc7597e

8 years agoInitial support of breakpoint setting by source file + line on Linux using portable...
Evgeny Pavlov [Wed, 15 Jun 2016 16:23:30 +0000 (19:23 +0300)]
Initial support of breakpoint setting by source file + line on Linux using portable pdb reader (dotnet/coreclr#5688)

* Initial support of breakpoint setting by source + line on Linux

* Fix macro redefinition error in OSX build

* Fix after review from Mike McLaughlin

Commit migrated from https://github.com/dotnet/coreclr/commit/859307b4787bbacbe28d2efe1d54c49177525562

8 years ago[ARM64/Linux] Fix `error: index must be an integer in range.`
Sung-Jae Lee [Fri, 10 Jun 2016 07:33:17 +0000 (16:33 +0900)]
[ARM64/Linux] Fix `error: index must be an integer in range.`

- Fix invalid varible name `*X19_X28' to '*X19_X29'
- Remove code for capturing `fp` status.

Commit migrated from https://github.com/dotnet/coreclr/commit/3b2ce833f869cbc8abd5a586b671eb03e8948185

8 years agoNeed to filter addresses not in the heap range in the NextObj verification function.
Maoni0 [Tue, 14 Jun 2016 02:28:03 +0000 (19:28 -0700)]
Need to filter addresses not in the heap range in the NextObj verification function.

Commit migrated from https://github.com/dotnet/coreclr/commit/c8cbe2aef8b3c11709c287f344871602d8731f37

8 years agoMerge pull request dotnet/coreclr#5773 from Maoni0/grow_card_2
Maoni Stephens [Wed, 15 Jun 2016 00:38:55 +0000 (17:38 -0700)]
Merge pull request dotnet/coreclr#5773 from Maoni0/grow_card_2

Making the fix of runtime suspension check complete

Commit migrated from https://github.com/dotnet/coreclr/commit/488c377745cd2cbdfac711d2199dfeefeb24c5f1

8 years agoMerge pull request dotnet/coreclr#5803 from dotnet-bot/from-tfs
Jan Kotas [Wed, 15 Jun 2016 00:33:12 +0000 (17:33 -0700)]
Merge pull request dotnet/coreclr#5803 from dotnet-bot/from-tfs

Merge changes from TFS

Commit migrated from https://github.com/dotnet/coreclr/commit/9ea104961f899c3b092bf958fa21a7e07e493c09

8 years agoMy last fix of checking whether the runtime was suspended was incomplete.
Maoni0 [Mon, 13 Jun 2016 21:57:12 +0000 (14:57 -0700)]
My last fix of checking whether the runtime was suspended was incomplete.
I needed to check at the 3 other places. Before the software write watch
implementation, this check was in the write barrier code itself and was
doing the right thing. So I am just using the same thing (ie, IsGCThread)
to check whether the runtime is suspended.

Commit migrated from https://github.com/dotnet/coreclr/commit/f1aeb18e104cf02439c948ab5f20cf4bc8a27b03

8 years agoFix full framework build break
Jan Kotas [Tue, 14 Jun 2016 22:48:53 +0000 (15:48 -0700)]
Fix full framework build break

[tfs-changeset: 1612754]

Commit migrated from https://github.com/dotnet/coreclr/commit/9b01b5fb1c61b62ab0bf4f9e9fb33f55cfa85a08

8 years agoMerge pull request dotnet/coreclr#5798 from wtgodbe/remCovr
William Godbe [Tue, 14 Jun 2016 21:18:36 +0000 (14:18 -0700)]
Merge pull request dotnet/coreclr#5798 from wtgodbe/remCovr

Remove unecessary coverage arg passed to coreclr test run

Commit migrated from https://github.com/dotnet/coreclr/commit/7516e0cce43f41ffef1f3d6c4eaaef3265a76dbe

8 years agoRemove unecessary coverage arg passed to coreclr test run
wtgodbe [Tue, 14 Jun 2016 21:06:45 +0000 (14:06 -0700)]
Remove unecessary coverage arg passed to coreclr test run

Commit migrated from https://github.com/dotnet/coreclr/commit/8442c3e1881315d207404e1e3e99840b15fc4e9f

8 years agoAdd missing inttypes header for musl-libc (dotnet/coreclr#5729)
Peter Jas [Tue, 14 Jun 2016 20:56:27 +0000 (23:56 +0300)]
Add missing inttypes header for musl-libc (dotnet/coreclr#5729)

Also replaced the usages of `__unit64_t` and `__int64_t` with
`uint64_t` and `int64_t` respectively.

Commit migrated from https://github.com/dotnet/coreclr/commit/453b4e92c5f37e0ca88f6e32e5cc10c124fd678d

8 years agoMerge pull request dotnet/coreclr#5791 from swgillespie/bash-bracket
Sean Gillespie [Tue, 14 Jun 2016 19:59:10 +0000 (12:59 -0700)]
Merge pull request dotnet/coreclr#5791 from swgillespie/bash-bracket

Fix bracket spacing in runtest script

Commit migrated from https://github.com/dotnet/coreclr/commit/ea91d468a7f6f2aa9306e9215dfd2686835c978b

8 years agoFix incorrect buffer limits in Module.FullyQualifiedName QCall (dotnet/coreclr#5753)
Jan Kotas [Tue, 14 Jun 2016 19:21:45 +0000 (12:21 -0700)]
Fix incorrect buffer limits in Module.FullyQualifiedName QCall (dotnet/coreclr#5753)

Commit migrated from https://github.com/dotnet/coreclr/commit/45c827a17a746c5caba200594021ddb38743a711

8 years agoMerge pull request dotnet/coreclr#5695 from AlexGhiondea/DefaultToLatest
Wes Haggard [Tue, 14 Jun 2016 18:33:21 +0000 (11:33 -0700)]
Merge pull request dotnet/coreclr#5695 from AlexGhiondea/DefaultToLatest

Default to latest behavior when a TFM is not specified

Commit migrated from https://github.com/dotnet/coreclr/commit/8c92c1d4c67a149faafd5d79536b0e15fed60fba

8 years agoMerge pull request dotnet/coreclr#5792 from wtgodbe/groovyQuote
William Godbe [Tue, 14 Jun 2016 17:49:02 +0000 (10:49 -0700)]
Merge pull request dotnet/coreclr#5792 from wtgodbe/groovyQuote

Remove extra quote from runtest arg in coverage job

Commit migrated from https://github.com/dotnet/coreclr/commit/fb9faf936f1c390acc41df122fe250a8a2af51c9

8 years agoRemove extra quote from runtest arg in coverage job
wtgodbe [Tue, 14 Jun 2016 17:45:49 +0000 (10:45 -0700)]
Remove extra quote from runtest arg in coverage job

Commit migrated from https://github.com/dotnet/coreclr/commit/ca511a4b87db7792d4040ea61850348caa114744

8 years agoFix bracket spacing in runtest script
Sean Gillespie [Tue, 14 Jun 2016 17:40:21 +0000 (10:40 -0700)]
Fix bracket spacing in runtest script

Commit migrated from https://github.com/dotnet/coreclr/commit/c93aaa4970c35bf1b70d23a4e28323fa3b353be8

8 years agoMerge pull request dotnet/coreclr#5789 from kyulee1/fixgchole
Kyungwoo Lee [Tue, 14 Jun 2016 17:00:20 +0000 (10:00 -0700)]
Merge pull request dotnet/coreclr#5789 from kyulee1/fixgchole

ARM64: Fix a GC hole for Indirect Branch

Commit migrated from https://github.com/dotnet/coreclr/commit/44ad10cdc8bb87814c049f1cc51bab73048424fb

8 years agoMerge pull request dotnet/coreclr#5787 from dotnet-bot/UpdateDependencies20160614051831
Wes Haggard [Tue, 14 Jun 2016 15:48:40 +0000 (08:48 -0700)]
Merge pull request dotnet/coreclr#5787 from dotnet-bot/UpdateDependencies20160614051831

Updating External dependencies to rc4-24214-00

Commit migrated from https://github.com/dotnet/coreclr/commit/723196a772320381c0d2117c5fa9177ee0b38224

8 years agoARM64: Fix a GC hole for Indirect Branch
Kyungwoo Lee [Tue, 14 Jun 2016 14:50:40 +0000 (07:50 -0700)]
ARM64: Fix a GC hole for Indirect Branch

`br reg` was handled like a regular call under `IF_BR_1B` resulting in
`emitOutputCall` which updates GC vars/regs.
This is only true when this branch is used for a tail-call.
We used the same logic for indirect jump for switch expansion, which is
incorrect.
The fix is to correct instruction category so that such indirect jump is
handled same as an normal instruction under `IF_BR_1A`.

This fixes a part of https://github.com/dotnet/coreclr/issues/4877.
The failing point from the description is now passed, but still another
consistency failure far later on after tests are discovered/started.

Commit migrated from https://github.com/dotnet/coreclr/commit/8975060bd5ef7ab2b0bd9f4b34d89cba1130a6b3

8 years agoLink libintl in case of Alpine (dotnet/coreclr#5731)
Peter Jas [Tue, 14 Jun 2016 12:19:40 +0000 (15:19 +0300)]
Link libintl in case of Alpine (dotnet/coreclr#5731)

This delta detects Alpine Linux by using `uname -v` (kernel version)
and add the `libintl` in the linker list. This is because `gettext` is
not part of (per-installed in) Alpine Linux but available via the
package manager. To build CoreCLR, `gettext-dev` is one unlisted
per-requisite.

Commit migrated from https://github.com/dotnet/coreclr/commit/11a5971485bf7acad656b9ba9f8514e121da4bf1

8 years agoUpdating External dependencies to rc4-24214-00
dotnet-bot [Tue, 14 Jun 2016 05:18:31 +0000 (05:18 +0000)]
Updating External dependencies to rc4-24214-00

Commit migrated from https://github.com/dotnet/coreclr/commit/c19e26f614bd29daec59129b5edca349f81f732d

8 years agoARM-CI: Convert Linux ARM emulator CI check to cross build (fixes PR dotnet/coreclr...
Prajwal A N [Fri, 10 Jun 2016 06:03:16 +0000 (15:03 +0900)]
ARM-CI: Convert Linux ARM emulator CI check to cross build (fixes PR dotnet/coreclr#5680)

* Previously used emulated build took a lot of time leading to timeout errors
* Changing this CI check to build using cross build
* Resolves CI issues caused by previous identical PR dotnet/coreclr#5680

Signed-off-by: Prajwal A N <an.prajwal@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/c74d309b22080e58d76a1eb7f9ea0c8262fc135b

8 years agoRefactor MethodTable::ContainsStackPtr (dotnet/coreclr#5754)
Jan Kotas [Tue, 14 Jun 2016 02:33:53 +0000 (19:33 -0700)]
Refactor MethodTable::ContainsStackPtr (dotnet/coreclr#5754)

- Rename ContainsStackPtr to IsByRefLike. It is the term used for this kind of types in ECMA spec.
- Change the check to be based on flag instead of hard coded list of types
- Remove redundant unused method of the same name on EEClass

Commit migrated from https://github.com/dotnet/coreclr/commit/7f7d8276e65059a37001aaa5ce9af7e82249f4a0

8 years agoFix PAL executable allocator locking (dotnet/coreclr#5770)
Jan Vorlicek [Mon, 13 Jun 2016 23:11:09 +0000 (01:11 +0200)]
Fix PAL executable allocator locking (dotnet/coreclr#5770)

We call the ExecutableAllocator from two places in PAL. One is the
VirtualAlloc when the allocation type contains MEM_RESERVE_EXECUTABLE.
The other is MAPMapPEFile.
While the former is called inside of the virtual_critsec critical section,
the latter doesn't take that critical section and so in some race cases,
we were returning the same address twice - once for VirtualAlloc and
once for MAPMapPEFile. That resulted in strange memory corruption cases.
The fix is to use the same critical section for the MAPMapPEFile too.

I am also reverting the change in the virtual commit that was made when
we have thought that the culprit might be in the mprotect.

Commit migrated from https://github.com/dotnet/coreclr/commit/a3676dd03e21501c7565c8b402a21d4f5a1428c6

8 years agoMerge pull request dotnet/coreclr#5702 from mjsabby/master
Kshama Pawar [Mon, 13 Jun 2016 22:48:02 +0000 (15:48 -0700)]
Merge pull request dotnet/coreclr#5702 from mjsabby/master

Add Profiling APIs that fail on non-Windows OS

Commit migrated from https://github.com/dotnet/coreclr/commit/d0e2f7ebec30be026153fac8f14999e92b196df0

8 years agoMerge pull request dotnet/coreclr#5766 from dotnet/revert-5680-devel/arm-ci-cross...
Jarret Shook [Mon, 13 Jun 2016 20:23:57 +0000 (13:23 -0700)]
Merge pull request dotnet/coreclr#5766 from dotnet/revert-5680-devel/arm-ci-cross-build

Revert "ARM-CI: Convert Linux ARM emulator CI check to cross build"

Commit migrated from https://github.com/dotnet/coreclr/commit/15643e98e3e17e13cfa3876cebbc5ad5c1091435

8 years agoRevert "ARM-CI: Convert Linux ARM emulator CI check to cross build"
Matt Mitchell [Mon, 13 Jun 2016 20:20:46 +0000 (13:20 -0700)]
Revert "ARM-CI: Convert Linux ARM emulator CI check to cross build"

Commit migrated from https://github.com/dotnet/coreclr/commit/bf7c58c9b5ef79f38b941b94e1178189dfeb91e3

8 years agoMerge pull request dotnet/coreclr#5764 from wtgodbe/coverage
William Godbe [Mon, 13 Jun 2016 20:08:10 +0000 (13:08 -0700)]
Merge pull request dotnet/coreclr#5764 from wtgodbe/coverage

Update coverage test to have correct configuration for coreFX tests

Commit migrated from https://github.com/dotnet/coreclr/commit/492d7243969f18bd2369880bddcb12c6e0cae8ed

8 years agoMerge pull request dotnet/coreclr#5762 from swgillespie/ci-longgc
Sean Gillespie [Mon, 13 Jun 2016 20:04:37 +0000 (13:04 -0700)]
Merge pull request dotnet/coreclr#5762 from swgillespie/ci-longgc

Pass --long-gc and --gcsimulator to long GC and GCSimulator CI jobs, respectively

Commit migrated from https://github.com/dotnet/coreclr/commit/6f0e956dda5b2463afdf81bd57932e07e4b1268b

8 years agoUpdate coverage test to have correct configuration for coreFX tests
wtgodbe [Mon, 13 Jun 2016 20:03:46 +0000 (13:03 -0700)]
Update coverage test to have correct configuration for coreFX tests

Commit migrated from https://github.com/dotnet/coreclr/commit/ea38b376f0a1b2d4afc6e145374a53e594810504

8 years agoDelete bad assert (dotnet/coreclr#5757)
Jan Kotas [Mon, 13 Jun 2016 19:46:15 +0000 (12:46 -0700)]
Delete bad assert (dotnet/coreclr#5757)

Commit migrated from https://github.com/dotnet/coreclr/commit/e31c3264304b1401476b7a1eca35dd32cf983640

8 years agoMerge pull request dotnet/coreclr#5713 from wtgodbe/mutex
William Godbe [Mon, 13 Jun 2016 18:37:38 +0000 (11:37 -0700)]
Merge pull request dotnet/coreclr#5713 from wtgodbe/mutex

Keep mutex alive to avoid race condition in openmutexpos4 test

Commit migrated from https://github.com/dotnet/coreclr/commit/8ffd7279f2242be6d4b27d1fdb3f04d5947bf1d1

8 years agoDelete unnecessary cruft from internal mscorlib reference assembly (dotnet/coreclr...
Jan Kotas [Mon, 13 Jun 2016 18:01:02 +0000 (11:01 -0700)]
Delete unnecessary cruft from internal mscorlib reference assembly (dotnet/coreclr#5756)

Commit migrated from https://github.com/dotnet/coreclr/commit/ac9b3352573bfbc72dc6b01200825f3b0cb34a94

8 years agoPass --long-gc and --gcsimulator to long GC and GCSimulator CI jobs, respectively
Sean Gillespie [Mon, 13 Jun 2016 17:36:12 +0000 (10:36 -0700)]
Pass --long-gc and --gcsimulator to long GC and GCSimulator CI jobs, respectively

Commit migrated from https://github.com/dotnet/coreclr/commit/f522b5087d98ac18817c88212fd6d5fd10eda68b

8 years agoKeep mutex alive to avoid race condition in openmutexpos4 test
wtgodbe [Fri, 10 Jun 2016 22:57:07 +0000 (15:57 -0700)]
Keep mutex alive to avoid race condition in openmutexpos4 test

Commit migrated from https://github.com/dotnet/coreclr/commit/616afb6d1f67062b012e988383df7e1b0032aefe

8 years agoSpecialize Comparer<T> for enums to avoid boxing (dotnet/coreclr#5503)
James Ko [Mon, 13 Jun 2016 01:41:33 +0000 (21:41 -0400)]
Specialize Comparer<T> for enums to avoid boxing (dotnet/coreclr#5503)

Commit migrated from https://github.com/dotnet/coreclr/commit/f6cd99c01e8d206ac9b33844857e98753dd61dd8

8 years agoPartial revert "Fix problem with virtual memory commit in OOM scenario on Linux ...
Jan Kotas [Sun, 12 Jun 2016 14:18:22 +0000 (07:18 -0700)]
Partial revert "Fix problem with virtual memory commit in OOM scenario on Linux (dotnet/coreclr#5609)" (dotnet/coreclr#5744)

dotnet/coreclr#5609 is suspect to cause intermittent crashes on OS X. Keep the fix for Linux, but revert to using the original code on OS X.

Commit migrated from https://github.com/dotnet/coreclr/commit/de69718b1500d1d41c450bd61ab81c9eca152ffe

8 years agoUndo StompWriteBarrierResize reordering (dotnet/coreclr#5740)
Jan Kotas [Sun, 12 Jun 2016 04:27:51 +0000 (21:27 -0700)]
Undo StompWriteBarrierResize reordering (dotnet/coreclr#5740)

The recent commit introduced race by changing where StompWriteBarrierResize is called relative to other global state updates. Revert this change to fix the intermittent crashes that we are seeing because of that. We will look at fixing the theoretical problem that this reordering was trying to address in better way separately.

Commit migrated from https://github.com/dotnet/coreclr/commit/63d9a2e9ecffa27e15c31856868b76e2055aee87

8 years agoAdd check for gnu/lib-names.h (dotnet/coreclr#5727)
Peter Jas [Sun, 12 Jun 2016 02:00:54 +0000 (05:00 +0300)]
Add check for gnu/lib-names.h (dotnet/coreclr#5727)

The header `<gnu/lib-names.h>` is not present on musl-libc based OSes.
Those names are not listed in any system header and this is deemed
irrelevant to have such a header in musl according to:
http://www.openwall.com/lists/musl/2013/11/09/1

Commit migrated from https://github.com/dotnet/coreclr/commit/af687f4600df72a103b1e0bb83d2b26a1d26a499

8 years agoCheck for unavailable cache-size macro (dotnet/coreclr#5728)
Peter Jas [Sun, 12 Jun 2016 01:59:50 +0000 (04:59 +0300)]
Check for unavailable cache-size macro (dotnet/coreclr#5728)

In musl-libc world _SC_LEVEL1_DCACHE_SIZE is undefined.

Commit migrated from https://github.com/dotnet/coreclr/commit/d85c8560b06a5df27aef342a9f94fa33c2ec03b8

8 years agoCorrect comment (dotnet/coreclr#5738)
Jan Kotas [Sun, 12 Jun 2016 01:59:28 +0000 (18:59 -0700)]
Correct comment (dotnet/coreclr#5738)

Commit migrated from https://github.com/dotnet/coreclr/commit/b0d17dcf18ca4e62b8cd10427d8b7c6cf5a26da1

8 years agoMerge pull request dotnet/coreclr#5544 from vancem/EtwSessionFix
Vance Morrison [Sat, 11 Jun 2016 19:37:08 +0000 (12:37 -0700)]
Merge pull request dotnet/coreclr#5544 from vancem/EtwSessionFix

Fix a problem where stale old, closed ETW sessions might be turned on.

Commit migrated from https://github.com/dotnet/coreclr/commit/1e54f44cc1736cea6c636f5138c733879d4dd1c2

8 years agoTypedef __ptrace_request for musl-libc (dotnet/coreclr#5730)
Peter Jas [Sat, 11 Jun 2016 18:23:03 +0000 (21:23 +0300)]
Typedef __ptrace_request for musl-libc (dotnet/coreclr#5730)

Ref: http://www.openwall.com/lists/musl/2015/10/01/3

Commit migrated from https://github.com/dotnet/coreclr/commit/7261cf7f5e6abd89add023dbcf5c1bc9ccac67b6

8 years agoAdd check for sys/sysctl.h (dotnet/coreclr#5726)
Peter Jas [Sat, 11 Jun 2016 18:05:47 +0000 (21:05 +0300)]
Add check for sys/sysctl.h (dotnet/coreclr#5726)

On some operating systems `<sys/sysctl.h>`is not present yet `sysct`
function in available. One example is Alpine Linux which uses musl-libc
as opposed to GNU libc.

Ref: dotnet/corefxdotnet/coreclr#6253

Commit migrated from https://github.com/dotnet/coreclr/commit/0eafec3e1065ba68c10f065d2713aaea0f75c160

8 years agoAdd Profiling APIs that fail on non-Windows OS
Mukul Sabharwal [Fri, 10 Jun 2016 20:36:07 +0000 (13:36 -0700)]
Add Profiling APIs that fail on non-Windows OS

Commit migrated from https://github.com/dotnet/coreclr/commit/5938c8da43cc179f6965f30f18d32d25c5fffd98

8 years agoDo not use fragile native image content when generating R2R images (dotnet/coreclr...
Jan Kotas [Sat, 11 Jun 2016 14:49:03 +0000 (07:49 -0700)]
Do not use fragile native image content when generating R2R images (dotnet/coreclr#5715)

Commit migrated from https://github.com/dotnet/coreclr/commit/e266aff51403794bb2bd925a7ebb1ea53b119575

8 years agoUpdates tryrun.cmake for ARM / ARM (softfp) (dotnet/coreclr#5673)
Jonghyun Park [Sat, 11 Jun 2016 13:30:10 +0000 (22:30 +0900)]
Updates tryrun.cmake for ARM / ARM (softfp) (dotnet/coreclr#5673)

While fixing dotnet/coreclr#5316 (PR dotnet/coreclr#5317, PR dotnet/coreclr#5323), all the features related with PROCFS
are disabled in ARM and ARM (softfp) cross build.

As a result, the collision avodance logic in GetProcessIdDisambiguationKey is disabled,
which leads to random coreclr_initialize failures
(CLR failed to initialize itself when the previous execution of CLR with the same PID
abnormally terminates)

This commit tries to re-enable the relevant features for ARM and ARM (softfp) cross-build.

Since the ARM/Linux emulator (which is the current reference in use) supports
/proc/self/stat, /proc/self/status, /proc/self/maps, this commit re-enables
three relevant features (HAVE_PROCFS_STAT, HAVE_PROCFS_STATUS, HAVE_PROCFS_MAPS).

This commit tries to fix dotnet/coreclr#5583.

Commit migrated from https://github.com/dotnet/coreclr/commit/c265ae38157f8543f9100c5f076d4dfa953766c7

8 years agoJapaneseCalendar: Use Registry.LocalMachine instead of RegistryKey.GetBaseKey(Registr...
Justin Van Patten [Sat, 11 Jun 2016 13:07:56 +0000 (06:07 -0700)]
JapaneseCalendar: Use Registry.LocalMachine instead of RegistryKey.GetBaseKey(RegistryKey.HKEY_LOCAL_MACHINE) (dotnet/coreclr#5725)

JapaneseCalendar is the only code outside of the Registry code that
calls RegistryKey.GetBaseKey(RegistryKey.HKEY_LOCAL_MACHINE) to get a
RegistryKey instance for the local machine hive. Everywhere else uses
Registry.LocalMachine. Update JapaneseCalendar to match, which also
avoids the unnecessary RegistryKey/SafeRegistryHandle allocations.

Commit migrated from https://github.com/dotnet/coreclr/commit/59e0c0e5ac45986e8345043f53198f16a44191b4

8 years agoMerge pull request dotnet/coreclr#5680 from prajwal-aithal/devel/arm-ci-cross-build
Jarret Shook [Sat, 11 Jun 2016 13:07:39 +0000 (06:07 -0700)]
Merge pull request dotnet/coreclr#5680 from prajwal-aithal/devel/arm-ci-cross-build

ARM-CI: Convert Linux ARM emulator CI check to cross build

Commit migrated from https://github.com/dotnet/coreclr/commit/0c7ac3bc7cf532ce4d6dd75909439bd69f871de8

8 years agoRemove obsolete Registry.DynData field from System.Private.CoreLib (dotnet/coreclr...
Justin Van Patten [Sat, 11 Jun 2016 13:06:22 +0000 (06:06 -0700)]
Remove obsolete Registry.DynData field from System.Private.CoreLib (dotnet/coreclr#5724)

Registry is internal in System.Private.CoreLib due to being pulled-in
by the dependency closure. The obsolete DynData field is only valid
on Win9X, so there's no need to allocate it and keep it around in
CoreCLR. Remove it from System.Private.CoreLib with an ifdef, along
with other references to the HKEY_DYN_DATA hive.

Commit migrated from https://github.com/dotnet/coreclr/commit/0af0ffb17e428a3570e1ae55bfcceb78bdc8eb93

8 years agoARM-CI: Convert Linux ARM emulator CI check to cross build
Prajwal A N [Fri, 10 Jun 2016 06:03:16 +0000 (15:03 +0900)]
ARM-CI: Convert Linux ARM emulator CI check to cross build

* Previously used emulated build took a lot of time leading to timeout errors
* Changing this CI check to build using cross build

Signed-off-by: Prajwal A N <an.prajwal@samsung.com>
Commit migrated from https://github.com/dotnet/coreclr/commit/8770667916f3a87279b1871221341f6ef55755f8

8 years agoRemove non-generic Stack from System.Private.CoreLib (dotnet/coreclr#5703)
Justin Van Patten [Sat, 11 Jun 2016 05:15:43 +0000 (22:15 -0700)]
Remove non-generic Stack from System.Private.CoreLib (dotnet/coreclr#5703)

The non-generic Stack class only exists internally in
System.Private.CoreLib because it is being used in the Environment
class in one place for resource lookup and therefore is being
pulled-in by the dependency closure. It can be removed by using
List<string> instead.

Commit migrated from https://github.com/dotnet/coreclr/commit/9af15d39772b66ebe6d15d60a8737f46a07beb49

8 years agoMerge pull request dotnet/coreclr#5707 from kouvel/BgMarkFreeObjectAdvanceFix
Koundinya Veluri [Sat, 11 Jun 2016 01:43:31 +0000 (18:43 -0700)]
Merge pull request dotnet/coreclr#5707 from kouvel/BgMarkFreeObjectAdvanceFix

Fix for GC hole when using software write watch

Commit migrated from https://github.com/dotnet/coreclr/commit/8fe4507d7f241745b0701f76c7bed3d1a91f3ebe

8 years agoMerge pull request dotnet/coreclr#5692 from AndyAyersMS/DerministicCrypto
Andy Ayers [Fri, 10 Jun 2016 22:04:15 +0000 (15:04 -0700)]
Merge pull request dotnet/coreclr#5692 from AndyAyersMS/DerministicCrypto

Modify Crypto benchmark so it uses a fixed random seed

Commit migrated from https://github.com/dotnet/coreclr/commit/639803f50346e495d25b096cb49b4a06273f7c63

8 years agoFix rethrow of managed exception from native code (dotnet/coreclr#5697)
Jan Vorlicek [Fri, 10 Jun 2016 21:44:24 +0000 (23:44 +0200)]
Fix rethrow of managed exception from native code (dotnet/coreclr#5697)

This change fixes a problem that happens when managed exception is caught
in native code, rethrown and then caught and passed to DispatchManagedException
to be propagated further through managed code frames.
The problem is that while the exception was rethrown, it still has the
TargetFrameSp member set to the frame that has caught it and so the
DispatchManagedException thinks it is just continuing to propagate it in the
second pass instead of starting a new first pass.
The UnwindManagedExceptionPass2 then asserts, because the TargetFrameSp is
below the frame it is about to process.

The fix is to reset the TargetFrameSp to NoTargetFrameSp when the exception
is caught in native code - in PAL_EXCEPT and EX_CATCH_IMPL_EX (which catches
all exceptions).

I have also added few stress log messages for processing exception in native
frames that helped debug the issue.

Commit migrated from https://github.com/dotnet/coreclr/commit/91037acfac26eccd3ac17e58df3c7d0d0b2f645d

8 years agoFix for GC hole when using software write watch
Koundinya Veluri [Fri, 10 Jun 2016 20:34:43 +0000 (13:34 -0700)]
Fix for GC hole when using software write watch

Issue:
- When using software write watch, getting dirty pages is synchronized with growing the write watch table using gc_lock, as those cannot happen concurrently
- It turns out that a foreground GC can happen at that point, pausing the background GC while it tries to acquire gc_lock
- In this issue, the last object in the previously revisited page is a free object whose range spans one or more pages
- With the intent of skipping the free range, revisit_written_page() records the next object to scan immediately following the free range
- Since only 100 dirty pages are retrieved at a time, the next set of up to 100 dirty pages needs to be requested. Before that, a foreground GC begins, and the background GC pauses trying to acquire gc_lock.
- The foreground GC promotes some objects, and in the process allocates from the free range above, and completes
- One of the moved objects in that previously free range gets a reference to a new object that is not referenced from anywhere else
- The background GC resumes, determines that the moved object's page is dirty, but skips revisiting the object because the previously recorded next object from which to start scanning, already took the free range size into account before it was allocated
- The background GC does not mark through the moved object, so the newly referenced object appears to be free, and is sweeped
- Later, either verify_heap fails or the app crashes, when trying to access that referenced object

Fix:
- Similarly to what is done for the large object heap, when revisiting a page and using software write watch, don't advance last_object when the current object is a free object that spans beyond the current page or high_address
- On the next revisit, it would start scanning from the previously scanned free object (which now may be allocated or will have a smaller size) until it reaches the requested page to scan

Fixes (but not yet closing) dotnet/coreclr#5194

Commit migrated from https://github.com/dotnet/coreclr/commit/237e9da6af703c614e0c852e7e421db46bbdfa4b