-
Notifications
You must be signed in to change notification settings - Fork 4.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Use osx.13.arm64.open queue for osx testing #112647
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
/azp run runtime-nativeaot-outerloop |
Azure Pipelines successfully started running 1 pipeline(s). |
Should we bump the x64 variant as well? |
I've not seen problems with that queue so my gut says "don't touch what's not broken". I don't know what schedule we follow in upgrading these. I just know that we had problems with this queue since december when the number of machines dropped from 30 to 10 (dotnet/dnceng#4734) and I don't see anyone doing anything about this so I'm just trying to do something. |
Ok, thanks. |
Perhaps we should promote osx-arm64 to how much we are currently caring for (the declining) osx-x64 #108570 (Apple stopped producing x64 macs in 2023: second paragraph). |
@@ -105,7 +105,7 @@ jobs: | |||
# OSX arm64 | |||
- ${{ if eq(parameters.platform, 'osx_arm64') }}: | |||
- ${{ if eq(variables['System.TeamProject'], 'public') }}: | |||
- OSX.1200.ARM64.Open | |||
- osx.13.arm64.open | |||
- ${{ if eq(variables['System.TeamProject'], 'internal') }}: | |||
- OSX.1200.ARM64 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
bump this one too?
- OSX.1200.ARM64 | |
- osx.13.arm64 |
/azp run runtime-libraries-coreclr outerloop |
Azure Pipelines successfully started running 1 pipeline(s). |
System.Security.Cryptography.OpenSsl.Tests is running into SIGABRT on native AOT; that doesn't look very promising. I fired off libraries outerloop since by default we don't seem to test anything on arm64 macs and no other leg ran there. |
That's not entirely unexpected. macOS doesn't ship OpenSSL by default and the test prints |
It should be running this script: runtime/eng/pipelines/common/global-build-job.yml Lines 197 to 198 in 6e06aef
|
@am11 that is for the build machine, it doesn't apply to Helix IIRC openssl was manually installed on these machines by dnceng? |
Yup, I meant test machine can use the same script to install runtime dependencies. We are using it in multiple places in addition to build machines. |
I pinged @ilyas1974 and he'll have it looked into. |
Any reason why we can't bump to |
I assumed we have a preference for oldest possible macOS and then cross fingers about Apple's backwards compatibility. But I don't know our testing strategy for mac. |
Hoping to see this merged soon. NativeAOT osx pipelines often timeout |
@MichalStrehovsky @agocke, any chance we can skip the mac openssl tests for now and move this forward? |
I don't know who is authoritative on tests that require openssl and whether it would be okay to have a test hole on arm64 mac temporarily - @dotnet/area-system-security @dotnet/ncl? I'm definitely not authoritative on this. I assume we'll not be able to get openssl installed on the helix machines anytime soon and that's why you're asking? |
We have no official support for OpenSSL on Mac so I think it’s fine to skip |
I think it would be ok to skip openssl - especially if only on AOT. The Cryptography.OpenSsl only provides extra primitives AFAIK but I don't think it is widely used. Aside from that Quic/H3 also use OpenSSL but that is also another marginal use case IMHO. I think we should get OpenSSL from |
The failure is not specific to AOT. This is also failing in runtime-libraries-coreclr-outerloop: https://dev.azure.com/dnceng-public/public/_build/results?buildId=955227&view=logs&jobId=436e3ba5-8535-542b-4a8e-476703290d56&j=a6a69bc3-4502-542e-928d-b29ce8b6245c&t=8f2f111f-0f49-524b-bd46-acb87857e7e1 We'd need to disable this on ARM64 macos everywhere (and this gives us a very good reason not to do #112647 (comment) so that we don't lose all macos coverage of this). |
/azp run runtime-libraries-coreclr outerloop |
Azure Pipelines successfully started running 1 pipeline(s). |
It seems like new macOS does no load libraries from I tried to play with DYLD_LIBRARY_PATH but it seems like SIP strips that as well for security reasons. |
Where is openssl supposed to be loaded from? I have openssl installed:
but nothing in
As a sidenote, and without knowing any of the code involved, it seems to me that an improvement would be to make |
I just tried and it works on my arm64 mac if I explicitly add the symlink:
|
This is done on CM machines. There used to be
I have OpenSSL 3 on my system and it fails same way as CI
so I'm wondering iff this can still depend on SIP state or other OS configuration...??? |
It might depend on whether the @akoeplinger did you execute using a locally built |
I'm using official 9.0.100 sdk. I noticed that it works with running Note: I'm not running the tests but a simple console app that uses |
AFAIK, once kernel flags something as "security risk" it doesn't give a change for application to handle any signal, not even the debugger, hence the unpleasant sigabrt.
I have the same, and I think helix should use the same setup. Having some one-off configuration on helix machine is not only weird but it defeats the purpose of "real world testing". |
In this case it's an |
Should be just a matter of returning an error condition here instead of calling + runtime/src/native/libs/System.Security.Cryptography.Native/opensslshim.c Lines 175 to 181 in 6e06aef
|
The logs do not show |
![]() |
Ah, I'm blind never mind (had case sensitive search on) 🥲 |
So the problem seems to be twofold: 1: macoS doesn't look for libraries in The fix is to add an rpath to the native executable adding This can be done either at build time (if the build actually creates a binary (as opposed to copying in a prebuilt binary), for instance with NativeAOT), or after the build by using the Here's an example for both |
The osx 12 queue only has a couple machines servicing it. Looks like osx 12 is already out of support by Apple so dnceng scaled it down?
This queue is the main reason why runtime-nativeaot-outerloop almost never succeeds despite my weeks long effort to get it green. E.g (https://helix.dot.net/api/jobs/226c27df-153e-4f75-9003-5dd5f5a355a2/workitems/System.Diagnostics.Tools.Tests?api-version=2019-06-17):
Six and a half hour wait time so we can run a three second job.
Per dotnet/dnceng#3008 (comment) the recommendation is to move to osx 14 queues but I'm trying with osx 13 since I assume our preference is as old as possible.
Cc @dotnet/runtime-infrastructure