Fix segment map modification in OOM scenarios (dotnet/coreclr#9241)
authorSean Gillespie <sean@swgillespie.me>
Thu, 2 Feb 2017 02:32:33 +0000 (18:32 -0800)
committerGitHub <noreply@github.com>
Thu, 2 Feb 2017 02:32:33 +0000 (18:32 -0800)
commitc1740724fff249c6d608fd2fead5300659e62de8
tree9dec46b199dc92b7c4dd1d300476f28bcea5780c
parentfd806728ef1775f81b20587f361a9bce7024cc0a
Fix segment map modification in OOM scenarios (dotnet/coreclr#9241)

* Fix an issue where the segment mapping table is not reverted
back to its original state when failing to commit the mark array
in an OOM scenario. Fixes dotnet/coreclr#9064

* Code review feedback

* Update seg_mapping_table before setting g_gc_*_address

* Add a barrier between the seg_mapping_table write and updates to g_gc_*_address

Commit migrated from https://github.com/dotnet/coreclr/commit/5a7dc18f5985bd28ea798e6a9fc4b8ad5fef09ca
src/coreclr/src/gc/gc.cpp