-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix GC stress log and analysis #108655
base: main
Are you sure you want to change the base?
Fix GC stress log and analysis #108655
Conversation
@@ -1299,6 +1295,7 @@ int ProcessStressLog(void* baseAddress, int argc, char* argv[]) | |||
memset(&mapImageToStringId, 0, sizeof(mapImageToStringId)); | |||
memset(s_interestingStringFilter, 0, sizeof(s_interestingStringFilter)); | |||
memset(s_interestingStringMatchMode, 0, sizeof(s_interestingStringMatchMode)); | |||
s_interestingStringMatchMode[IS_GCSTART] = true; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is an unfortunate detail to have here, but I don't think we want to generalize the InterestingStrings
table to have a prefix bool.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will be a little easier to do in the managed implementation I think.
…s 64-bit floating point values)
df9e20d
to
018d47c
Compare
"ILC: error IL1013: Error processing 'name'" is #108031 |
// TRACE_GC has two sub-modes: the standard VM stress log mechanism and | ||
// SIMPLE_DPRINTF, which is text output. By default, we enable TRACE_GC (not | ||
// SIMPLE_DPRINTF) for debug/checked builds so that we can catch build breaks. | ||
// HOST_64BIT is required because logging dprintf to the stress log us only |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is
// time, which doesn't match usual stress log usage. | ||
// | ||
// In practice, dprintf(1) and LL_INFO10 (which has the value 4) have been used | ||
// similarly on log messages. A dprintf(1) is generally called about once per |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
few
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
other than the few minor changes you took notes of, the rest LGTM!
Summary: This includes multiple fixes to reenable the viewing of GC stress log events (from GC dprintf) in StressLogAnalyzer. It makes a small subset of the events available in all _DEBUG builds, which provides a build check in CI without overwhelming the stress log or runtime. This includes an audit of dprintf(1, ...) sites. More detailed GC stress logs can be enabled by changing the sources (as before).
Fixes to StressLogAnalyzer are least-effort because it is intended to be replaced by a C# version in #104999.
Details:
gcDetailedStartMsg
gcDetailedStartMsg
to fit under the 16-argument limit for the stress log but keep all arguments forSIMPLE_DPRINTF
IS_GCSTART
%5s
TRACE_GC
TRACE_GC
in_DEBUG
buildsIncludes #108089 until it is merged
Fixes #108628