[AutoDiff] Fix a 'partial_apply' leak caused by subset parameters thunks. #26384
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.
In
ADContext::promoteToDifferentiableFunction
when we emit a subset parameters thunk, the closure produced byemitAssociatedFunctionReference
is not being used or released. This patch fixes that by releasing the closure.In a future design, we should determine the actual parameter indices and whether thunking is needed before emitting an unused closure. This shall be addressed in a future patch.
A value leak checking test was added for protocols because this bug was originally discovered in eaplatanios/swift-ale#1 by using the newly split
Layer
protocol. However, value leak checking tests do not test for closure (partial_apply
) leaks. The proper setup for catching closure leaks is moving AD before ownership stripping (#26157).