Skip to content

[mono][arm64] Handle sysctlbyname failing to find system options. - #87189

Merged
vargaz merged 1 commit into
dotnet:mainfrom
rolfbjarne:fix-sysctlbyname-failure
Jun 8, 2023
Merged

[mono][arm64] Handle sysctlbyname failing to find system options.#87189
vargaz merged 1 commit into
dotnet:mainfrom
rolfbjarne:fix-sysctlbyname-failure

Conversation

@rolfbjarne

@rolfbjarnerolfbjarne commented Jun 6, 2023

Copy link
Copy Markdown
Member

This fixes a startup crash on Big Sur:

error: * Assertion at /Users/runner/work/1/s/src/mono/mono/utils/mono-hwcap-arm64.c:35, condition `res == 0' not met

Because sysctl can't find some of these options:

$ sysctl hw.optional.armv8_crc32
hw.optional.armv8_crc32: 1
$ sysctl hw.optional.arm.FEAT_RDM
sysctl: unknown oid 'hw.optional.arm.FEAT_RDM'
$ sysctl hw.optional.arm.FEAT_DotProd
sysctl: unknown oid 'hw.optional.arm.FEAT_DotProd'
$ sysctl hw.optional.arm.FEAT_SHA1
sysctl: unknown oid 'hw.optional.arm.FEAT_SHA1'
$ sysctl hw.optional.arm.FEAT_SHA256
sysctl: unknown oid 'hw.optional.arm.FEAT_SHA256'
$ sysctl hw.optional.arm.FEAT_AES
sysctl: unknown oid 'hw.optional.arm.FEAT_AES'

Full stack trace:

* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 2.1
* frame #0: 0x0000010ef37560 libmonosgen-2.0.dylib`monoeg_assertion_message
frame #1: 0x0000010ef375cc libmonosgen-2.0.dylib`mono_assertion_message + 32
frame #2: 0x0000010ef40d6c libmonosgen-2.0.dylib`mono_hwcap_arch_init + 544
frame #3: 0x0000010ef54bd8 libmonosgen-2.0.dylib`mono_hwcap_init + 72
frame #4: 0x0000010ee14dc0 libmonosgen-2.0.dylib`parse_optimizations + 52
frame #5: 0x0000010edbed48 libmonosgen-2.0.dylib`mono_init
frame #6: 0x0000010ee18968 libmonosgen-2.0.dylib`mono_jit_init_version
frame #7: 0x0000010f48a300 libxamarin-dotnet-debug.dylib`xamarin_bridge_initialize + 216
frame #8: 0x0000010f4900a4 libxamarin-dotnet-debug.dylib`xamarin_main + 376

This fixes a startup crash on Big Sur:
> error: * Assertion at /Users/runner/work/1/s/src/mono/mono/utils/mono-hwcap-arm64.c:35, condition `res == 0' not met
Because sysctl can't find some of these options:
$ sysctl hw.optional.armv8_crc32
hw.optional.armv8_crc32: 1
$ sysctl hw.optional.arm.FEAT_RDM
sysctl: unknown oid 'hw.optional.arm.FEAT_RDM'
$ sysctl hw.optional.arm.FEAT_DotProd
sysctl: unknown oid 'hw.optional.arm.FEAT_DotProd'
$ sysctl hw.optional.arm.FEAT_SHA1
sysctl: unknown oid 'hw.optional.arm.FEAT_SHA1'
$ sysctl hw.optional.arm.FEAT_SHA256
sysctl: unknown oid 'hw.optional.arm.FEAT_SHA256'
$ sysctl hw.optional.arm.FEAT_AES
sysctl: unknown oid 'hw.optional.arm.FEAT_AES'
Full stack trace:
* thread dotnet#1, queue = 'com.apple.main-thread', stop reason = breakpoint 2.1
* frame #0: 0x0000010ef37560 libmonosgen-2.0.dylib`monoeg_assertion_message
frame dotnet#1: 0x0000010ef375cc libmonosgen-2.0.dylib`mono_assertion_message + 32
frame dotnet#2: 0x0000010ef40d6c libmonosgen-2.0.dylib`mono_hwcap_arch_init + 544
frame dotnet#3: 0x0000010ef54bd8 libmonosgen-2.0.dylib`mono_hwcap_init + 72
frame dotnet#4: 0x0000010ee14dc0 libmonosgen-2.0.dylib`parse_optimizations + 52
frame dotnet#5: 0x0000010edbed48 libmonosgen-2.0.dylib`mono_init
frame dotnet#6: 0x0000010ee18968 libmonosgen-2.0.dylib`mono_jit_init_version
frame dotnet#7: 0x0000010f48a300 libxamarin-dotnet-debug.dylib`xamarin_bridge_initialize + 216
frame dotnet#8: 0x0000010f4900a4 libxamarin-dotnet-debug.dylib`xamarin_main + 376
@rolfbjarne
rolfbjarne requested a review from vargaz as a code ownerJune 6, 2023 19:22
@ghostghost added the area-VM-meta-mono label Jun 6, 2023
@ghostghost assigned rolfbjarneJun 6, 2023
@rolfbjarne

Copy link
Copy Markdown
MemberAuthor

I'm guessing this started happening in 4de58bf, CC @vargaz

@rolfbjarne

Copy link
Copy Markdown
MemberAuthor

@vargaz do I need to do anything else to get this merged?

Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@rolfbjarne@vargaz