Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
179 commits
Select commit Hold shift + click to select a range
12d9354
Use buffer.Length as the source of truth for ReadDirectoryChanges (#7…
github-actions[bot] Aug 17, 2022
6157b3d
[release/7.0-rc1] [wasm][debugger] Hide members from classes that don…
github-actions[bot] Aug 17, 2022
3d7d087
Product dependencies in Versions.props must be on the latest patch ve…
github-actions[bot] Aug 17, 2022
0f2546f
Don't set PublishAot in SDK by default (#74048)
github-actions[bot] Aug 17, 2022
d8866dc
Add missing .npmrc (#74039)
github-actions[bot] Aug 17, 2022
8baff7d
[release/7.0-rc1] [mono] Implement missing functionality for cctor in…
github-actions[bot] Aug 17, 2022
ceef11f
[release/7.0-rc1] Optimized string.Replace(char, char) (#74047)
github-actions[bot] Aug 17, 2022
02789c3
[release/7.0-rc1] Workload changes - account for SDK bands and use ar…
github-actions[bot] Aug 17, 2022
56e2dc0
[release/7.0] Update dependencies from dotnet/llvm-project dotnet/hot…
dotnet-maestro[bot] Aug 17, 2022
cad2af2
Vectorize {Last}IndexOf{Any}{Except} without code duplication (#73768…
adamsitnik Aug 17, 2022
d4b85ca
[release/7.0-rc1] perf pipeline: Switch to node 14.x (#74089)
github-actions[bot] Aug 17, 2022
dc98f58
Don't fail the test when the file is in use, fixes #73925 (#74094)
github-actions[bot] Aug 18, 2022
a969995
[release/7.0-rc1] Fix auto layout algorithm to compute structure alig…
github-actions[bot] Aug 18, 2022
7ea346d
[release/7.0-rc1] Add Arm64 PGO/IBC to Windows and Linux builds (#74098)
github-actions[bot] Aug 18, 2022
7ab10ff
[release/7.0-rc1] Set configureplatform.make prerelease to 0 (#74103)
carlossanlop Aug 18, 2022
68aebc1
[release/7.0-rc1] Fix nullable annotations on generic math interfaces…
github-actions[bot] Aug 18, 2022
08fdcb7
[release/7.0-rc1] Move runtimeconfig.template.json stuff to csproj (#…
github-actions[bot] Aug 18, 2022
0ec29b6
[release/7.0-rc1] [NativeAOT] Add method parameter names to stack tra…
github-actions[bot] Aug 18, 2022
238c048
Merge pull request #74045 from dotnet-maestro-bot/merge/release/7.0-r…
carlossanlop Aug 19, 2022
f908dbc
[Ppc64le] bug fixes (#74131)
alhad-deshpande Aug 19, 2022
195178b
Improve ControlledExecution tests (#74186)
github-actions[bot] Aug 19, 2022
1af9cfd
Shorten the workload name even more (#74176)
github-actions[bot] Aug 19, 2022
d9c1700
[release/7.0-rc1] Disable Int128 use in by value ABI scenarios, and f…
github-actions[bot] Aug 20, 2022
39d767a
Don't NativeAOT crossgen on ARM64 (#74221)
github-actions[bot] Aug 20, 2022
c7cab43
[release/7.0-rc1] Add a way to suppress all trimming warnings (#74220)
github-actions[bot] Aug 20, 2022
37193fd
Don't track current field of state machines (#74216)
github-actions[bot] Aug 20, 2022
3c73d4d
[release/7.0] Update arcade to 7.0.0-beta.22418.4 (#74210)
hoyosjs Aug 20, 2022
7d8ae61
Merge pull request #74205 from dotnet-maestro-bot/merge/release/7.0-r…
ViktorHofer Aug 20, 2022
e9070dd
[release/7.0-rc1] Fix for Random failures in System.Numerics.Tests.mo…
github-actions[bot] Aug 20, 2022
2b52df8
[release/7.0-rc1] Disable matching constants for vectors that needs u…
github-actions[bot] Aug 20, 2022
5477d65
[release/7.0-rc1] Add runs for release/7.0* on community architecture…
github-actions[bot] Aug 20, 2022
d8f8be9
Prevent awaiting promise that never resolves (#74243)
github-actions[bot] Aug 20, 2022
e897e88
Remove AES and SubtleCrypto from WASM (#74165) (#74246)
eerhardt Aug 20, 2022
a2e9125
[release/7.0-rc1] Disable failing runtime extra platforms tests (#74264)
github-actions[bot] Aug 20, 2022
8196f9a
[release/7.0-rc1] Directory.CreateDirectory: create missing parents u…
github-actions[bot] Aug 20, 2022
b3ef656
[release/7.0-rc1] [wasm] Unwrap exception when calling entrypoint (#7…
github-actions[bot] Aug 20, 2022
eb93e5d
Update Xunit to 2.4.2 (#74296)
ViktorHofer Aug 21, 2022
bc7a715
[release/7.0] Update dependencies from dotnet/llvm-project dotnet/run…
dotnet-maestro[bot] Aug 21, 2022
9cdad85
Merge branch 'release/7.0' into merge/release/7.0-rc1-to-release/7.0
akoeplinger Aug 21, 2022
4823884
[release/7.0-rc1] Fix one more Crossgen2 field layout mismatch with r…
github-actions[bot] Aug 21, 2022
f8d4c9b
[release/7.0-rc1] Fix loading of R2R assemblies from byte arrays/stre…
github-actions[bot] Aug 21, 2022
9c523f8
Update dependencies from https://github.com/dotnet/icu build 20220819…
dotnet-maestro[bot] Aug 21, 2022
37ddbef
Update dependencies from https://github.com/dotnet/arcade build 20220…
dotnet-maestro[bot] Aug 21, 2022
754014e
[release/7.0-rc1] net7.0 + net6.0 workload multitargeting changes (#7…
lewing Aug 22, 2022
e32d538
Merge pull request #74297 from dotnet-maestro-bot/merge/release/7.0-r…
carlossanlop Aug 22, 2022
de3cd20
[release/7.0-rc1] Omit the JS sync context if threads are not enabled…
github-actions[bot] Aug 22, 2022
55594df
Replace options lists with arrays. (#74230)
github-actions[bot] Aug 22, 2022
2b9aacb
exports dotnet and exit as named export (#74222)
github-actions[bot] Aug 22, 2022
0bc5fa8
Merge branch 'release/7.0' into merge/release/7.0-rc1-to-release/7.0
lewing Aug 22, 2022
ef077d0
Update dependencies from https://github.com/dotnet/runtime-assets bui…
dotnet-maestro[bot] Aug 22, 2022
d8e8436
[release/7.0-rc1] Fix leak caused by not disposing the scoped parent …
github-actions[bot] Aug 22, 2022
e69c9d0
[release/7.0-rc1] Change signature for diagnostic binaries (#74323)
github-actions[bot] Aug 22, 2022
d42d9fe
[release/7.0-rc1] [Mono] Only enable Arm intrinsics for full aot mode…
github-actions[bot] Aug 22, 2022
0df231c
[release/7.0-rc1] Roll forward to the latest 6.0.x builds (#74288)
lewing Aug 22, 2022
9272ca3
Update ComponentResources versions and list (#74365)
lewing Aug 22, 2022
5ddbb7c
Bump intellisense package version to Preview7 (#74356)
github-actions[bot] Aug 22, 2022
40dc057
[release/7.0-rc1] Fix mono package versions during stabilization (#74…
github-actions[bot] Aug 23, 2022
12cc3d4
Update workload manifest paths (#74364)
lewing Aug 23, 2022
7193b90
[release/7.0-rc1] hold reference to SslContextHandle to prevent crash…
github-actions[bot] Aug 23, 2022
abc9acd
Merge pull request #74350 from dotnet-maestro-bot/merge/release/7.0-r…
carlossanlop Aug 23, 2022
516f061
[release/7.0-rc1] Improve DOTNET_JitDisasm and introduce DOTNET_JitDi…
EgorBo Aug 23, 2022
4965a24
Add Fedora 38 RID (#74377)
omajid Aug 23, 2022
35e86f9
[release/7.0] Backport tar bug fixes and improvements (#74449)
carlossanlop Aug 24, 2022
5c7741a
Disable VerifyXmlResolver test. (#74447)
eiriktsarpalis Aug 24, 2022
fdd9a86
[release/7.0] [mono] Disable failing Globalization and Transactions t…
github-actions[bot] Aug 24, 2022
1356e44
Update dependencies from https://github.com/dotnet/emsdk build 202208…
dotnet-maestro[bot] Aug 24, 2022
430c42a
[release/7.0-rc1][mini] double quote linker path in defined(LD_NAME) …
lambdageek Aug 24, 2022
13876e9
Fix write barriers in NativeAOT (#74455)
github-actions[bot] Aug 24, 2022
b211223
[release/7.0] Fix issues found in recent Int128 ABI change (#74460)
github-actions[bot] Aug 24, 2022
d8cc63f
Add faster DAC EnumMemoryRegion option with less memory usage (#74300…
Aug 24, 2022
949340c
Use BOOL (vs. bool) in event pipe qcall signatures (#74481)
github-actions[bot] Aug 24, 2022
dc12d53
[release/7.0] Disable ConnectWithRevocation_WithCallback test (#74483)
github-actions[bot] Aug 24, 2022
5736b6e
Remove assert from Http3Connection.SendAsync (#74348) (#74484)
rzikm Aug 24, 2022
52e41ee
[release/7.0] Update dependencies from dotnet/llvm-project dotnet/run…
dotnet-maestro[bot] Aug 24, 2022
7fac450
Update dependencies from https://github.com/dotnet/linker build 20220…
dotnet-maestro[bot] Aug 24, 2022
f0dbf37
Update dependencies from https://github.com/dotnet/emsdk build 202208…
dotnet-maestro[bot] Aug 24, 2022
6df3ae5
[release/7.0] Bump branding to RC2 (#74515)
carlossanlop Aug 25, 2022
7b1acce
Move all build pools to -Svc equivalents (except eng/common; this nee…
MattGal Aug 25, 2022
f170c1a
Update dependencies from https://github.com/dotnet/emsdk build 202208…
dotnet-maestro[bot] Aug 25, 2022
71b27a5
Don't re-use XmlSchemaSet - it's not threadsafe. (#74564)
github-actions[bot] Aug 25, 2022
0969048
Disable distributed transaction tests on ARM (#74573)
github-actions[bot] Aug 25, 2022
e486741
Merge branch 'release/7.0' into merge/release/7.0-rc1-to-release/7.0
lewing Aug 25, 2022
1a5c7ee
Fixes trying to evaluate a debugger helper function in a non-wasm pag…
github-actions[bot] Aug 25, 2022
66173b4
[release/7.0] [mono] Assert that we don't need to inflate types when …
github-actions[bot] Aug 25, 2022
621ad66
Fix FormattingHelpers.CountDigits(UInt128) and add more tests for Int…
github-actions[bot] Aug 25, 2022
2324d02
Enable caching of writeable W^X mappings (#74589)
github-actions[bot] Aug 25, 2022
06e3761
[release/7.0] Only stack allocate when marshalling Utf8 arguments (#7…
github-actions[bot] Aug 25, 2022
222d4da
Remove unnecessary runtime lookup for constrained callvirt (#74523)
github-actions[bot] Aug 25, 2022
3f9a51a
Add NuGet package for System.Runtime.Serialization.Schema (#74597)
github-actions[bot] Aug 25, 2022
5c9432e
[release/7.0] Improve windows hardware exception handling performance…
janvorli Aug 25, 2022
2c5d001
[release/7.0] Allow SIMD-returning calls as arguments (#74520)
github-actions[bot] Aug 25, 2022
dc242e9
Merge pull request #74539 from dotnet-maestro-bot/merge/release/7.0-r…
carlossanlop Aug 25, 2022
fbed739
Bump Kerberos.NET version in tests (#74600)
github-actions[bot] Aug 25, 2022
df85dc1
[mini] Disable passing valuetypes in SIMD registers (#74592)
github-actions[bot] Aug 25, 2022
01708fe
[release/7.0] Disable ConnectWithRevocation_ServerCertWithoutContext_…
github-actions[bot] Aug 25, 2022
fc2c2ae
[mono] Disable JIT/Methodical/Coverage/copy_prop_byref_to_native_int …
github-actions[bot] Aug 26, 2022
1303204
Update dependencies from https://github.com/dotnet/llvm-project build…
dotnet-maestro[bot] Aug 26, 2022
105d76c
Retry logic for distributed transactions test (#74649)
github-actions[bot] Aug 26, 2022
06aceb7
Revert "[MONO] Move marshal-ilgen into a component (#71203)" (#74675)
lambdageek Aug 27, 2022
edb7234
[release/7.0] Use the regType for extracting the RegisterType (#74670)
github-actions[bot] Aug 28, 2022
58c5937
Fix unwinding for NativeAOT on Unix x64 (#74690)
github-actions[bot] Aug 28, 2022
9c87579
[release/7.0] Update dependencies from dotnet/llvm-project dotnet/ros…
dotnet-maestro[bot] Aug 28, 2022
2fc5cc9
[release/7.0] Ensure that the result for PowMod is fully initialized …
github-actions[bot] Aug 28, 2022
211930d
[release/7.0] For perf, remove Invoker pattern for fields (#74693)
github-actions[bot] Aug 28, 2022
fe99c44
[release/7.0] Implement proper File System detection for Apple OSes (…
github-actions[bot] Aug 28, 2022
099304f
[release/7.0] Use System.Numerics.IEqualityOperators.op_Equality in S…
github-actions[bot] Aug 29, 2022
bdb78f4
Fixed GC collecting listener and/or connection while waiting on new c…
ManickaP Aug 29, 2022
dff9c90
[release/7.0] [NativeAOT] do not do shutdown for the main thread on W…
github-actions[bot] Aug 29, 2022
6fa754e
[release/7.0] Fix signature for 64-bit delegate profiling helper (#74…
github-actions[bot] Aug 29, 2022
5b15f27
Move distributed transaction test to OleTxTests (#74748)
github-actions[bot] Aug 30, 2022
6f3db06
Discourage using explicit package references to ILCompiler to publish…
LakshanF Aug 30, 2022
824c902
[release/7.0] [wasm][debugger] Fix chinese character in project name …
github-actions[bot] Aug 30, 2022
c027fa8
Update THIRD-PARTY-NOTICES file (#74760)
NikolaMilosavljevic Aug 30, 2022
b705274
[release/7.0] [NativeAOT] enable background GC on Unix (#74772)
github-actions[bot] Aug 30, 2022
370a238
Fix TransactionInterop.GetDtcTransaction() (#74821)
github-actions[bot] Aug 30, 2022
db22ec5
[release/7.0] Fix incorrect "illegal XML comment chars" check & add r…
github-actions[bot] Aug 30, 2022
c37531f
Merge pull request #74692 from dotnet-maestro-bot/merge/release/7.0-r…
carlossanlop Aug 30, 2022
65051a0
[ppc64le] Bug fixes (#74800)
alhad-deshpande Aug 31, 2022
d1a7184
Issue was that if a BGC thread handles a mark stack overflow, but run…
github-actions[bot] Aug 31, 2022
a0cc4ea
[release/7.0] Fix two auto-atomicity Regex bugs (#74834)
github-actions[bot] Aug 31, 2022
90f7137
Update dependencies from https://github.com/dotnet/emsdk build 202208…
dotnet-maestro[bot] Aug 31, 2022
5408b21
[release/7.0] [mono] Determine any memory/CPU limitations from sysfs …
github-actions[bot] Aug 31, 2022
6309bdc
[release/7.0] Update dependencies from dotnet/llvm-project dotnet/run…
dotnet-maestro[bot] Aug 31, 2022
608da95
[release/7.0] Disable nullability warnings in JSON source generator (…
github-actions[bot] Sep 1, 2022
9ce88fc
Update public pool names (#74906) (#74920)
dotnet-maestro-bot Sep 1, 2022
6d10e4c
[release/7.0] Fix use of uninitialized memory for Vector3 constants (…
github-actions[bot] Sep 1, 2022
ed775e2
[release/7.0] [wasm] Fix `JSExport` on struct and records (#74890)
github-actions[bot] Sep 2, 2022
eb5d3f9
[release/7.0] Only attempt to use ESRP connection in approved branche…
mmitche Sep 2, 2022
734f981
Turn in-build signing on (#74941)
mmitche Sep 2, 2022
e5d8792
[release/7.0] Change some exception types thrown in Tar APIs (#74893)
github-actions[bot] Sep 2, 2022
4a03353
[release/7.0] Disallow TarWriter from writing link entries without Li…
github-actions[bot] Sep 2, 2022
519c93d
[release/7.0] Ensure that the SSE fallback for Vector3.Dot masks off …
github-actions[bot] Sep 2, 2022
0604798
Fix buffer overruns in GC code (#74974)
github-actions[bot] Sep 2, 2022
d70efc8
[release/7.0] [NativeAOT] Save full ARM64 SIMD arg registers in Unive…
github-actions[bot] Sep 2, 2022
8b6997f
[release/7.0] Fix issue #74741 - assert failure during weak pointer s…
github-actions[bot] Sep 2, 2022
f694726
[release/7.0] [ARM64] - `IsValidCompareChain` should return `false` i…
github-actions[bot] Sep 2, 2022
d2e3961
Make System.Transactions.Local trimmable (#75004)
github-actions[bot] Sep 2, 2022
8b5185a
[release/7.0] [RateLimiting] Handle Timer jitter (#74971)
github-actions[bot] Sep 3, 2022
583bc49
Update dependencies from https://github.com/dotnet/icu build 20220901…
dotnet-maestro[bot] Sep 3, 2022
36c60aa
[release/7.0] Update dependencies from dotnet/llvm-project dotnet/run…
dotnet-maestro[bot] Sep 3, 2022
ce7e864
Revert change in StringBuilder.Append(char) (#74898)
github-actions[bot] Sep 3, 2022
3cb7fe7
[release/7.0] Don't try to build PGO tools on platforms with no CoreC…
github-actions[bot] Sep 6, 2022
2912eb2
[release/7.0] Throw on incompatible WebSocket options (#75014)
github-actions[bot] Sep 6, 2022
1e97604
Enable HTTP & SSL stress runs on release/7.0 (#75082)
github-actions[bot] Sep 6, 2022
b8fed32
Update dependencies from https://github.com/dotnet/emsdk build 202209…
dotnet-maestro[bot] Sep 6, 2022
b617f4f
[mono][jit] Zero extend the return when we might be invoking llvm gen…
github-actions[bot] Sep 6, 2022
ff921f6
Fix argument validation in RuntimeType.InvokeMember (#75006)
github-actions[bot] Sep 6, 2022
85f02e8
[release/7.0] Do not retype small locals in `FIELD_LIST`s on x86 (#75…
github-actions[bot] Sep 6, 2022
b78f82b
Add support so that SDK6 will continue to get the latest ILC packages…
github-actions[bot] Sep 6, 2022
518be54
[release/7.0] Fix W^X flag for setting `ITypeInfo` (#75046)
github-actions[bot] Sep 6, 2022
b69e591
[release/7.0] Remove duplicate SourceGeneration generator refs (#75128)
github-actions[bot] Sep 6, 2022
9b50564
Disable KerberosExecutor on LinuxBionic, it doesn't have GSSAPI libra…
github-actions[bot] Sep 6, 2022
9dda765
[release/7.0][wasm] Use the correct runtime pack version when the wor…
radical Sep 6, 2022
e56d52d
[release/7.0][wasm] SIMD related build fixes (#75042)
radical Sep 7, 2022
340e3fa
Fix OP_CHECK_THIS to read 1 byte instead of 4/8 on x86/x64/LLVM. (#74…
github-actions[bot] Sep 7, 2022
b357f02
Use the register of CAST for contained index operator (#74275) (#75145)
kunalspathak Sep 7, 2022
6623792
[release/7.0] Update Roslyn compiler build (#75156)
github-actions[bot] Sep 7, 2022
982b881
Support multiple processor groups for NativeAOT (#75174)
github-actions[bot] Sep 7, 2022
fd3d925
[release/7.0] Fix race condition in DacEnumerableHashTable::BaseFindN…
github-actions[bot] Sep 7, 2022
6d33609
dummy commit to runtime-extra-platforms.yml to kick the scheduling en…
radical Sep 7, 2022
4f686c2
Remove workaround for manifest changes (#75197)
lewing Sep 7, 2022
69ddb97
[QUIC] Fix native crashes and heap corruption via "generated-like" in…
CarnaViire Sep 8, 2022
b83539c
Fix tests to use valid PBE iterations (#75240)
vcsjones Sep 8, 2022
a20c82f
[release/7.0][ppc64le] Fixed thunk address 8 byte alignment issue (#7…
alhad-deshpande Sep 8, 2022
f85d370
[release/7.0][wasm-mt] Fix pack/build issues in threaded builds (#75171)
lambdageek Sep 8, 2022
f8b6128
[release/7.0][wasm] Add CI job for AOT+SIMD to `runtime-wasm` for PRs…
radical Sep 8, 2022
5d71eeb
Swallow ObjectDisposedException when aborting QuicStream from Cancell…
github-actions[bot] Sep 8, 2022
3db9d17
[release/7.0] JIT: Simplify JitDisasm matching behavior and support n…
jakobbotsch Sep 8, 2022
22dc691
JIT: Fix unrecognized unaligned field indirections on ARM32 (#75250)
github-actions[bot] Sep 8, 2022
2fae71b
[wasm] Drop actually not exported types from dotnet.d.ts (#75265)
github-actions[bot] Sep 8, 2022
0090857
[Linux-Bionic] Skip NamedPipeTest_UnixDomainSocket tests and move LB …
steveisok Sep 8, 2022
b81eb4f
[release/7.0] Fix WebProxy Race Condition Issue (#75246)
github-actions[bot] Sep 9, 2022
88912e2
[release/7.0] Update dependencies from dotnet/llvm-project dotnet/run…
dotnet-maestro[bot] Sep 9, 2022
3913806
[release/7.0] Update dependencies from dotnet/icu (#75194)
dotnet-maestro[bot] Sep 9, 2022
a141484
[release/7.0] Update dependencies from dotnet/emsdk (#75195)
dotnet-maestro[bot] Sep 9, 2022
acf0dd2
[release/7.0] Fix `Exp10M1(TSelf)` and `Round(TSelf, MidpointRounding…
github-actions[bot] Sep 9, 2022
d18ff87
[release/7.0] Fix RegexOptions.NonBacktracking matching end anchors a…
github-actions[bot] Sep 9, 2022
8bb1983
Initialize endTime on OSX (#75316)
github-actions[bot] Sep 9, 2022
291c470
Manually backporting #74599 to 7.0 for RC2.
StephenMolloy Sep 9, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add faster DAC EnumMemoryRegion option with less memory usage (#74300) (
#74464)

Issue: #72148

Instead of drilling down into all the individual MT/MD/EEClass, etc. data structures, add the LoaderAllocator/LoaderHeaps regions directly.

Add new CLRDATA_ENUM_MEM_HEAP2 flag for the fast path.

To reduce risk of incomplete core dumps this is enabled by the COMPlus_EnableFastHeapDumps env var. This env var is only looked at by the Linux/MacOS createdump. It is currently ignored on Windows. The new HEAP2 flag is works when passed to the EnumMemoryRegions API on Windows but createdump can't set it because MiniDumpWriteDump in dbghelp.dll loads/calls the DAC API.

Fix MacOS dlopen error message
  • Loading branch information
Mike McLaughlin authored Aug 24, 2022
commit d8cc63fd0c4f7d63e37a6cc76bce69d4d0a132ac
33 changes: 22 additions & 11 deletions src/coreclr/debug/createdump/crashinfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// The .NET Foundation licenses this file to you under the MIT license.

#include "createdump.h"
#include <clrconfignocache.h>

// This is for the PAL_VirtualUnwindOutOfProc read memory adapter.
CrashInfo* g_crashInfo;
Expand Down Expand Up @@ -328,24 +329,34 @@ CrashInfo::EnumerateMemoryRegionsWithDAC(MINIDUMP_TYPE minidumpType)
{
TRACE("EnumerateMemoryRegionsWithDAC: Memory enumeration STARTED (%d %d)\n", m_enumMemoryPagesAdded, m_dataTargetPagesAdded);

// Since on both Linux and MacOS all the RW regions will be added for heap
// dumps by createdump, the only thing differentiating a MiniDumpNormal and
// a MiniDumpWithPrivateReadWriteMemory is that the later uses the EnumMemory
// APIs. This is kind of expensive on larger applications (4 minutes, or even
// more), and this should already be in RW pages. Change the dump type to the
// faster normal one. This one already ensures necessary DAC globals, etc.
// without the costly assembly, module, class, type runtime data structures
// enumeration.
// Since on MacOS all the RW regions will be added for heap dumps by createdump, the
// only thing differentiating a MiniDumpNormal and a MiniDumpWithPrivateReadWriteMemory
// is that the later uses the EnumMemoryRegions APIs. This is kind of expensive on larger
// applications (4 minutes, or even more), and this should already be in RW pages. Change
// the dump type to the faster normal one. This one already ensures necessary DAC globals,
// etc. without the costly assembly, module, class, type runtime data structures enumeration.
CLRDataEnumMemoryFlags flags = CLRDATA_ENUM_MEM_DEFAULT;
if (minidumpType & MiniDumpWithPrivateReadWriteMemory)
{
char* fastHeapDumps = getenv("COMPlus_DbgEnableFastHeapDumps");
if (fastHeapDumps != nullptr && strcmp(fastHeapDumps, "1") == 0)
// This is the old fast heap env var for backwards compatibility for VS4Mac.
CLRConfigNoCache fastHeapDumps = CLRConfigNoCache::Get("DbgEnableFastHeapDumps", /*noprefix*/ false, &getenv);
DWORD val = 0;
if (fastHeapDumps.IsSet() && fastHeapDumps.TryAsInteger(10, val) && val == 1)
{
minidumpType = MiniDumpNormal;
}
// This the new variable that also skips the expensive (in both time and memory usage)
// enumeration of the low level data structures and adds all the loader allocator heaps
// instead. The above original env var didn't generate a complete enough heap dump on
// Linux and this new one does.
fastHeapDumps = CLRConfigNoCache::Get("EnableFastHeapDumps", /*noprefix*/ false, &getenv);
if (fastHeapDumps.IsSet() && fastHeapDumps.TryAsInteger(10, val) && val == 1)
{
flags = CLRDATA_ENUM_MEM_HEAP2;
}
}
// Calls CrashInfo::EnumMemoryRegion for each memory region found by the DAC
HRESULT hr = m_pClrDataEnumRegions->EnumMemoryRegions(this, minidumpType, CLRDATA_ENUM_MEM_DEFAULT);
HRESULT hr = m_pClrDataEnumRegions->EnumMemoryRegions(this, minidumpType, flags);
if (FAILED(hr))
{
printf_error("EnumMemoryRegions FAILED %s (%08x)\n", GetHResultString(hr), hr);
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/debug/createdump/crashinfomac.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,7 @@ ModuleInfo::LoadModule()
}
else
{
TRACE("LoadModule: dlopen(%s) FAILED %d %s\n", m_moduleName.c_str(), errno, strerror(errno));
TRACE("LoadModule: dlopen(%s) FAILED %s\n", m_moduleName.c_str(), dlerror());
}
}
}
27 changes: 8 additions & 19 deletions src/coreclr/debug/daccess/daccess.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6246,24 +6246,15 @@ bool ClrDataAccess::ReportMem(TADDR addr, TSIZE_T size, bool fExpectSuccess /*=
{
if (!IsFullyReadable(addr, size))
{
if (!fExpectSuccess)
if (fExpectSuccess)
{
// We know the read might fail (eg. we're trying to find mapped pages in
// a module image), so just skip this block silently.
// Note that the EnumMemoryRegion callback won't necessarily do anything if any part of
// the region is unreadable, and so there is no point in calling it. For cases where we expect
// the read might fail, but we want to report any partial blocks, we have to break up the region
// into pages and try reporting each page anyway
return true;
// We're reporting bogus memory, so the target must be corrupt (or there is a issue). We should abort
// reporting and continue with the next data structure (where the exception is caught),
// just like we would for a DAC read error (otherwise we might do something stupid
// like get into an infinite loop, or otherwise waste time with corrupt data).
TARGET_CONSISTENCY_CHECK(false, "Found unreadable memory while reporting memory regions for dump gathering");
return false;
}

// We're reporting bogus memory, so the target must be corrupt (or there is a issue). We should abort
// reporting and continue with the next data structure (where the exception is caught),
// just like we would for a DAC read error (otherwise we might do something stupid
// like get into an infinite loop, or otherwise waste time with corrupt data).

TARGET_CONSISTENCY_CHECK(false, "Found unreadable memory while reporting memory regions for dump gathering");
return false;
}
}

Expand All @@ -6275,9 +6266,7 @@ bool ClrDataAccess::ReportMem(TADDR addr, TSIZE_T size, bool fExpectSuccess /*=
// data structure at all. Hopefully experience will help guide this going forward.
// @dbgtodo : Extend dump-gathering API to allow a dump-log to be included.
const TSIZE_T kMaxMiniDumpRegion = 4*1024*1024 - 3; // 4MB-3
if( size > kMaxMiniDumpRegion
&& (m_enumMemFlags == CLRDATA_ENUM_MEM_MINI
|| m_enumMemFlags == CLRDATA_ENUM_MEM_TRIAGE))
if (size > kMaxMiniDumpRegion && (m_enumMemFlags == CLRDATA_ENUM_MEM_MINI || m_enumMemFlags == CLRDATA_ENUM_MEM_TRIAGE))
{
TARGET_CONSISTENCY_CHECK( false, "Dump target consistency failure - truncating minidump data structure");
size = kMaxMiniDumpRegion;
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/debug/daccess/dacdbiimpl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3618,7 +3618,7 @@ void DacDbiInterfaceImpl::EnumerateMemRangesForLoaderAllocator(PTR_LoaderAllocat

// GetVirtualCallStubManager returns VirtualCallStubManager*, but it's really an address to target as
// pLoaderAllocator is DACized. Cast it so we don't try to to a Host to Target translation.
VirtualCallStubManager *pVcsMgr = PTR_VirtualCallStubManager(TO_TADDR(pLoaderAllocator->GetVirtualCallStubManager()));
VirtualCallStubManager *pVcsMgr = pLoaderAllocator->GetVirtualCallStubManager();
LOG((LF_CORDB, LL_INFO10000, "DDBII::EMRFLA: VirtualCallStubManager 0x%x\n", PTR_HOST_TO_TADDR(pVcsMgr)));
if (pVcsMgr)
{
Expand Down
1 change: 1 addition & 0 deletions src/coreclr/debug/daccess/dacimpl.h
Original file line number Diff line number Diff line change
Expand Up @@ -1328,6 +1328,7 @@ class ClrDataAccess

HRESULT EnumMemCollectImages();
HRESULT EnumMemCLRStatic(CLRDataEnumMemoryFlags flags);
HRESULT EnumMemDumpJitManagerInfo(IN CLRDataEnumMemoryFlags flags);
HRESULT EnumMemCLRHeapCrticalStatic(CLRDataEnumMemoryFlags flags);
HRESULT EnumMemDumpModuleList(CLRDataEnumMemoryFlags flags);
HRESULT EnumMemDumpAppDomainInfo(CLRDataEnumMemoryFlags flags);
Expand Down
35 changes: 33 additions & 2 deletions src/coreclr/debug/daccess/enummem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,21 @@ HRESULT ClrDataAccess::EnumMemCLRStatic(IN CLRDataEnumMemoryFlags flags)
return S_OK;
}

HRESULT ClrDataAccess::EnumMemDumpJitManagerInfo(IN CLRDataEnumMemoryFlags flags)
{
SUPPORTS_DAC;

HRESULT status = S_OK;

if (flags == CLRDATA_ENUM_MEM_HEAP2)
{
EEJitManager* managerPtr = ExecutionManager::GetEEJitManager();
managerPtr->EnumMemoryRegions(flags);
}

return status;
}

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
// This function reports memory that a heap dump need to debug CLR
Expand Down Expand Up @@ -325,6 +340,9 @@ HRESULT ClrDataAccess::EnumMemoryRegionsWorkerHeap(IN CLRDataEnumMemoryFlags fla
// Dump AppDomain-specific info
CATCH_ALL_EXCEPT_RETHROW_COR_E_OPERATIONCANCELLED( status = EnumMemDumpAppDomainInfo(flags); )

// Dump jit manager info
CATCH_ALL_EXCEPT_RETHROW_COR_E_OPERATIONCANCELLED( status = EnumMemDumpJitManagerInfo(flags); )

// Dump the Debugger object data needed
CATCH_ALL_EXCEPT_RETHROW_COR_E_OPERATIONCANCELLED( g_pDebugger->EnumMemoryRegions(flags); )

Expand Down Expand Up @@ -680,6 +698,11 @@ HRESULT ClrDataAccess::EnumMemDumpAppDomainInfo(CLRDataEnumMemoryFlags flags)
{
SUPPORTS_DAC;

if (flags == CLRDATA_ENUM_MEM_HEAP2)
{
SystemDomain::System()->GetLoaderAllocator()->EnumMemoryRegions(flags);
}

AppDomainIterator adIter(FALSE);
EX_TRY
{
Expand Down Expand Up @@ -1853,7 +1876,7 @@ HRESULT ClrDataAccess::EnumMemoryRegionsWrapper(IN CLRDataEnumMemoryFlags flags)
// triage micro-dump
status = EnumMemoryRegionsWorkerMicroTriage(flags);
}
else if (flags == CLRDATA_ENUM_MEM_HEAP)
else if (flags == CLRDATA_ENUM_MEM_HEAP || flags == CLRDATA_ENUM_MEM_HEAP2)
{
status = EnumMemoryRegionsWorkerHeap(flags);
}
Expand Down Expand Up @@ -1946,7 +1969,15 @@ ClrDataAccess::EnumMemoryRegions(IN ICLRDataEnumMemoryRegionsCallback* callback,
if (miniDumpFlags & MiniDumpWithPrivateReadWriteMemory)
{
// heap dump
status = EnumMemoryRegionsWrapper(CLRDATA_ENUM_MEM_HEAP);
if (flags == CLRDATA_ENUM_MEM_HEAP2)
{
DacLogMessage("EnumMemoryRegions(CLRDATA_ENUM_MEM_HEAP2)\n");
}
else
{
flags = CLRDATA_ENUM_MEM_HEAP;
}
status = EnumMemoryRegionsWrapper(flags);
}
else if (miniDumpFlags & MiniDumpWithFullAuxiliaryState)
{
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/debug/daccess/request.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3497,7 +3497,7 @@ ClrDataAccess::TraverseVirtCallStubHeap(CLRDATA_ADDRESS pAppDomain, VCSHeapType
SOSDacEnter();

BaseDomain* pBaseDomain = PTR_BaseDomain(TO_TADDR(pAppDomain));
VirtualCallStubManager *pVcsMgr = PTR_VirtualCallStubManager((TADDR)pBaseDomain->GetLoaderAllocator()->GetVirtualCallStubManager());
VirtualCallStubManager *pVcsMgr = pBaseDomain->GetLoaderAllocator()->GetVirtualCallStubManager();
if (!pVcsMgr)
{
hr = E_POINTER;
Expand Down
11 changes: 6 additions & 5 deletions src/coreclr/debug/ee/debugger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16596,22 +16596,23 @@ Debugger::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)
{
DAC_ENUM_VTHIS();
SUPPORTS_DAC;
_ASSERTE(m_rgHijackFunction != NULL);

if ( flags != CLRDATA_ENUM_MEM_TRIAGE)
if (flags != CLRDATA_ENUM_MEM_TRIAGE)
{
if (m_pMethodInfos.IsValid())
{
m_pMethodInfos->EnumMemoryRegions(flags);
}

DacEnumMemoryRegion(dac_cast<TADDR>(m_pLazyData),
sizeof(DebuggerLazyInit));
DacEnumMemoryRegion(dac_cast<TADDR>(m_pLazyData), sizeof(DebuggerLazyInit));
}

// Needed for stack walking from an initial native context. If the debugger can find the
// on-disk image of clr.dll, then this is not necessary.
DacEnumMemoryRegion(dac_cast<TADDR>(m_rgHijackFunction), sizeof(MemoryRange)*kMaxHijackFunctions);
if (m_rgHijackFunction.IsValid())
{
DacEnumMemoryRegion(dac_cast<TADDR>(m_rgHijackFunction), sizeof(MemoryRange)*kMaxHijackFunctions);
}
}


Expand Down
8 changes: 3 additions & 5 deletions src/coreclr/debug/ee/functioninfo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2456,9 +2456,7 @@ DebuggerMethodInfoEntry::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)

// For a MiniDumpNormal, what is needed for modules is already enumerated elsewhere.
// Don't waste time doing it here an extra time. Also, this will add many MB extra into the dump.
if ((key.pModule.IsValid()) &&
CLRDATA_ENUM_MEM_MINI != flags
&& CLRDATA_ENUM_MEM_TRIAGE != flags)
if ((key.pModule.IsValid()) && CLRDATA_ENUM_MEM_MINI != flags && CLRDATA_ENUM_MEM_TRIAGE != flags && CLRDATA_ENUM_MEM_HEAP2 != flags)
{
key.pModule->EnumMemoryRegions(flags, true);
}
Expand All @@ -2476,7 +2474,7 @@ DebuggerMethodInfo::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)
DAC_ENUM_DTHIS();
SUPPORTS_DAC;

if (flags != CLRDATA_ENUM_MEM_MINI && flags != CLRDATA_ENUM_MEM_TRIAGE)
if (flags != CLRDATA_ENUM_MEM_MINI && flags != CLRDATA_ENUM_MEM_TRIAGE && flags != CLRDATA_ENUM_MEM_HEAP2)
{
// Modules are enumerated already for minidumps, save the empty calls.
if (m_module.IsValid())
Expand Down Expand Up @@ -2505,7 +2503,7 @@ DebuggerJitInfo::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)
m_methodInfo->EnumMemoryRegions(flags);
}

if (flags != CLRDATA_ENUM_MEM_MINI && flags != CLRDATA_ENUM_MEM_TRIAGE)
if (flags != CLRDATA_ENUM_MEM_MINI && flags != CLRDATA_ENUM_MEM_TRIAGE && flags != CLRDATA_ENUM_MEM_HEAP2)
{
if (m_nativeCodeVersion.GetMethodDesc().IsValid())
{
Expand Down
10 changes: 6 additions & 4 deletions src/coreclr/inc/clrdata.idl
Original file line number Diff line number Diff line change
Expand Up @@ -308,10 +308,12 @@ interface ICLRDataLoggingCallback : IUnknown
typedef enum CLRDataEnumMemoryFlags
{
CLRDATA_ENUM_MEM_DEFAULT = 0x0,
CLRDATA_ENUM_MEM_MINI = CLRDATA_ENUM_MEM_DEFAULT, // generating skinny mini-dump
CLRDATA_ENUM_MEM_HEAP = 0x1, // generating heap dump
CLRDATA_ENUM_MEM_TRIAGE = 0x2, // generating triage mini-dump

CLRDATA_ENUM_MEM_MINI = CLRDATA_ENUM_MEM_DEFAULT, // generating skinny mini-dump
CLRDATA_ENUM_MEM_HEAP = 0x1, // generating heap dump
CLRDATA_ENUM_MEM_TRIAGE = 0x2, // generating triage mini-dump
/* Generate heap dumps faster with less memory usage than CLRDATA_ENUM_MEM_HEAP by adding
the loader heaps instead of traversing all the individual runtime data structures. */
CLRDATA_ENUM_MEM_HEAP2 = 0x3,
/* More bits to be added here later */
} CLRDataEnumMemoryFlags;

Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/inc/daccess.h
Original file line number Diff line number Diff line change
Expand Up @@ -2466,7 +2466,7 @@ typedef DPTR(PTR_PCODE) PTR_PTR_PCODE;

// Helper macro for tracking EnumMemoryRegions progress.
#if 0
#define EMEM_OUT(args) DacWarning args
#define EMEM_OUT(args) DacLogMessage args
#else
#define EMEM_OUT(args)
#endif
Expand Down
3 changes: 2 additions & 1 deletion src/coreclr/pal/prebuilt/inc/clrdata.h
Original file line number Diff line number Diff line change
Expand Up @@ -1299,7 +1299,8 @@ enum CLRDataEnumMemoryFlags
CLRDATA_ENUM_MEM_DEFAULT = 0,
CLRDATA_ENUM_MEM_MINI = CLRDATA_ENUM_MEM_DEFAULT,
CLRDATA_ENUM_MEM_HEAP = 0x1,
CLRDATA_ENUM_MEM_TRIAGE = 0x2
CLRDATA_ENUM_MEM_TRIAGE = 0x2,
CLRDATA_ENUM_MEM_HEAP2 = 0x3
} CLRDataEnumMemoryFlags;


Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/utilcode/loaderheap.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,7 @@ RangeList::RangeListBlock::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)
// code:LoaderHeap::UnlockedReservePages adds a range for the entire reserved region, instead
// of updating the RangeList when pages are committed. But in that case, the committed region of
// memory will be enumerated by the LoaderHeap anyway, so it's OK if this fails
EMEM_OUT(("MEM: RangeListBlock %p - %p\n", range->start, range->end));
DacEnumMemoryRegion(range->start, size, false);
}
}
Expand Down Expand Up @@ -1933,8 +1934,6 @@ void UnlockedLoaderHeap::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)
{
WRAPPER_NO_CONTRACT;

DAC_ENUM_DTHIS();

PTR_LoaderHeapBlock block = m_pFirstBlock;
while (block.IsValid())
{
Expand All @@ -1946,6 +1945,7 @@ void UnlockedLoaderHeap::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)
// but it seems wasteful (eg. makes each AppDomain objects 32 bytes larger on x64).
TADDR addr = dac_cast<TADDR>(block->pVirtualAddress);
TSIZE_T size = block->dwVirtualSize;
EMEM_OUT(("MEM: UnlockedLoaderHeap %p - %p\n", addr, addr + size));
DacEnumMemoryRegion(addr, size, false);

block = block->pNext;
Expand Down
37 changes: 13 additions & 24 deletions src/coreclr/vm/appdomain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5086,42 +5086,28 @@ DomainLocalModule::EnumMemoryRegions(CLRDataEnumMemoryFlags flags)
}

void
BaseDomain::EnumMemoryRegions(CLRDataEnumMemoryFlags flags,
bool enumThis)
{
SUPPORTS_DAC;
if (enumThis)
{
// This is wrong. Don't do it.
// BaseDomain cannot be instantiated.
// The only thing this code can hope to accomplish is to potentially break
// memory enumeration walking through the derived class if we
// explicitly call the base class enum first.
// DAC_ENUM_VTHIS();
}

EMEM_OUT(("MEM: %p BaseDomain\n", dac_cast<TADDR>(this)));
}

void
AppDomain::EnumMemoryRegions(CLRDataEnumMemoryFlags flags,
bool enumThis)
AppDomain::EnumMemoryRegions(CLRDataEnumMemoryFlags flags, bool enumThis)
{
SUPPORTS_DAC;

if (enumThis)
{
//sizeof(AppDomain) == 0xeb0
DAC_ENUM_VTHIS();
EMEM_OUT(("MEM: %p AppDomain\n", dac_cast<TADDR>(this)));
}
BaseDomain::EnumMemoryRegions(flags, false);

// We don't need AppDomain name in triage dumps.
if (flags != CLRDATA_ENUM_MEM_TRIAGE)
{
m_friendlyName.EnumMemoryRegions(flags);
}

if (flags == CLRDATA_ENUM_MEM_HEAP2)
{
GetLoaderAllocator()->EnumMemoryRegions(flags);
}

m_Assemblies.EnumMemoryRegions(flags);
AssemblyIterator assem = IterateAssembliesEx((AssemblyIterationFlags)(kIncludeLoaded | kIncludeExecution));
CollectibleAssemblyHolder<DomainAssembly *> pDomainAssembly;
Expand All @@ -5133,16 +5119,19 @@ AppDomain::EnumMemoryRegions(CLRDataEnumMemoryFlags flags,
}

void
SystemDomain::EnumMemoryRegions(CLRDataEnumMemoryFlags flags,
bool enumThis)
SystemDomain::EnumMemoryRegions(CLRDataEnumMemoryFlags flags, bool enumThis)
{
SUPPORTS_DAC;
if (enumThis)
{
DAC_ENUM_VTHIS();
EMEM_OUT(("MEM: %p SystemAppomain\n", dac_cast<TADDR>(this)));
}
BaseDomain::EnumMemoryRegions(flags, false);

if (flags == CLRDATA_ENUM_MEM_HEAP2)
{
GetLoaderAllocator()->EnumMemoryRegions(flags);
}
if (m_pSystemPEAssembly.IsValid())
{
m_pSystemPEAssembly->EnumMemoryRegions(flags);
Expand Down
Loading