You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
dotnet-install results in "Killed: 9" when updating a signed build on MacOs #232
When dotnet is a signed file, and has previously run, Mac OS is caching the signature. When that file is replaced "in place" as is done with cp it causes subsequent execution of dotnet to fail with Killed: 9
I've reported this to Apple, but the scripts should avoid this pattern if possible. I believe the MacOs installer first moves files out of the way, then deletes them, before copying a new file.
changed the title [-]dotnet-install results in "Killed: 9[/-][+]dotnet-install results in "Killed: 9" when updating a signed build on MacOs[/+]on Nov 19, 2021
Hi @ericstj,
Does this happen in a specific scenario or would you say it's common? Any CI pipelines that you are aware of which are impacted by this?
The scripts have an option SkipNonVersionedFiles which skips updating dotnet executable and just installs the new sdk/runtime. Would that help in this case? Since dotnet executable isn't updated, signature shouldn't be a problem.
External customers are also hitting this. IMO we shouldn't have an install script which by default overwrites and downgrades files. I don't suppose we could add version detection to the scripts? We have means for defining this on windows (filever) and unix (strings).
Since these files are considered "unversioned", shouldn't the difference between them negligible? Is there a noticeable difference between invoking dotnet.exe generated by SDK 3.1 vs SDK 7.0?
I believe the only thing that the dotnet executable is doing today is to determine the sdk version to be used and redirect the command to the versioned dotnet.dll.
Activity
[-]dotnet-install results in "Killed: 9[/-][+]dotnet-install results in "Killed: 9" when updating a signed build on MacOs[/+]bekir-ozturk commentedon Nov 25, 2021
Hi @ericstj,
Does this happen in a specific scenario or would you say it's common? Any CI pipelines that you are aware of which are impacted by this?
The scripts have an option
SkipNonVersionedFileswhich skips updating dotnet executable and just installs the new sdk/runtime. Would that help in this case? Since dotnet executable isn't updated, signature shouldn't be a problem.ericstj commentedon Nov 30, 2021
@joeloff looped me into this happening in the SDK repo where it looks like they weren't passing that flag.
https://github.com/dotnet/sdk/blob/45e032c4d0f3625fb5bad6e50067a06b6b7fdc0a/eng/restore-toolset.sh#L22-L54
joeloff commentedon Nov 30, 2021
Good to know about that flag. I'll update the SDK PR
bekir-ozturk commentedon Nov 30, 2021
We have synced with @joeloff and it appears that
SkipNonVersionedFilesswitch helps in this case.I am closing this issue.
ericstj commentedon Nov 30, 2021
External customers are also hitting this. IMO we shouldn't have an install script which by default overwrites and downgrades files. I don't suppose we could add version detection to the scripts? We have means for defining this on windows (filever) and unix (strings).
bekir-ozturk commentedon Dec 9, 2021
Since these files are considered "unversioned", shouldn't the difference between them negligible? Is there a noticeable difference between invoking
dotnet.exegenerated by SDK 3.1 vs SDK 7.0?I believe the only thing that the dotnet executable is doing today is to determine the sdk version to be used and redirect the command to the versioned dotnet.dll.
rolfbjarne commentedon Feb 17, 2025
This started happening on most (all?) of our macOS 12.0 (Ventura) bots just after .NET 8.0.406 was released.
We're simply doing this:
Running this on the bots fixed the problem:
FWIW this didn't happen on our macOS 13.0-15.0 bots, so this may have been fixed by Apple in macOS 13.0+.
Refresh macOS host inode after SDK installation
Refresh macOS host inode after SDK installation
Refresh macOS host inode after SDK installation