in src/LongRunningTests/ParallelStressTest/Program.cs [26:81]
static void Main(string[] args)
{
if (args.Length != 1)
{
Console.WriteLine("Must specify a crash dump to inspect.");
if (Debugger.IsAttached)
Debugger.Break();
Environment.Exit(1);
}
using DataTarget dt = DataTarget.LoadDump(args[0]);
using (ClrRuntime runtime = dt.ClrVersions.Single().CreateRuntime())
{
_expectedObjects = runtime.Heap.EnumerateObjects().ToArray();
_segments = runtime.Heap.Segments.ToArray();
}
if (BackgroundClear)
{
Thread t = new Thread(ClearThreadProc);
t.Start();
}
TimeSpan elapsed = default;
for (int i = 0; i < Iterations; i++)
{
Console.Write($"\rIteration: {i + 1:n0} {elapsed}");
dt.DataReader.FlushCachedData();
using ClrRuntime runtime = dt.ClrVersions.Single().CreateRuntime();
lock (_sync)
_runtimeForClearing = runtime;
Thread[] threads = new Thread[Threads];
for (int j = 0; j < Threads; j++)
threads[j] = CreateAndStartThread(runtime);
Stopwatch sw = new Stopwatch();
sw.Start();
_event.Set();
foreach (Thread thread in threads)
thread.Join();
sw.Stop();
elapsed = sw.Elapsed;
lock (_sync)
_runtimeForClearing = null;
_event.Reset();
}
}