cmd: fix re-exec bug with classic confinement for host snapd < 2.28 #4176
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.
Older version of snapd (before 2.28) did use the SNAPD_DID_REEXEC
env to check if they should re-exec or not. We need
to unset it after re-exec because the host snap tool may be old and
using this key.
So if e.g. the host has snapd 2.27 and snapd re-execs to 2.29 then
snap run --shell classic-snap
will go into an environment where thesnapd 2.27 sees this key and stops re-execing and things break in
suble ways.
C.f.
https://forum.snapcraft.io/t/seccomp-error-calling-snap-from-another-classic-snap-on-core-candidate/2736/7