Skip to content

Run SOS test harness on Helix - #5981

Open
steveisok wants to merge 34 commits into
dotnet:mainfrom
steveisok:steveisok-sos-helix-sharding
Open

Run SOS test harness on Helix#5981
steveisok wants to merge 34 commits into
dotnet:mainfrom
steveisok:steveisok-sos-helix-sharding

Conversation

@steveisok

Copy link
Copy Markdown
Member

Depends on #5979

This PR is based on the head commit from #5979. Until that PR merges, GitHub will show both the parent changes and this dependent Helix layer in the diff.

Summary

  • add deterministic capture-family sharding for SOS.Tests with eight dump shards and two live shards while preserving SnapshotStore dump reuse
  • submit one shared immutable Helix correlation payload per OS/RID/configuration containing SOS.Tests, native SOS outputs, tool/runtime dependencies, and prebuilt debuggees
  • add Windows and Unix launchers, including musl-safe dotnet SOS.Tests.dll execution on Alpine and upload of test results, replay files, logs, and diagnostics
  • move only SOS.Tests from local execution to platform-appropriate public Helix queues while preserving all other local tests and Windows Framework coverage

Validation

  • built SOS.Tests and supporting Framework/helper projects
  • passed all 14 targeted shard assignment and validation tests
  • validated Windows x86/x64, Linux, macOS, and Alpine work-item graphs without submitting jobs
  • dry-ran Linux-musl and Windows payload layouts
  • passed XML, JSON, YAML, shell syntax, and diff checks

Actual Helix execution remains a CI-time validation.

leculver and others added 10 commits August 25, 2026 16:54
Add a marker-driven scenario process that exposes managed stacks, heap shapes, exceptions, delegates, synchronization state, and crash points for SOS command validation across runtime versions and deployment modes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2bba76c7-c3b4-4774-84d5-6d21347e8ef8
Add reusable target acquisition, dump capture, debugger-host abstractions, matrix configuration, SOS output parsing, replay diagnostics, and source generation for marker constants used by command tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2bba76c7-c3b4-4774-84d5-6d21347e8ef8
Run dbgeng command execution and dump capture in helper processes so debugger failures remain isolated from the xUnit test host and architecture-specific binaries are resolved correctly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2bba76c7-c3b4-4774-84d5-6d21347e8ef8
Add xUnit v3 command coverage for stacks, threads, heaps, objects, modules, runtime state, and diagnostic commands across supported hosts, deployment flavors, dump kinds, GC modes, runtimes, and DAC implementations. Include failure replay output and a local execution runbook.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2bba76c7-c3b4-4774-84d5-6d21347e8ef8
Include the harness library, source generator, debugger helper hosts, and SOS.Tests project in build.sln for IDE discovery and repository builds.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2bba76c7-c3b4-4774-84d5-6d21347e8ef8
Disable W^X for live debuggees so bpmd can patch JIT code without triggering access violations.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d5c60f7-9c89-42e6-b9fc-04ef78c8f8d8
Pipeline artifact transfer drops executable bits. Restore them before running the MTP test apphost or launching debuggee apphosts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d5c60f7-9c89-42e6-b9fc-04ef78c8f8d8
Use Arcade's TestToRun command path directly because UseAppHost metadata is not populated for the MTP executable.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2d5c60f7-9c89-42e6-b9fc-04ef78c8f8d8
Publish version-matched single-file debuggees during the build and make the test harness consume the transferred immutable outputs instead of invoking dotnet publish during tests.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 886d87aa-631a-49cd-a973-aacd17a1df81
Add deterministic capture-family sharding, a shared SOS Helix payload, cross-platform launchers, and public pipeline integration while retaining non-SOS local tests.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings August 26, 2026 02:00
@steveisok
steveisok requested a review from a team as a code owner August 26, 2026 02:00

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a new SOS test harness–driven test suite (SOS.Tests) and wires it into CI so the suite can run as sharded Helix work items (while being skipped in the existing test-only pipeline legs). It also adds supporting debuggee publishing and a set of harness utilities/parsers to make SOS output assertions deterministic and debuggable across hosts (cdb/lldb/dotnet-dump), runtimes, and dump kinds.

Changes:

  • Add SOS.Tests (xUnit v3 / Microsoft.Testing.Platform) plus a large set of harness-backed SOS command tests and parsing helpers.
  • Extend the SOS harness infrastructure (targets, replay capture, tokens/table parsing, host abstractions) and add a shared debuggee stop-point mechanism for snapshot/live modes.
  • Update build/CI to prepublish required debuggees, add Helix SDK usage, and submit sharded SOS.Tests runs to Helix with OS/RID-specific launchers.
Show a summary per file
File Description
src/tests/SOS.UnitTests/Debuggees/SosHarnessScenarios/TestHarness.cs Debuggee-side stop-point helper for snapshot/live modes
src/tests/SOS.UnitTests/Debuggees/SosHarnessScenarios/SosHarnessScenarios.csproj New scenarios debuggee project definition
src/tests/SOS.UnitTests/Debuggees/Directory.Build.props Write runtime.version after single-file publish
src/tests/SOS.Tests/WindowsTheoryAttribute.cs Windows-only theory attribute/discoverer
src/tests/SOS.Tests/TestObjectHelpers.cs Heap object lookup helpers
src/tests/SOS.Tests/TestConfigShardTests.cs Shard selection + stable hashing tests
src/tests/SOS.Tests/StackInspectionTests.cs Stack inspection command coverage
src/tests/SOS.Tests/SpecializedInspectionTests.cs Specialized state-dependent command coverage
src/tests/SOS.Tests/SosTheoryAttribute.cs Cross-platform theory attribute semantics
src/tests/SOS.Tests/SOS.Tests.csproj SOS.Tests MTP/xUnit v3 test app project
src/tests/SOS.Tests/RuntimeInfoTests.cs Runtime/module/process listing command coverage
src/tests/SOS.Tests/README.md SOS.Tests usage + matrix documentation
src/tests/SOS.Tests/PrintExceptionTests.cs printexception coverage across matrix
src/tests/SOS.Tests/ObjectGcHelperTests.cs Per-object GC helper command coverage
src/tests/SOS.Tests/ObjectFieldsTests.cs dumpobj/dumpvc field-level assertion coverage
src/tests/SOS.Tests/NativeAddressSpaceTests.cs notreachableinrange coverage
src/tests/SOS.Tests/ModuleResolveTests.cs name2ee/token2ee resolution round-trip coverage
src/tests/SOS.Tests/MiscCommandTests.cs Session/diagnostic command smoke coverage
src/tests/SOS.Tests/MemoryAndDecodeTests.cs dp/dq/db + threadstate/taskstate/dumpexceptions coverage
src/tests/SOS.Tests/LiveBpmdTests.cs Live bpmd breakpoint mechanism coverage
src/tests/SOS.Tests/HeapAnalysisTests.cs sizestats/traverseheap/ephrefs coverage
src/tests/SOS.Tests/GcWhereTests.cs gcwhere structure + live promotion coverage
src/tests/SOS.Tests/EeHeapTests.cs eeheap -gc parsing/structure coverage
src/tests/SOS.Tests/DumpSigTests.cs dumpsig/dumpsigelem coverage
src/tests/SOS.Tests/DumpModuleTests.cs dumpmodule structure + -mt type table coverage
src/tests/SOS.Tests/DumpIlTests.cs dumpil structure + -i coverage
src/tests/SOS.Tests/DumpHeapThinLockTests.cs dumpheap -thinlock coverage
src/tests/SOS.Tests/DumpHeapStringsTests.cs dumpheap -strings coverage
src/tests/SOS.Tests/DumpHeapObjectsTests.cs dumpheap objects/stats/filters self-consistency coverage
src/tests/SOS.Tests/DumpHeapLiveDeadTests.cs dumpheap -live/-dead coverage
src/tests/SOS.Tests/DumpHeapGenerationsTests.cs dumpheap generation/region filtering vs eeheap oracle
src/tests/SOS.Tests/DumpDomainTests.cs dumpdomain/dumpassembly coverage + round-trips
src/tests/SOS.Tests/DumpDelegateTests.cs dumpdelegate coverage
src/tests/SOS.Tests/DumpArrayTests.cs dumparray parameter + edge case coverage
src/tests/SOS.Tests/DiagnosticCommandTests.cs dumpgcdata/sosstatus/logging/clrma coverage
src/tests/SOS.Tests/CollectionQueueTests.cs dcq/threadpoolqueue coverage
src/tests/SOS.Tests/CodeInfoTests.cs ehinfo/gcinfo coverage
src/tests/SOS.Tests/ClrUTests.cs cdb-only clru coverage + interleaving switches
src/tests/SOS.Tests/ClrThreadsTests.cs clrthreads coverage + structured assertions
src/tests/SOS.Tests/ClrThreadsParsing.cs Custom clrthreads table parser
src/tests/SOS.Tests/ClrStackLinesTests.cs clrstack source line coverage + -n self-consistency
src/tests/SOS.Tests/ClrStackICorDebugTests.cs clrstack -i/-i -a coverage (ICorDebug)
src/tests/SOS.Tests/ClrStackFullTests.cs clrstack -f coverage + host-conditional assertions
src/tests/SOS.Tests/ClrStackFrameCountTests.cs clrstack -c frame limit coverage
src/tests/SOS.Tests/ClrStackAllThreadsTests.cs clrstack -all coverage + deterministic worker parking
src/tests/SOS.TestHarness/Targets.cs Target acquisition + dump session memoization
src/tests/SOS.TestHarness/Target.cs Unified live/dead target surface + replay hooks
src/tests/SOS.TestHarness/SosToken.cs Token vocabulary for nondeterministic values
src/tests/SOS.TestHarness/SosRow.cs Table row model + extra columns / structured data
src/tests/SOS.TestHarness/SosDataRowExtensions.cs Assertion helpers for structured data rows
src/tests/SOS.TestHarness/SosDataRow.cs Structured sub-record representation
src/tests/SOS.TestHarness/SosDataExtractor.cs Delegate type for internal-data extraction
src/tests/SOS.TestHarness/SosConvert.cs Shared token-based numeric/boolean converters
src/tests/SOS.TestHarness/SosColumn.cs Column spec + alignment helpers
src/tests/SOS.TestHarness/SosCell.cs Cell parsing helpers + rich failures
src/tests/SOS.TestHarness/SosAssertException.cs Rich assertion exception for SOS output
src/tests/SOS.TestHarness/SOS.TestHarness.csproj Harness library project wiring
src/tests/SOS.TestHarness/ReplayContext.cs Per-test replay capture of navigations/commands
src/tests/SOS.TestHarness/lldbhelper.py LLDB command framing helper with sentinels
src/tests/SOS.TestHarness/LldbCliHost.cs LLDB dump host implementation wiring
src/tests/SOS.TestHarness/Liveness.cs Liveness axis enum
src/tests/SOS.TestHarness/ILiveDebuggerHost.cs Live host interface abstraction
src/tests/SOS.TestHarness/IDiagnosticHost.cs Optional host diagnostics capture interface
src/tests/SOS.TestHarness/IDebuggerHost.cs Debugger host interface abstraction
src/tests/SOS.TestHarness/HostSlot.cs Single-slot host pooling/exclusive leasing
src/tests/SOS.TestHarness/Hosts.cs Host axis enum
src/tests/SOS.TestHarness/HostFactory.cs Host construction factory
src/tests/SOS.TestHarness/HarnessSkip.cs Dynamic skip exception for intrinsic limitations
src/tests/SOS.TestHarness/HarnessCancellation.cs Bridge runner cancellation into host waits
src/tests/SOS.TestHarness/GcType.cs GC type axis enum
src/tests/SOS.TestHarness/Flavor.cs Flavor axis enum
src/tests/SOS.TestHarness/EngineProtocol.cs EngineHost line protocol markers
src/tests/SOS.TestHarness/DumpKind.cs Dump kind axis enum
src/tests/SOS.TestHarness/DumpGenerationRequirements.cs Windows reduced-dump prerequisite logic
src/tests/SOS.TestHarness/DeadTarget.cs Dump-backed target cursor implementation
src/tests/SOS.TestHarness/DbgEngDumpHost.cs dbgeng dump host wrapper
src/tests/SOS.TestHarness/DbgEngCapturer.cs dbgeng-based dump capture for non-self-collect cases
src/tests/SOS.TestHarness/DacPolicy.cs --usecdac selection + env clamp
src/tests/SOS.TestHarness/Dac.cs DAC axis enum
src/tests/SOS.TestHarness/CoreVersion.cs Core version axis enum + semantics
src/tests/SOS.TestHarness/CaptureCli.cs Out-of-proc capturer entrypoint logic
src/tests/SOS.TestHarness.SourceGen/SOS.TestHarness.SourceGen.csproj Source generator project definition
src/tests/SOS.TestHarness.EngineHost/SOS.TestHarness.EngineHost.csproj EngineHost dbgeng child process project
src/tests/SOS.TestHarness.EngineHost/Program.cs EngineHost REPL implementation
src/tests/SOS.TestHarness.Capturer/SOS.TestHarness.Capturer.csproj Capturer child process project
src/tests/SOS.TestHarness.Capturer/Program.cs Capturer program entrypoint
src/tests/Debuggees.proj Prepublish SOS single-file debuggees + build Framework debuggees
global.json Add Helix MSBuild SDK
eng/pipelines/build.yml Add SOS Helix submission path + skip local run arg
eng/helix/sos/run-sos-tests.sh Unix Helix work item runner for SOS.Tests
eng/helix/sos/run-sos-tests.cmd Windows Helix work item runner for SOS.Tests
diagnostics.yml Enable SOS.Tests Helix runs per OS queue

Review details

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Suppressed comments (2)

eng/pipelines/build.yml:159

  • Azure Pipelines parameters testOnly/buildOnly are declared as booleans, but this block compares them to the string 'true'. That will cause the conditions to evaluate incorrectly (e.g., the mutual-exclusion error and script-selection logic won’t trigger when expected). Use boolean literals consistently.
      - ${{ if and(eq(parameters.testOnly, 'true'), eq(parameters.buildOnly, 'true')) }}:
        'error, testOnly and buildOnly cannot be true at the same time': error

      # Test-only legs invoke test.cmd/test.sh, which already encode
      # '-test -skipmanaged -skipnative' and do not prepend '-restore -build'. All other legs

eng/pipelines/build.yml:220

  • The displayName selection still compares boolean parameters to the string 'true', which can result in the wrong name being applied (and is inconsistent with the boolean comparisons used elsewhere in this file).
          $(_SkipSOSHelixTestsArg)
          /p:OfficialBuildId=$(BUILD.BUILDNUMBER)
        ${{ if eq(parameters.testOnly, 'true') }}:
          displayName: Test
        ${{ elseif eq(parameters.buildOnly, 'true') }}:
  • Files reviewed: 126/126 changed files
  • Comments generated: 2
  • Review effort level: Lite

Comment on lines +19 to +24
string prefix = typeName.Split('<')[0];
SosRow row = target.DumpHeap($"-type {prefix}").Statistics
.SingleRow(r => r["Class Name"].Value == typeName, $"a single {typeName} method table");
ulong mt = row["MT"].AsUInt64(Sos.Addr);
return target.DumpHeap($"-mt {mt:x} -short").ShortAddresses[0];
}
Comment on lines +52 to +73
ProcessStartInfo psi = new(dotnet)
{
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
};
psi.ArgumentList.Add(dumpDll);
psi.ArgumentList.Add("collect");
psi.ArgumentList.Add("-p");
psi.ArgumentList.Add(Environment.ProcessId.ToString());
psi.ArgumentList.Add("--type");
psi.ArgumentList.Add(Environment.GetEnvironmentVariable("SOSHARNESS_DUMP_TYPE") ?? "Heap");
psi.ArgumentList.Add("-o");
psi.ArgumentList.Add(outPath);

using Process p = Process.Start(psi)!;
p.WaitForExit();
if (p.ExitCode != 0 || !File.Exists(outPath))
{
throw new InvalidOperationException(
$"Snapshot '{name}' failed (exit {p.ExitCode}): {p.StandardError.ReadToEnd()}");
}
steveisok and others added 5 commits August 26, 2026 07:16
Pass the local SOS exclusion through the environment so Arcade test orchestration sees it, prepare the shared payload only in the outer Helix build, and define the Helix binlog configuration variable.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>\nCopilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Reduce the correlation payload to the runtime and debuggee closure, support one-work-item smoke submissions, and make the macOS launcher portable and capable of capturing signed debuggees without impractical single-file snapshots.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Repair LLDB Python discovery on Ubuntu and redirect Alpine execution state out of the read-only correlation payload.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Spread macOS Debug dump capture families across twelve Helix work items and cap each xUnit runner at four parallel threads to reduce LLDB memory pressure.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Stage the RID-specific DbgEng payload explicitly and surface EngineHost startup failures without repeated two-minute timeouts.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Restore the Windows CDB payload from the standalone Helix project and prevent Linux single-file dump helpers from retaining redirected pipes indefinitely.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 74091c6d-a9ae-444d-a73f-51326a56461e
Use 32 four-thread dump work items for both macOS configurations while retaining the two live work items and existing non-macOS graph.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Configure DbgHelp DAC registration within Windows Helix work items, restore registry state afterward, and fix Linux cleanup-test and dbgout state races.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 74091c6d-a9ae-444d-a73f-51326a56461e
Allow createdump descendants to finish draining inherited output and generate framework-dependent win-x86 debuggee apphosts with the target architecture.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 74091c6d-a9ae-444d-a73f-51326a56461e
Resolve global.json by taking the updated .NET 10.0.111 and Arcade 26423.1 versions while retaining the explicit Helix SDK at the matching Arcade build.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 74091c6d-a9ae-444d-a73f-51326a56461e
Run macOS SOS tests and debuggees on .NET 11, provision LLDB support on Alpine, and let each test leg start after its matching build within a single CI stage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Build desktop debuggees for x86 and make SOS parsers and assertions handle valid 32-bit register, disassembly, GC, heap, memory, and object layouts.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 74091c6d-a9ae-444d-a73f-51326a56461e
Propagate the target RID into nested debuggee builds so Alpine receives musl apphosts and publishes. Reuse a bounded LLDB dump-host slot to prevent core-loaded processes from accumulating and being killed under memory pressure.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
steveisok and others added 9 commits August 28, 2026 08:34
Run SOS.Tests on macOS and Ubuntu ARM64 Helix queues while keeping x64 macOS coverage on rolling builds. Add Helix-only artifact submission for cross-built targets and skip the known macOS x64 legacy-DAC SyncBlock failures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Run x64 build and tests before cross-building arm64 in the same macOS jobs, with PR Helix coverage focused on arm64 and rolling coverage for both architectures. Support older LLDB discovery on Ubuntu arm64 and isolate the Apple LLDB Mach exception workaround to the hosted SOS runtime.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Allow Windows dump helpers that outlive a self-collect target to close inherited output within the bounded capture deadline.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 74091c6d-a9ae-444d-a73f-51326a56461e
Move the remaining exception-specific assertions into SOS.Tests across live and dump matrices, preserve CLRMA and source-line coverage, and document the migration status of every legacy SOS test.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Validate the queried file version structure before copying it so eeversion reliably prints the SOS version on x86.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 74091c6d-a9ae-444d-a73f-51326a56461e
Resolve global.json by taking Arcade 26427.5 from main and retaining the explicit Helix SDK at the matching Arcade build.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Remove the unsupported single-file cDAC matrix and stack-walk exclusions, document the supported .NET 11 combination, and add regression coverage for the version boundary.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Build a macOS LLDB.framework-based driver for the SOS harness, stage it in the shared Helix payload, and preserve command diagnostics through nested LLDB dispatch. Reject invalid CLRMA thread identifiers instead of asserting in debug hosts.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Continue past first-chance exception breaks when capturing dumps or navigating live Windows targets so SOS observes the final unhandled exception.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 74091c6d-a9ae-444d-a73f-51326a56461e
Fix Linux process-exit and LLDB teardown races, use a valid object-reference range for notreachableinrange, and guard known macOS dump-analysis gaps. Add a host-runtime override for validating SOS against patched CoreCLR builds.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Locate the dedicated ObjectReference array directly so the notreachableinrange test does not wedge dotnet-dump on Linux while obtaining a real object-reference slot.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 2cabce32-3eb0-486e-a7ed-5ac58541fde9
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants