[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now - #127527

Closed
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution
Closed

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now#127527
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution

Conversation

CopilotAI commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Android armeabi-v7a mandates the softfp calling convention (-mfloat-abi=softfp): float args pass through integer registers at call boundaries even though VFP is used for arithmetic. After #127225 enabled RyuJIT for android-arm, the JIT was never told to use softfp, so it treated the ABI as hardfp. Math.Truncate calls ModF(d, &d) — but with no stack slot allocated for d (it lives in d0), &d is null → SIGSEGV before any test runs.

Description

  • eng/native/configureplatform.cmake: Set ARM_SOFTFP=1 when CLR_CMAKE_TARGET_ARCH=arm and CLR_CMAKE_TARGET_OS=android. This feeds into the existing configurecompiler.cmake path that globally emits -DARM_SOFTFP and -mfloat-abi=softfp, aligning the JIT's codegen ABI assumptions with the NDK default.

  • src/coreclr/clrdefinitions.cmake: Extend the ARM_SOFTFPtarget_compile_definitions in set_target_definitions_to_custom_os_and_arch to also cover arch=arm when CLR_CMAKE_TARGET_ANDROID is set. This ensures JIT/gcinfo cross-compilation targets get the correct define.

# Before: only armel (soft-float embedded Linux) got ARM_SOFTFPif (TARGETDETAILS_ARCH STREQUAL"armel")
# After: Android ARM32 also needs softfpif (TARGETDETAILS_ARCH STREQUAL"armel"OR
(TARGETDETAILS_ARCH STREQUAL"arm"AND CLR_CMAKE_TARGET_ANDROID))

Customer Impact

Hard crash (SIGSEGV) on startup of any .NET app running on Android ARM32 with the CoreCLR runtime. Affects every test leg on android-arm, blocking all PRs that trigger those legs.

Regression

Yes — introduced by #127225 (merged 2026-04-28) which first enabled the CoreCLR JIT on android-arm. No prior release shipped android-arm CoreCLR support, so no stable release is affected.

Testing

The fix is build-system / compile-flag only. Correctness is validated by the android-arm CI leg added in #127225 — the SIGSEGV crash on DateTime.get_Now() during test runner init will no longer occur once the JIT correctly spills float parameters to stack slots.

Risk

Low. The change mirrors exactly what is already done for armel (soft-float embedded Linux). It only activates when CLR_CMAKE_TARGET_OS=android + CLR_CMAKE_TARGET_ARCH=arm, leaving all other targets unaffected.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

CopilotAI requested review from Copilot and removed request for CopilotApril 28, 2026 19:22
CopilotAI changed the title [WIP] Fix SIGSEGV error during native code execution[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.NowApr 28, 2026
CopilotAI requested a review from mangod9April 28, 2026 19:23
@jakobbotsch

Copy link
Copy Markdown
Member

Let's see how this works out... I don't think we ever tested the softfp support in our own CI, and this support was added many years ago by Samsung, so it may be quite bitrotted at this point.
I do think they have been using the armel support since then, so it may not be too bad.

@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Apr 28, 2026
@mangod9

Copy link
Copy Markdown
Member

It appears the DateTime issue is resolved but there are other failures with that leg. Dont think android-arm on coreclr is ready to be in CI yet. The change should be reverted till the leg is validated for longer @simonrozsival ?

@simonrozsival

Copy link
Copy Markdown
Member

Dont think android-arm on coreclr is ready to be in CI yet.

@mangod9 I agree. #127225 was merged without adequate validation. Reverting in #127547.

@mangod9

Copy link
Copy Markdown
Member

Closing this since the android-arm PR is reverted. This change might be needed before enabling again, but appears it needs other investigations to enable.

@mangod9mangod9 closed this Apr 29, 2026
@jkotas
jkotas deleted the copilot/fix-sigsegv-native-code-execution branch May 22, 2026 15:52
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 22, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[android] Got a SIGSEGV while executing native code. at System.DateTime.get_Now()

4 participants

@jakobbotsch@mangod9@simonrozsival
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now - #127527

Closed
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution
Closed

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now#127527
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution

Conversation

CopilotAI commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Android armeabi-v7a mandates the softfp calling convention (-mfloat-abi=softfp): float args pass through integer registers at call boundaries even though VFP is used for arithmetic. After #127225 enabled RyuJIT for android-arm, the JIT was never told to use softfp, so it treated the ABI as hardfp. Math.Truncate calls ModF(d, &d) — but with no stack slot allocated for d (it lives in d0), &d is null → SIGSEGV before any test runs.

Description

  • eng/native/configureplatform.cmake: Set ARM_SOFTFP=1 when CLR_CMAKE_TARGET_ARCH=arm and CLR_CMAKE_TARGET_OS=android. This feeds into the existing configurecompiler.cmake path that globally emits -DARM_SOFTFP and -mfloat-abi=softfp, aligning the JIT's codegen ABI assumptions with the NDK default.

  • src/coreclr/clrdefinitions.cmake: Extend the ARM_SOFTFPtarget_compile_definitions in set_target_definitions_to_custom_os_and_arch to also cover arch=arm when CLR_CMAKE_TARGET_ANDROID is set. This ensures JIT/gcinfo cross-compilation targets get the correct define.

# Before: only armel (soft-float embedded Linux) got ARM_SOFTFPif (TARGETDETAILS_ARCH STREQUAL"armel")
# After: Android ARM32 also needs softfpif (TARGETDETAILS_ARCH STREQUAL"armel"OR
(TARGETDETAILS_ARCH STREQUAL"arm"AND CLR_CMAKE_TARGET_ANDROID))

Customer Impact

Hard crash (SIGSEGV) on startup of any .NET app running on Android ARM32 with the CoreCLR runtime. Affects every test leg on android-arm, blocking all PRs that trigger those legs.

Regression

Yes — introduced by #127225 (merged 2026-04-28) which first enabled the CoreCLR JIT on android-arm. No prior release shipped android-arm CoreCLR support, so no stable release is affected.

Testing

The fix is build-system / compile-flag only. Correctness is validated by the android-arm CI leg added in #127225 — the SIGSEGV crash on DateTime.get_Now() during test runner init will no longer occur once the JIT correctly spills float parameters to stack slots.

Risk

Low. The change mirrors exactly what is already done for armel (soft-float embedded Linux). It only activates when CLR_CMAKE_TARGET_OS=android + CLR_CMAKE_TARGET_ARCH=arm, leaving all other targets unaffected.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

CopilotAI requested review from Copilot and removed request for CopilotApril 28, 2026 19:22
CopilotAI changed the title [WIP] Fix SIGSEGV error during native code execution[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.NowApr 28, 2026
CopilotAI requested a review from mangod9April 28, 2026 19:23
@jakobbotsch

Copy link
Copy Markdown
Member

Let's see how this works out... I don't think we ever tested the softfp support in our own CI, and this support was added many years ago by Samsung, so it may be quite bitrotted at this point.
I do think they have been using the armel support since then, so it may not be too bad.

@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Apr 28, 2026
@mangod9

Copy link
Copy Markdown
Member

It appears the DateTime issue is resolved but there are other failures with that leg. Dont think android-arm on coreclr is ready to be in CI yet. The change should be reverted till the leg is validated for longer @simonrozsival ?

@simonrozsival

Copy link
Copy Markdown
Member

Dont think android-arm on coreclr is ready to be in CI yet.

@mangod9 I agree. #127225 was merged without adequate validation. Reverting in #127547.

@mangod9

Copy link
Copy Markdown
Member

Closing this since the android-arm PR is reverted. This change might be needed before enabling again, but appears it needs other investigations to enable.

@mangod9mangod9 closed this Apr 29, 2026
@jkotas
jkotas deleted the copilot/fix-sigsegv-native-code-execution branch May 22, 2026 15:52
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 22, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[android] Got a SIGSEGV while executing native code. at System.DateTime.get_Now()

4 participants

@jakobbotsch@mangod9@simonrozsival
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now - #127527

Closed
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution
Closed

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now#127527
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution

Conversation

CopilotAI commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Android armeabi-v7a mandates the softfp calling convention (-mfloat-abi=softfp): float args pass through integer registers at call boundaries even though VFP is used for arithmetic. After #127225 enabled RyuJIT for android-arm, the JIT was never told to use softfp, so it treated the ABI as hardfp. Math.Truncate calls ModF(d, &d) — but with no stack slot allocated for d (it lives in d0), &d is null → SIGSEGV before any test runs.

Description

  • eng/native/configureplatform.cmake: Set ARM_SOFTFP=1 when CLR_CMAKE_TARGET_ARCH=arm and CLR_CMAKE_TARGET_OS=android. This feeds into the existing configurecompiler.cmake path that globally emits -DARM_SOFTFP and -mfloat-abi=softfp, aligning the JIT's codegen ABI assumptions with the NDK default.

  • src/coreclr/clrdefinitions.cmake: Extend the ARM_SOFTFPtarget_compile_definitions in set_target_definitions_to_custom_os_and_arch to also cover arch=arm when CLR_CMAKE_TARGET_ANDROID is set. This ensures JIT/gcinfo cross-compilation targets get the correct define.

# Before: only armel (soft-float embedded Linux) got ARM_SOFTFPif (TARGETDETAILS_ARCH STREQUAL"armel")
# After: Android ARM32 also needs softfpif (TARGETDETAILS_ARCH STREQUAL"armel"OR
(TARGETDETAILS_ARCH STREQUAL"arm"AND CLR_CMAKE_TARGET_ANDROID))

Customer Impact

Hard crash (SIGSEGV) on startup of any .NET app running on Android ARM32 with the CoreCLR runtime. Affects every test leg on android-arm, blocking all PRs that trigger those legs.

Regression

Yes — introduced by #127225 (merged 2026-04-28) which first enabled the CoreCLR JIT on android-arm. No prior release shipped android-arm CoreCLR support, so no stable release is affected.

Testing

The fix is build-system / compile-flag only. Correctness is validated by the android-arm CI leg added in #127225 — the SIGSEGV crash on DateTime.get_Now() during test runner init will no longer occur once the JIT correctly spills float parameters to stack slots.

Risk

Low. The change mirrors exactly what is already done for armel (soft-float embedded Linux). It only activates when CLR_CMAKE_TARGET_OS=android + CLR_CMAKE_TARGET_ARCH=arm, leaving all other targets unaffected.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

CopilotAI requested review from Copilot and removed request for CopilotApril 28, 2026 19:22
CopilotAI changed the title [WIP] Fix SIGSEGV error during native code execution[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.NowApr 28, 2026
CopilotAI requested a review from mangod9April 28, 2026 19:23
@jakobbotsch

Copy link
Copy Markdown
Member

Let's see how this works out... I don't think we ever tested the softfp support in our own CI, and this support was added many years ago by Samsung, so it may be quite bitrotted at this point.
I do think they have been using the armel support since then, so it may not be too bad.

@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Apr 28, 2026
@mangod9

Copy link
Copy Markdown
Member

It appears the DateTime issue is resolved but there are other failures with that leg. Dont think android-arm on coreclr is ready to be in CI yet. The change should be reverted till the leg is validated for longer @simonrozsival ?

@simonrozsival

Copy link
Copy Markdown
Member

Dont think android-arm on coreclr is ready to be in CI yet.

@mangod9 I agree. #127225 was merged without adequate validation. Reverting in #127547.

@mangod9

Copy link
Copy Markdown
Member

Closing this since the android-arm PR is reverted. This change might be needed before enabling again, but appears it needs other investigations to enable.

@mangod9mangod9 closed this Apr 29, 2026
@jkotas
jkotas deleted the copilot/fix-sigsegv-native-code-execution branch May 22, 2026 15:52
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 22, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[android] Got a SIGSEGV while executing native code. at System.DateTime.get_Now()

4 participants

@jakobbotsch@mangod9@simonrozsival
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now - #127527

Closed
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution
Closed

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now#127527
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution

Conversation

CopilotAI commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Android armeabi-v7a mandates the softfp calling convention (-mfloat-abi=softfp): float args pass through integer registers at call boundaries even though VFP is used for arithmetic. After #127225 enabled RyuJIT for android-arm, the JIT was never told to use softfp, so it treated the ABI as hardfp. Math.Truncate calls ModF(d, &d) — but with no stack slot allocated for d (it lives in d0), &d is null → SIGSEGV before any test runs.

Description

  • eng/native/configureplatform.cmake: Set ARM_SOFTFP=1 when CLR_CMAKE_TARGET_ARCH=arm and CLR_CMAKE_TARGET_OS=android. This feeds into the existing configurecompiler.cmake path that globally emits -DARM_SOFTFP and -mfloat-abi=softfp, aligning the JIT's codegen ABI assumptions with the NDK default.

  • src/coreclr/clrdefinitions.cmake: Extend the ARM_SOFTFPtarget_compile_definitions in set_target_definitions_to_custom_os_and_arch to also cover arch=arm when CLR_CMAKE_TARGET_ANDROID is set. This ensures JIT/gcinfo cross-compilation targets get the correct define.

# Before: only armel (soft-float embedded Linux) got ARM_SOFTFPif (TARGETDETAILS_ARCH STREQUAL"armel")
# After: Android ARM32 also needs softfpif (TARGETDETAILS_ARCH STREQUAL"armel"OR
(TARGETDETAILS_ARCH STREQUAL"arm"AND CLR_CMAKE_TARGET_ANDROID))

Customer Impact

Hard crash (SIGSEGV) on startup of any .NET app running on Android ARM32 with the CoreCLR runtime. Affects every test leg on android-arm, blocking all PRs that trigger those legs.

Regression

Yes — introduced by #127225 (merged 2026-04-28) which first enabled the CoreCLR JIT on android-arm. No prior release shipped android-arm CoreCLR support, so no stable release is affected.

Testing

The fix is build-system / compile-flag only. Correctness is validated by the android-arm CI leg added in #127225 — the SIGSEGV crash on DateTime.get_Now() during test runner init will no longer occur once the JIT correctly spills float parameters to stack slots.

Risk

Low. The change mirrors exactly what is already done for armel (soft-float embedded Linux). It only activates when CLR_CMAKE_TARGET_OS=android + CLR_CMAKE_TARGET_ARCH=arm, leaving all other targets unaffected.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

CopilotAI requested review from Copilot and removed request for CopilotApril 28, 2026 19:22
CopilotAI changed the title [WIP] Fix SIGSEGV error during native code execution[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.NowApr 28, 2026
CopilotAI requested a review from mangod9April 28, 2026 19:23
@jakobbotsch

Copy link
Copy Markdown
Member

Let's see how this works out... I don't think we ever tested the softfp support in our own CI, and this support was added many years ago by Samsung, so it may be quite bitrotted at this point.
I do think they have been using the armel support since then, so it may not be too bad.

@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Apr 28, 2026
@mangod9

Copy link
Copy Markdown
Member

It appears the DateTime issue is resolved but there are other failures with that leg. Dont think android-arm on coreclr is ready to be in CI yet. The change should be reverted till the leg is validated for longer @simonrozsival ?

@simonrozsival

Copy link
Copy Markdown
Member

Dont think android-arm on coreclr is ready to be in CI yet.

@mangod9 I agree. #127225 was merged without adequate validation. Reverting in #127547.

@mangod9

Copy link
Copy Markdown
Member

Closing this since the android-arm PR is reverted. This change might be needed before enabling again, but appears it needs other investigations to enable.

@mangod9mangod9 closed this Apr 29, 2026
@jkotas
jkotas deleted the copilot/fix-sigsegv-native-code-execution branch May 22, 2026 15:52
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 22, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[android] Got a SIGSEGV while executing native code. at System.DateTime.get_Now()

4 participants

@jakobbotsch@mangod9@simonrozsival
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now - #127527

Closed
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution
Closed

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now#127527
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution

Conversation

CopilotAI commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Android armeabi-v7a mandates the softfp calling convention (-mfloat-abi=softfp): float args pass through integer registers at call boundaries even though VFP is used for arithmetic. After #127225 enabled RyuJIT for android-arm, the JIT was never told to use softfp, so it treated the ABI as hardfp. Math.Truncate calls ModF(d, &d) — but with no stack slot allocated for d (it lives in d0), &d is null → SIGSEGV before any test runs.

Description

  • eng/native/configureplatform.cmake: Set ARM_SOFTFP=1 when CLR_CMAKE_TARGET_ARCH=arm and CLR_CMAKE_TARGET_OS=android. This feeds into the existing configurecompiler.cmake path that globally emits -DARM_SOFTFP and -mfloat-abi=softfp, aligning the JIT's codegen ABI assumptions with the NDK default.

  • src/coreclr/clrdefinitions.cmake: Extend the ARM_SOFTFPtarget_compile_definitions in set_target_definitions_to_custom_os_and_arch to also cover arch=arm when CLR_CMAKE_TARGET_ANDROID is set. This ensures JIT/gcinfo cross-compilation targets get the correct define.

# Before: only armel (soft-float embedded Linux) got ARM_SOFTFPif (TARGETDETAILS_ARCH STREQUAL"armel")
# After: Android ARM32 also needs softfpif (TARGETDETAILS_ARCH STREQUAL"armel"OR
(TARGETDETAILS_ARCH STREQUAL"arm"AND CLR_CMAKE_TARGET_ANDROID))

Customer Impact

Hard crash (SIGSEGV) on startup of any .NET app running on Android ARM32 with the CoreCLR runtime. Affects every test leg on android-arm, blocking all PRs that trigger those legs.

Regression

Yes — introduced by #127225 (merged 2026-04-28) which first enabled the CoreCLR JIT on android-arm. No prior release shipped android-arm CoreCLR support, so no stable release is affected.

Testing

The fix is build-system / compile-flag only. Correctness is validated by the android-arm CI leg added in #127225 — the SIGSEGV crash on DateTime.get_Now() during test runner init will no longer occur once the JIT correctly spills float parameters to stack slots.

Risk

Low. The change mirrors exactly what is already done for armel (soft-float embedded Linux). It only activates when CLR_CMAKE_TARGET_OS=android + CLR_CMAKE_TARGET_ARCH=arm, leaving all other targets unaffected.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

CopilotAI requested review from Copilot and removed request for CopilotApril 28, 2026 19:22
CopilotAI changed the title [WIP] Fix SIGSEGV error during native code execution[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.NowApr 28, 2026
CopilotAI requested a review from mangod9April 28, 2026 19:23
@jakobbotsch

Copy link
Copy Markdown
Member

Let's see how this works out... I don't think we ever tested the softfp support in our own CI, and this support was added many years ago by Samsung, so it may be quite bitrotted at this point.
I do think they have been using the armel support since then, so it may not be too bad.

@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Apr 28, 2026
@mangod9

Copy link
Copy Markdown
Member

It appears the DateTime issue is resolved but there are other failures with that leg. Dont think android-arm on coreclr is ready to be in CI yet. The change should be reverted till the leg is validated for longer @simonrozsival ?

@simonrozsival

Copy link
Copy Markdown
Member

Dont think android-arm on coreclr is ready to be in CI yet.

@mangod9 I agree. #127225 was merged without adequate validation. Reverting in #127547.

@mangod9

Copy link
Copy Markdown
Member

Closing this since the android-arm PR is reverted. This change might be needed before enabling again, but appears it needs other investigations to enable.

@mangod9mangod9 closed this Apr 29, 2026
@jkotas
jkotas deleted the copilot/fix-sigsegv-native-code-execution branch May 22, 2026 15:52
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 22, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[android] Got a SIGSEGV while executing native code. at System.DateTime.get_Now()

4 participants

@jakobbotsch@mangod9@simonrozsival
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now - #127527

Closed
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution
Closed

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now#127527
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution

Conversation

CopilotAI commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Android armeabi-v7a mandates the softfp calling convention (-mfloat-abi=softfp): float args pass through integer registers at call boundaries even though VFP is used for arithmetic. After #127225 enabled RyuJIT for android-arm, the JIT was never told to use softfp, so it treated the ABI as hardfp. Math.Truncate calls ModF(d, &d) — but with no stack slot allocated for d (it lives in d0), &d is null → SIGSEGV before any test runs.

Description

  • eng/native/configureplatform.cmake: Set ARM_SOFTFP=1 when CLR_CMAKE_TARGET_ARCH=arm and CLR_CMAKE_TARGET_OS=android. This feeds into the existing configurecompiler.cmake path that globally emits -DARM_SOFTFP and -mfloat-abi=softfp, aligning the JIT's codegen ABI assumptions with the NDK default.

  • src/coreclr/clrdefinitions.cmake: Extend the ARM_SOFTFPtarget_compile_definitions in set_target_definitions_to_custom_os_and_arch to also cover arch=arm when CLR_CMAKE_TARGET_ANDROID is set. This ensures JIT/gcinfo cross-compilation targets get the correct define.

# Before: only armel (soft-float embedded Linux) got ARM_SOFTFPif (TARGETDETAILS_ARCH STREQUAL"armel")
# After: Android ARM32 also needs softfpif (TARGETDETAILS_ARCH STREQUAL"armel"OR
(TARGETDETAILS_ARCH STREQUAL"arm"AND CLR_CMAKE_TARGET_ANDROID))

Customer Impact

Hard crash (SIGSEGV) on startup of any .NET app running on Android ARM32 with the CoreCLR runtime. Affects every test leg on android-arm, blocking all PRs that trigger those legs.

Regression

Yes — introduced by #127225 (merged 2026-04-28) which first enabled the CoreCLR JIT on android-arm. No prior release shipped android-arm CoreCLR support, so no stable release is affected.

Testing

The fix is build-system / compile-flag only. Correctness is validated by the android-arm CI leg added in #127225 — the SIGSEGV crash on DateTime.get_Now() during test runner init will no longer occur once the JIT correctly spills float parameters to stack slots.

Risk

Low. The change mirrors exactly what is already done for armel (soft-float embedded Linux). It only activates when CLR_CMAKE_TARGET_OS=android + CLR_CMAKE_TARGET_ARCH=arm, leaving all other targets unaffected.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

CopilotAI requested review from Copilot and removed request for CopilotApril 28, 2026 19:22
CopilotAI changed the title [WIP] Fix SIGSEGV error during native code execution[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.NowApr 28, 2026
CopilotAI requested a review from mangod9April 28, 2026 19:23
@jakobbotsch

Copy link
Copy Markdown
Member

Let's see how this works out... I don't think we ever tested the softfp support in our own CI, and this support was added many years ago by Samsung, so it may be quite bitrotted at this point.
I do think they have been using the armel support since then, so it may not be too bad.

@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Apr 28, 2026
@mangod9

Copy link
Copy Markdown
Member

It appears the DateTime issue is resolved but there are other failures with that leg. Dont think android-arm on coreclr is ready to be in CI yet. The change should be reverted till the leg is validated for longer @simonrozsival ?

@simonrozsival

Copy link
Copy Markdown
Member

Dont think android-arm on coreclr is ready to be in CI yet.

@mangod9 I agree. #127225 was merged without adequate validation. Reverting in #127547.

@mangod9

Copy link
Copy Markdown
Member

Closing this since the android-arm PR is reverted. This change might be needed before enabling again, but appears it needs other investigations to enable.

@mangod9mangod9 closed this Apr 29, 2026
@jkotas
jkotas deleted the copilot/fix-sigsegv-native-code-execution branch May 22, 2026 15:52
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 22, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[android] Got a SIGSEGV while executing native code. at System.DateTime.get_Now()

4 participants

@jakobbotsch@mangod9@simonrozsival
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now - #127527

Closed
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution
Closed

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now#127527
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution

Conversation

CopilotAI commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Android armeabi-v7a mandates the softfp calling convention (-mfloat-abi=softfp): float args pass through integer registers at call boundaries even though VFP is used for arithmetic. After #127225 enabled RyuJIT for android-arm, the JIT was never told to use softfp, so it treated the ABI as hardfp. Math.Truncate calls ModF(d, &d) — but with no stack slot allocated for d (it lives in d0), &d is null → SIGSEGV before any test runs.

Description

  • eng/native/configureplatform.cmake: Set ARM_SOFTFP=1 when CLR_CMAKE_TARGET_ARCH=arm and CLR_CMAKE_TARGET_OS=android. This feeds into the existing configurecompiler.cmake path that globally emits -DARM_SOFTFP and -mfloat-abi=softfp, aligning the JIT's codegen ABI assumptions with the NDK default.

  • src/coreclr/clrdefinitions.cmake: Extend the ARM_SOFTFPtarget_compile_definitions in set_target_definitions_to_custom_os_and_arch to also cover arch=arm when CLR_CMAKE_TARGET_ANDROID is set. This ensures JIT/gcinfo cross-compilation targets get the correct define.

# Before: only armel (soft-float embedded Linux) got ARM_SOFTFPif (TARGETDETAILS_ARCH STREQUAL"armel")
# After: Android ARM32 also needs softfpif (TARGETDETAILS_ARCH STREQUAL"armel"OR
(TARGETDETAILS_ARCH STREQUAL"arm"AND CLR_CMAKE_TARGET_ANDROID))

Customer Impact

Hard crash (SIGSEGV) on startup of any .NET app running on Android ARM32 with the CoreCLR runtime. Affects every test leg on android-arm, blocking all PRs that trigger those legs.

Regression

Yes — introduced by #127225 (merged 2026-04-28) which first enabled the CoreCLR JIT on android-arm. No prior release shipped android-arm CoreCLR support, so no stable release is affected.

Testing

The fix is build-system / compile-flag only. Correctness is validated by the android-arm CI leg added in #127225 — the SIGSEGV crash on DateTime.get_Now() during test runner init will no longer occur once the JIT correctly spills float parameters to stack slots.

Risk

Low. The change mirrors exactly what is already done for armel (soft-float embedded Linux). It only activates when CLR_CMAKE_TARGET_OS=android + CLR_CMAKE_TARGET_ARCH=arm, leaving all other targets unaffected.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

CopilotAI requested review from Copilot and removed request for CopilotApril 28, 2026 19:22
CopilotAI changed the title [WIP] Fix SIGSEGV error during native code execution[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.NowApr 28, 2026
CopilotAI requested a review from mangod9April 28, 2026 19:23
@jakobbotsch

Copy link
Copy Markdown
Member

Let's see how this works out... I don't think we ever tested the softfp support in our own CI, and this support was added many years ago by Samsung, so it may be quite bitrotted at this point.
I do think they have been using the armel support since then, so it may not be too bad.

@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Apr 28, 2026
@mangod9

Copy link
Copy Markdown
Member

It appears the DateTime issue is resolved but there are other failures with that leg. Dont think android-arm on coreclr is ready to be in CI yet. The change should be reverted till the leg is validated for longer @simonrozsival ?

@simonrozsival

Copy link
Copy Markdown
Member

Dont think android-arm on coreclr is ready to be in CI yet.

@mangod9 I agree. #127225 was merged without adequate validation. Reverting in #127547.

@mangod9

Copy link
Copy Markdown
Member

Closing this since the android-arm PR is reverted. This change might be needed before enabling again, but appears it needs other investigations to enable.

@mangod9mangod9 closed this Apr 29, 2026
@jkotas
jkotas deleted the copilot/fix-sigsegv-native-code-execution branch May 22, 2026 15:52
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 22, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[android] Got a SIGSEGV while executing native code. at System.DateTime.get_Now()

4 participants

@jakobbotsch@mangod9@simonrozsival
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now - #127527

Closed
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution
Closed

[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.Now#127527
mangod9 with Copilot wants to merge 2 commits into
mainfrom
copilot/fix-sigsegv-native-code-execution

Conversation

CopilotAI commented Apr 28, 2026

Copy link
Copy Markdown
Contributor

Android armeabi-v7a mandates the softfp calling convention (-mfloat-abi=softfp): float args pass through integer registers at call boundaries even though VFP is used for arithmetic. After #127225 enabled RyuJIT for android-arm, the JIT was never told to use softfp, so it treated the ABI as hardfp. Math.Truncate calls ModF(d, &d) — but with no stack slot allocated for d (it lives in d0), &d is null → SIGSEGV before any test runs.

Description

  • eng/native/configureplatform.cmake: Set ARM_SOFTFP=1 when CLR_CMAKE_TARGET_ARCH=arm and CLR_CMAKE_TARGET_OS=android. This feeds into the existing configurecompiler.cmake path that globally emits -DARM_SOFTFP and -mfloat-abi=softfp, aligning the JIT's codegen ABI assumptions with the NDK default.

  • src/coreclr/clrdefinitions.cmake: Extend the ARM_SOFTFPtarget_compile_definitions in set_target_definitions_to_custom_os_and_arch to also cover arch=arm when CLR_CMAKE_TARGET_ANDROID is set. This ensures JIT/gcinfo cross-compilation targets get the correct define.

# Before: only armel (soft-float embedded Linux) got ARM_SOFTFPif (TARGETDETAILS_ARCH STREQUAL"armel")
# After: Android ARM32 also needs softfpif (TARGETDETAILS_ARCH STREQUAL"armel"OR
(TARGETDETAILS_ARCH STREQUAL"arm"AND CLR_CMAKE_TARGET_ANDROID))

Customer Impact

Hard crash (SIGSEGV) on startup of any .NET app running on Android ARM32 with the CoreCLR runtime. Affects every test leg on android-arm, blocking all PRs that trigger those legs.

Regression

Yes — introduced by #127225 (merged 2026-04-28) which first enabled the CoreCLR JIT on android-arm. No prior release shipped android-arm CoreCLR support, so no stable release is affected.

Testing

The fix is build-system / compile-flag only. Correctness is validated by the android-arm CI leg added in #127225 — the SIGSEGV crash on DateTime.get_Now() during test runner init will no longer occur once the JIT correctly spills float parameters to stack slots.

Risk

Low. The change mirrors exactly what is already done for armel (soft-float embedded Linux). It only activates when CLR_CMAKE_TARGET_OS=android + CLR_CMAKE_TARGET_ARCH=arm, leaving all other targets unaffected.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

CopilotAI requested review from Copilot and removed request for CopilotApril 28, 2026 19:22
CopilotAI changed the title [WIP] Fix SIGSEGV error during native code execution[android] Enable ARM_SOFTFP for Android ARM32 to fix SIGSEGV in DateTime.NowApr 28, 2026
CopilotAI requested a review from mangod9April 28, 2026 19:23
@jakobbotsch

Copy link
Copy Markdown
Member

Let's see how this works out... I don't think we ever tested the softfp support in our own CI, and this support was added many years ago by Samsung, so it may be quite bitrotted at this point.
I do think they have been using the armel support since then, so it may not be too bad.

@github-actionsgithub-actionsBot added the area-Infrastructure-coreclr Only use for closed issues label Apr 28, 2026
@mangod9

Copy link
Copy Markdown
Member

It appears the DateTime issue is resolved but there are other failures with that leg. Dont think android-arm on coreclr is ready to be in CI yet. The change should be reverted till the leg is validated for longer @simonrozsival ?

@simonrozsival

Copy link
Copy Markdown
Member

Dont think android-arm on coreclr is ready to be in CI yet.

@mangod9 I agree. #127225 was merged without adequate validation. Reverting in #127547.

@mangod9

Copy link
Copy Markdown
Member

Closing this since the android-arm PR is reverted. This change might be needed before enabling again, but appears it needs other investigations to enable.

@mangod9mangod9 closed this Apr 29, 2026
@jkotas
jkotas deleted the copilot/fix-sigsegv-native-code-execution branch May 22, 2026 15:52
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 22, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

area-Infrastructure-coreclrOnly use for closed issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[android] Got a SIGSEGV while executing native code. at System.DateTime.get_Now()

4 participants

@jakobbotsch@mangod9@simonrozsival