Repository navigation
Dispose TensorFlow sessions before test process cleanup - #7747
Merged
Merged
Conversation
Dispose test-owned TensorFlow models and finalize the command-line pipeline before TensorFlow.NET global teardown. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Dispose each view created by ShowSchemaCommand from the end of the legacy pipeline back to its source, avoiding TensorFlow session finalization after global teardown. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Legacy row-to-row views still hide undisposed TensorFlow transformers and sessions.
Review effort: Balanced
Findings: 2
Open (2)
What changed in this PR
Ensures TensorFlow sessions are released before test-process shutdown.
Changes:
- Adds explicit model and transformer disposal in TensorFlow tests.
- Disposes legacy
showschemaview chains downstream-to-source.
| File | Description |
|---|---|
TensorflowTests.cs |
Disposes TensorFlow models. |
TensorFlowEstimatorTests.cs |
Disposes fitted transformers and models. |
ShowSchemaCommand.cs |
Adds legacy pipeline cleanup. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Unwrap RowToRowMapperTransform views when cleaning up ShowSchema pipelines and dispose the independently loaded TensorFlow transformer in the legacy save/load test. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #7747 +/- ##
==========================================
+ Coverage 69.89% 70.00% +0.10%
==========================================
Files 1487 1419 -68
Lines 276294 272832 -3462
Branches 28294 27584 -710
==========================================
- Hits 193127 190993 -2134
+ Misses 75677 73651 -2026
- Partials 7490 8188 +698
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
matouskozak
reviewed
Oct 13, 2026
Skip parent-transformer disposal when a legacy row mapper explicitly reports that GetTransformer is unsupported, and cover the full ShowSchema command behavior with an evaluator transform. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
svick
added a commit
that referenced
this pull request
Oct 15, 2026
## Summary Enable .NET dumps, JSON crash reports, and dump-generation diagnostic logging in the Unix Helix runner when HELIX_DUMP_FOLDER is set. Document where to find the artifacts. ## Motivation While validating #7747, [build 1629902](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1629902) failed with an unrelated crash: the main `Microsoft.ML.Tests` process exited with SIGSEGV (139) on macOS x64 Debug. The main test process crashed while tests were still running, rather than during shutdown. The console log ended just after an image-creation test started, but several tests were running concurrently. Helix uploaded no dump or crash report, despite the shell printing "core dumped", so there was no crashing-thread stack or process state to identify the faulting code. The available evidence was insufficient to determine the cause or establish whether the crash was related to the PR. Enabling capture preserves evidence from future crashes instead of relying on the last test logged or waiting for a local reproduction. The JSON report provides thread stacks that can be inspected without a matching-OS debugger; the dump allows deeper analysis of memory, modules, and thread state with the matching runtime and native binaries. Writing them to Helix's dump directory makes them available as work-item artifacts, and diagnostic logging helps explain any capture failure. ## Actual CI validation [Build 1632277](https://dev.azure.com/dnceng-public/public/_build/results?buildId=1632277) ran a temporary fatal native-memory-access probe on macOS x64 in both Debug and Release. Both processes exited with SIGSEGV (139), and both Helix work items uploaded a dump and readable JSON crash report. The reports identify the crashing thread and include DumpCaptureProbeTests.CaptureSegmentationFault plus native frames. - [Debug crash report](https://helixr1107v0xdeko0k025g8.blob.core.windows.net/dotnet-machinelearning-refs-pull-7780-merge-2b02312c4c2a4317bf/Microsoft.ML.Tests/1/coredump.68046.1791823117.dmp.crashreport.json?helixlogtype=result) - [Release crash report](https://helixr1107v0xdeko0k025g8.blob.core.windows.net/dotnet-machinelearning-refs-pull-7780-merge-efff89a63ce5409f86/Microsoft.ML.Tests/1/coredump.15665.1791822990.dmp.crashreport.json?helixlogtype=result) The probe and temporary test filtering were removed in a follow-up commit. The final diff contains only the runner configuration and documentation. --------- Copilot-Session: 7f213f15-6239-4a5b-b50e-de711637d646
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Fixes #7730
Summary
ShowSchemaCommand, from the final transform back to its source.Why
The TensorFlow.NET
Sessionfinalizer can crash during test-process shutdown if it runs after TensorFlow.NET has disposed its global thread-local state. Theshowschemacommand constructed a TensorFlow-backed legacy pipeline but did not release its transforms when the command completed.ShowSchemaCommandowns the pipeline returned byCreateAndSaveLoader, so it now materializes that pipeline's view chain and deterministically disposes every disposable view in downstream-to-source order.