createdump: fix macOS arm64 thread IDs in LLDB - #131962

Merged
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info
Aug 7, 2026
Merged

createdump: fix macOS arm64 thread IDs in LLDB#131962
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

  • write the macOS arm64 createdump thread-info region at a 47-bit-valid address
  • emit OS thread IDs using LLDB's process metadataLC_NOTE format
    • this is for future support so we can eventually remove the SpecialThreadInfo
  • retain the existing special thread-info segment while consumers migrate to the LLDB format

Motivation

Apple Silicon LLDB rejects the legacy 0x7fffffff00000000 synthetic segment and falls back to sequential thread IDs beginning at zero. SOS then cannot correlate LLDB threads with runtime OS thread IDs or retrieve the selected thread context.

Coordinated SOS reader change: dotnet/diagnostics#5953

Related precedent

This follows @steveisok's coordinated Apple Silicon fix for SpecialDiagInfoAddress:

Testing

Draft pending coordinated diagnostics validation on macOS arm64.

max-charlamband others added 2 commits August 6, 2026 14:39
Apple Silicon rejects Mach-O core segments above its 47-bit user-space
address limit. Write the createdump thread ID mapping at a valid address
so LLDB can expose real OS thread IDs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Write OS thread IDs in LLDB's process metadata LC_NOTE format while
retaining the special thread-info segment for compatibility. Align the
Apple Silicon compatibility region with the established special metadata
address scheme.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@steveisok
steveisok self-requested a review August 6, 2026 19:38
@max-charlamb
max-charlamb marked this pull request as ready for review August 6, 2026 19:42
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

CopilotAI reviewed Aug 6, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Note

This error may be related to your runner configuration. You can now configure runners for Copilot code review separately from Copilot cloud agent by creating a copilot-code-review.yml file with your setup steps. Read the docs for details.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.

@max-charlamb
max-charlamb merged commit f659b2c into dotnet:mainAug 7, 2026
110 of 111 checks passed
@max-charlamb
max-charlamb deleted the max-charlamb/macos-arm64-special-thread-info branch August 7, 2026 16:52
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-rc1 milestone Aug 7, 2026
max-charlamb added a commit to dotnet/diagnostics that referenced this pull request Aug 10, 2026
## Summary
- read macOS arm64 createdump thread metadata from the new 47-bit-valid
address
- fall back to the legacy address for compatibility with existing
createdump output
- use the selected address for all subsequent thread-info entries
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and assigns sequential thread IDs beginning at zero. SOS cannot
then correlate LLDB threads with runtime OS thread IDs or retrieve the
selected thread context.
Coordinated writer change: dotnet/runtime#131962
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet/runtime#130443
- diagnostics readers: #5823
## Testing
Draft pending coordinated macOS arm64 validation with the runtime writer
change.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Aug 11, 2026
## Summary
- write the macOS arm64 createdump thread-info region at a 47-bit-valid
address
- emit OS thread IDs using LLDB's `process metadata` `LC_NOTE` format
- this is for future support so we can eventually remove the
`SpecialThreadInfo`
- retain the existing special thread-info segment while consumers
migrate to the LLDB format
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and falls back to sequential thread IDs beginning at zero. SOS
then cannot correlate LLDB threads with runtime OS thread IDs or
retrieve the selected thread context.
Coordinated SOS reader change:
dotnet/diagnostics#5953
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet#130443
- diagnostics readers: dotnet/diagnostics#5823
## Testing
Draft pending coordinated diagnostics validation on macOS arm64.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@max-charlamb@steveisok@noahfalk
, '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

createdump: fix macOS arm64 thread IDs in LLDB - #131962

Merged
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info
Aug 7, 2026
Merged

createdump: fix macOS arm64 thread IDs in LLDB#131962
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

  • write the macOS arm64 createdump thread-info region at a 47-bit-valid address
  • emit OS thread IDs using LLDB's process metadataLC_NOTE format
    • this is for future support so we can eventually remove the SpecialThreadInfo
  • retain the existing special thread-info segment while consumers migrate to the LLDB format

Motivation

Apple Silicon LLDB rejects the legacy 0x7fffffff00000000 synthetic segment and falls back to sequential thread IDs beginning at zero. SOS then cannot correlate LLDB threads with runtime OS thread IDs or retrieve the selected thread context.

Coordinated SOS reader change: dotnet/diagnostics#5953

Related precedent

This follows @steveisok's coordinated Apple Silicon fix for SpecialDiagInfoAddress:

Testing

Draft pending coordinated diagnostics validation on macOS arm64.

max-charlamband others added 2 commits August 6, 2026 14:39
Apple Silicon rejects Mach-O core segments above its 47-bit user-space
address limit. Write the createdump thread ID mapping at a valid address
so LLDB can expose real OS thread IDs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Write OS thread IDs in LLDB's process metadata LC_NOTE format while
retaining the special thread-info segment for compatibility. Align the
Apple Silicon compatibility region with the established special metadata
address scheme.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@steveisok
steveisok self-requested a review August 6, 2026 19:38
@max-charlamb
max-charlamb marked this pull request as ready for review August 6, 2026 19:42
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

CopilotAI reviewed Aug 6, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Note

This error may be related to your runner configuration. You can now configure runners for Copilot code review separately from Copilot cloud agent by creating a copilot-code-review.yml file with your setup steps. Read the docs for details.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.

@max-charlamb
max-charlamb merged commit f659b2c into dotnet:mainAug 7, 2026
110 of 111 checks passed
@max-charlamb
max-charlamb deleted the max-charlamb/macos-arm64-special-thread-info branch August 7, 2026 16:52
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-rc1 milestone Aug 7, 2026
max-charlamb added a commit to dotnet/diagnostics that referenced this pull request Aug 10, 2026
## Summary
- read macOS arm64 createdump thread metadata from the new 47-bit-valid
address
- fall back to the legacy address for compatibility with existing
createdump output
- use the selected address for all subsequent thread-info entries
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and assigns sequential thread IDs beginning at zero. SOS cannot
then correlate LLDB threads with runtime OS thread IDs or retrieve the
selected thread context.
Coordinated writer change: dotnet/runtime#131962
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet/runtime#130443
- diagnostics readers: #5823
## Testing
Draft pending coordinated macOS arm64 validation with the runtime writer
change.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Aug 11, 2026
## Summary
- write the macOS arm64 createdump thread-info region at a 47-bit-valid
address
- emit OS thread IDs using LLDB's `process metadata` `LC_NOTE` format
- this is for future support so we can eventually remove the
`SpecialThreadInfo`
- retain the existing special thread-info segment while consumers
migrate to the LLDB format
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and falls back to sequential thread IDs beginning at zero. SOS
then cannot correlate LLDB threads with runtime OS thread IDs or
retrieve the selected thread context.
Coordinated SOS reader change:
dotnet/diagnostics#5953
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet#130443
- diagnostics readers: dotnet/diagnostics#5823
## Testing
Draft pending coordinated diagnostics validation on macOS arm64.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@max-charlamb@steveisok@noahfalk
, '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

createdump: fix macOS arm64 thread IDs in LLDB - #131962

Merged
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info
Aug 7, 2026
Merged

createdump: fix macOS arm64 thread IDs in LLDB#131962
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

  • write the macOS arm64 createdump thread-info region at a 47-bit-valid address
  • emit OS thread IDs using LLDB's process metadataLC_NOTE format
    • this is for future support so we can eventually remove the SpecialThreadInfo
  • retain the existing special thread-info segment while consumers migrate to the LLDB format

Motivation

Apple Silicon LLDB rejects the legacy 0x7fffffff00000000 synthetic segment and falls back to sequential thread IDs beginning at zero. SOS then cannot correlate LLDB threads with runtime OS thread IDs or retrieve the selected thread context.

Coordinated SOS reader change: dotnet/diagnostics#5953

Related precedent

This follows @steveisok's coordinated Apple Silicon fix for SpecialDiagInfoAddress:

Testing

Draft pending coordinated diagnostics validation on macOS arm64.

max-charlamband others added 2 commits August 6, 2026 14:39
Apple Silicon rejects Mach-O core segments above its 47-bit user-space
address limit. Write the createdump thread ID mapping at a valid address
so LLDB can expose real OS thread IDs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Write OS thread IDs in LLDB's process metadata LC_NOTE format while
retaining the special thread-info segment for compatibility. Align the
Apple Silicon compatibility region with the established special metadata
address scheme.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@steveisok
steveisok self-requested a review August 6, 2026 19:38
@max-charlamb
max-charlamb marked this pull request as ready for review August 6, 2026 19:42
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

CopilotAI reviewed Aug 6, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Note

This error may be related to your runner configuration. You can now configure runners for Copilot code review separately from Copilot cloud agent by creating a copilot-code-review.yml file with your setup steps. Read the docs for details.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.

@max-charlamb
max-charlamb merged commit f659b2c into dotnet:mainAug 7, 2026
110 of 111 checks passed
@max-charlamb
max-charlamb deleted the max-charlamb/macos-arm64-special-thread-info branch August 7, 2026 16:52
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-rc1 milestone Aug 7, 2026
max-charlamb added a commit to dotnet/diagnostics that referenced this pull request Aug 10, 2026
## Summary
- read macOS arm64 createdump thread metadata from the new 47-bit-valid
address
- fall back to the legacy address for compatibility with existing
createdump output
- use the selected address for all subsequent thread-info entries
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and assigns sequential thread IDs beginning at zero. SOS cannot
then correlate LLDB threads with runtime OS thread IDs or retrieve the
selected thread context.
Coordinated writer change: dotnet/runtime#131962
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet/runtime#130443
- diagnostics readers: #5823
## Testing
Draft pending coordinated macOS arm64 validation with the runtime writer
change.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Aug 11, 2026
## Summary
- write the macOS arm64 createdump thread-info region at a 47-bit-valid
address
- emit OS thread IDs using LLDB's `process metadata` `LC_NOTE` format
- this is for future support so we can eventually remove the
`SpecialThreadInfo`
- retain the existing special thread-info segment while consumers
migrate to the LLDB format
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and falls back to sequential thread IDs beginning at zero. SOS
then cannot correlate LLDB threads with runtime OS thread IDs or
retrieve the selected thread context.
Coordinated SOS reader change:
dotnet/diagnostics#5953
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet#130443
- diagnostics readers: dotnet/diagnostics#5823
## Testing
Draft pending coordinated diagnostics validation on macOS arm64.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@max-charlamb@steveisok@noahfalk
, '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

createdump: fix macOS arm64 thread IDs in LLDB - #131962

Merged
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info
Aug 7, 2026
Merged

createdump: fix macOS arm64 thread IDs in LLDB#131962
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

  • write the macOS arm64 createdump thread-info region at a 47-bit-valid address
  • emit OS thread IDs using LLDB's process metadataLC_NOTE format
    • this is for future support so we can eventually remove the SpecialThreadInfo
  • retain the existing special thread-info segment while consumers migrate to the LLDB format

Motivation

Apple Silicon LLDB rejects the legacy 0x7fffffff00000000 synthetic segment and falls back to sequential thread IDs beginning at zero. SOS then cannot correlate LLDB threads with runtime OS thread IDs or retrieve the selected thread context.

Coordinated SOS reader change: dotnet/diagnostics#5953

Related precedent

This follows @steveisok's coordinated Apple Silicon fix for SpecialDiagInfoAddress:

Testing

Draft pending coordinated diagnostics validation on macOS arm64.

max-charlamband others added 2 commits August 6, 2026 14:39
Apple Silicon rejects Mach-O core segments above its 47-bit user-space
address limit. Write the createdump thread ID mapping at a valid address
so LLDB can expose real OS thread IDs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Write OS thread IDs in LLDB's process metadata LC_NOTE format while
retaining the special thread-info segment for compatibility. Align the
Apple Silicon compatibility region with the established special metadata
address scheme.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@steveisok
steveisok self-requested a review August 6, 2026 19:38
@max-charlamb
max-charlamb marked this pull request as ready for review August 6, 2026 19:42
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

CopilotAI reviewed Aug 6, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Note

This error may be related to your runner configuration. You can now configure runners for Copilot code review separately from Copilot cloud agent by creating a copilot-code-review.yml file with your setup steps. Read the docs for details.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.

@max-charlamb
max-charlamb merged commit f659b2c into dotnet:mainAug 7, 2026
110 of 111 checks passed
@max-charlamb
max-charlamb deleted the max-charlamb/macos-arm64-special-thread-info branch August 7, 2026 16:52
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-rc1 milestone Aug 7, 2026
max-charlamb added a commit to dotnet/diagnostics that referenced this pull request Aug 10, 2026
## Summary
- read macOS arm64 createdump thread metadata from the new 47-bit-valid
address
- fall back to the legacy address for compatibility with existing
createdump output
- use the selected address for all subsequent thread-info entries
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and assigns sequential thread IDs beginning at zero. SOS cannot
then correlate LLDB threads with runtime OS thread IDs or retrieve the
selected thread context.
Coordinated writer change: dotnet/runtime#131962
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet/runtime#130443
- diagnostics readers: #5823
## Testing
Draft pending coordinated macOS arm64 validation with the runtime writer
change.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Aug 11, 2026
## Summary
- write the macOS arm64 createdump thread-info region at a 47-bit-valid
address
- emit OS thread IDs using LLDB's `process metadata` `LC_NOTE` format
- this is for future support so we can eventually remove the
`SpecialThreadInfo`
- retain the existing special thread-info segment while consumers
migrate to the LLDB format
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and falls back to sequential thread IDs beginning at zero. SOS
then cannot correlate LLDB threads with runtime OS thread IDs or
retrieve the selected thread context.
Coordinated SOS reader change:
dotnet/diagnostics#5953
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet#130443
- diagnostics readers: dotnet/diagnostics#5823
## Testing
Draft pending coordinated diagnostics validation on macOS arm64.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@max-charlamb@steveisok@noahfalk
, '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

createdump: fix macOS arm64 thread IDs in LLDB - #131962

Merged
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info
Aug 7, 2026
Merged

createdump: fix macOS arm64 thread IDs in LLDB#131962
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

  • write the macOS arm64 createdump thread-info region at a 47-bit-valid address
  • emit OS thread IDs using LLDB's process metadataLC_NOTE format
    • this is for future support so we can eventually remove the SpecialThreadInfo
  • retain the existing special thread-info segment while consumers migrate to the LLDB format

Motivation

Apple Silicon LLDB rejects the legacy 0x7fffffff00000000 synthetic segment and falls back to sequential thread IDs beginning at zero. SOS then cannot correlate LLDB threads with runtime OS thread IDs or retrieve the selected thread context.

Coordinated SOS reader change: dotnet/diagnostics#5953

Related precedent

This follows @steveisok's coordinated Apple Silicon fix for SpecialDiagInfoAddress:

Testing

Draft pending coordinated diagnostics validation on macOS arm64.

max-charlamband others added 2 commits August 6, 2026 14:39
Apple Silicon rejects Mach-O core segments above its 47-bit user-space
address limit. Write the createdump thread ID mapping at a valid address
so LLDB can expose real OS thread IDs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Write OS thread IDs in LLDB's process metadata LC_NOTE format while
retaining the special thread-info segment for compatibility. Align the
Apple Silicon compatibility region with the established special metadata
address scheme.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@steveisok
steveisok self-requested a review August 6, 2026 19:38
@max-charlamb
max-charlamb marked this pull request as ready for review August 6, 2026 19:42
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

CopilotAI reviewed Aug 6, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Note

This error may be related to your runner configuration. You can now configure runners for Copilot code review separately from Copilot cloud agent by creating a copilot-code-review.yml file with your setup steps. Read the docs for details.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.

@max-charlamb
max-charlamb merged commit f659b2c into dotnet:mainAug 7, 2026
110 of 111 checks passed
@max-charlamb
max-charlamb deleted the max-charlamb/macos-arm64-special-thread-info branch August 7, 2026 16:52
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-rc1 milestone Aug 7, 2026
max-charlamb added a commit to dotnet/diagnostics that referenced this pull request Aug 10, 2026
## Summary
- read macOS arm64 createdump thread metadata from the new 47-bit-valid
address
- fall back to the legacy address for compatibility with existing
createdump output
- use the selected address for all subsequent thread-info entries
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and assigns sequential thread IDs beginning at zero. SOS cannot
then correlate LLDB threads with runtime OS thread IDs or retrieve the
selected thread context.
Coordinated writer change: dotnet/runtime#131962
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet/runtime#130443
- diagnostics readers: #5823
## Testing
Draft pending coordinated macOS arm64 validation with the runtime writer
change.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Aug 11, 2026
## Summary
- write the macOS arm64 createdump thread-info region at a 47-bit-valid
address
- emit OS thread IDs using LLDB's `process metadata` `LC_NOTE` format
- this is for future support so we can eventually remove the
`SpecialThreadInfo`
- retain the existing special thread-info segment while consumers
migrate to the LLDB format
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and falls back to sequential thread IDs beginning at zero. SOS
then cannot correlate LLDB threads with runtime OS thread IDs or
retrieve the selected thread context.
Coordinated SOS reader change:
dotnet/diagnostics#5953
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet#130443
- diagnostics readers: dotnet/diagnostics#5823
## Testing
Draft pending coordinated diagnostics validation on macOS arm64.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@max-charlamb@steveisok@noahfalk
, '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

createdump: fix macOS arm64 thread IDs in LLDB - #131962

Merged
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info
Aug 7, 2026
Merged

createdump: fix macOS arm64 thread IDs in LLDB#131962
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

  • write the macOS arm64 createdump thread-info region at a 47-bit-valid address
  • emit OS thread IDs using LLDB's process metadataLC_NOTE format
    • this is for future support so we can eventually remove the SpecialThreadInfo
  • retain the existing special thread-info segment while consumers migrate to the LLDB format

Motivation

Apple Silicon LLDB rejects the legacy 0x7fffffff00000000 synthetic segment and falls back to sequential thread IDs beginning at zero. SOS then cannot correlate LLDB threads with runtime OS thread IDs or retrieve the selected thread context.

Coordinated SOS reader change: dotnet/diagnostics#5953

Related precedent

This follows @steveisok's coordinated Apple Silicon fix for SpecialDiagInfoAddress:

Testing

Draft pending coordinated diagnostics validation on macOS arm64.

max-charlamband others added 2 commits August 6, 2026 14:39
Apple Silicon rejects Mach-O core segments above its 47-bit user-space
address limit. Write the createdump thread ID mapping at a valid address
so LLDB can expose real OS thread IDs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Write OS thread IDs in LLDB's process metadata LC_NOTE format while
retaining the special thread-info segment for compatibility. Align the
Apple Silicon compatibility region with the established special metadata
address scheme.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@steveisok
steveisok self-requested a review August 6, 2026 19:38
@max-charlamb
max-charlamb marked this pull request as ready for review August 6, 2026 19:42
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

CopilotAI reviewed Aug 6, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Note

This error may be related to your runner configuration. You can now configure runners for Copilot code review separately from Copilot cloud agent by creating a copilot-code-review.yml file with your setup steps. Read the docs for details.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.

@max-charlamb
max-charlamb merged commit f659b2c into dotnet:mainAug 7, 2026
110 of 111 checks passed
@max-charlamb
max-charlamb deleted the max-charlamb/macos-arm64-special-thread-info branch August 7, 2026 16:52
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-rc1 milestone Aug 7, 2026
max-charlamb added a commit to dotnet/diagnostics that referenced this pull request Aug 10, 2026
## Summary
- read macOS arm64 createdump thread metadata from the new 47-bit-valid
address
- fall back to the legacy address for compatibility with existing
createdump output
- use the selected address for all subsequent thread-info entries
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and assigns sequential thread IDs beginning at zero. SOS cannot
then correlate LLDB threads with runtime OS thread IDs or retrieve the
selected thread context.
Coordinated writer change: dotnet/runtime#131962
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet/runtime#130443
- diagnostics readers: #5823
## Testing
Draft pending coordinated macOS arm64 validation with the runtime writer
change.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Aug 11, 2026
## Summary
- write the macOS arm64 createdump thread-info region at a 47-bit-valid
address
- emit OS thread IDs using LLDB's `process metadata` `LC_NOTE` format
- this is for future support so we can eventually remove the
`SpecialThreadInfo`
- retain the existing special thread-info segment while consumers
migrate to the LLDB format
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and falls back to sequential thread IDs beginning at zero. SOS
then cannot correlate LLDB threads with runtime OS thread IDs or
retrieve the selected thread context.
Coordinated SOS reader change:
dotnet/diagnostics#5953
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet#130443
- diagnostics readers: dotnet/diagnostics#5823
## Testing
Draft pending coordinated diagnostics validation on macOS arm64.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@max-charlamb@steveisok@noahfalk
, '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

createdump: fix macOS arm64 thread IDs in LLDB - #131962

Merged
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info
Aug 7, 2026
Merged

createdump: fix macOS arm64 thread IDs in LLDB#131962
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

  • write the macOS arm64 createdump thread-info region at a 47-bit-valid address
  • emit OS thread IDs using LLDB's process metadataLC_NOTE format
    • this is for future support so we can eventually remove the SpecialThreadInfo
  • retain the existing special thread-info segment while consumers migrate to the LLDB format

Motivation

Apple Silicon LLDB rejects the legacy 0x7fffffff00000000 synthetic segment and falls back to sequential thread IDs beginning at zero. SOS then cannot correlate LLDB threads with runtime OS thread IDs or retrieve the selected thread context.

Coordinated SOS reader change: dotnet/diagnostics#5953

Related precedent

This follows @steveisok's coordinated Apple Silicon fix for SpecialDiagInfoAddress:

Testing

Draft pending coordinated diagnostics validation on macOS arm64.

max-charlamband others added 2 commits August 6, 2026 14:39
Apple Silicon rejects Mach-O core segments above its 47-bit user-space
address limit. Write the createdump thread ID mapping at a valid address
so LLDB can expose real OS thread IDs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Write OS thread IDs in LLDB's process metadata LC_NOTE format while
retaining the special thread-info segment for compatibility. Align the
Apple Silicon compatibility region with the established special metadata
address scheme.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@steveisok
steveisok self-requested a review August 6, 2026 19:38
@max-charlamb
max-charlamb marked this pull request as ready for review August 6, 2026 19:42
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

CopilotAI reviewed Aug 6, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Note

This error may be related to your runner configuration. You can now configure runners for Copilot code review separately from Copilot cloud agent by creating a copilot-code-review.yml file with your setup steps. Read the docs for details.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.

@max-charlamb
max-charlamb merged commit f659b2c into dotnet:mainAug 7, 2026
110 of 111 checks passed
@max-charlamb
max-charlamb deleted the max-charlamb/macos-arm64-special-thread-info branch August 7, 2026 16:52
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-rc1 milestone Aug 7, 2026
max-charlamb added a commit to dotnet/diagnostics that referenced this pull request Aug 10, 2026
## Summary
- read macOS arm64 createdump thread metadata from the new 47-bit-valid
address
- fall back to the legacy address for compatibility with existing
createdump output
- use the selected address for all subsequent thread-info entries
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and assigns sequential thread IDs beginning at zero. SOS cannot
then correlate LLDB threads with runtime OS thread IDs or retrieve the
selected thread context.
Coordinated writer change: dotnet/runtime#131962
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet/runtime#130443
- diagnostics readers: #5823
## Testing
Draft pending coordinated macOS arm64 validation with the runtime writer
change.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Aug 11, 2026
## Summary
- write the macOS arm64 createdump thread-info region at a 47-bit-valid
address
- emit OS thread IDs using LLDB's `process metadata` `LC_NOTE` format
- this is for future support so we can eventually remove the
`SpecialThreadInfo`
- retain the existing special thread-info segment while consumers
migrate to the LLDB format
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and falls back to sequential thread IDs beginning at zero. SOS
then cannot correlate LLDB threads with runtime OS thread IDs or
retrieve the selected thread context.
Coordinated SOS reader change:
dotnet/diagnostics#5953
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet#130443
- diagnostics readers: dotnet/diagnostics#5823
## Testing
Draft pending coordinated diagnostics validation on macOS arm64.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@max-charlamb@steveisok@noahfalk
, '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

createdump: fix macOS arm64 thread IDs in LLDB - #131962

Merged
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info
Aug 7, 2026
Merged

createdump: fix macOS arm64 thread IDs in LLDB#131962
max-charlamb merged 2 commits into
dotnet:mainfrom
max-charlamb:max-charlamb/macos-arm64-special-thread-info

Conversation

@max-charlamb

@max-charlambmax-charlamb commented Aug 6, 2026

Copy link
Copy Markdown
Member

Summary

  • write the macOS arm64 createdump thread-info region at a 47-bit-valid address
  • emit OS thread IDs using LLDB's process metadataLC_NOTE format
    • this is for future support so we can eventually remove the SpecialThreadInfo
  • retain the existing special thread-info segment while consumers migrate to the LLDB format

Motivation

Apple Silicon LLDB rejects the legacy 0x7fffffff00000000 synthetic segment and falls back to sequential thread IDs beginning at zero. SOS then cannot correlate LLDB threads with runtime OS thread IDs or retrieve the selected thread context.

Coordinated SOS reader change: dotnet/diagnostics#5953

Related precedent

This follows @steveisok's coordinated Apple Silicon fix for SpecialDiagInfoAddress:

Testing

Draft pending coordinated diagnostics validation on macOS arm64.

max-charlamband others added 2 commits August 6, 2026 14:39
Apple Silicon rejects Mach-O core segments above its 47-bit user-space
address limit. Write the createdump thread ID mapping at a valid address
so LLDB can expose real OS thread IDs.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Write OS thread IDs in LLDB's process metadata LC_NOTE format while
retaining the special thread-info segment for compatibility. Align the
Apple Silicon compatibility region with the established special metadata
address scheme.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@steveisok
steveisok self-requested a review August 6, 2026 19:38
@max-charlamb
max-charlamb marked this pull request as ready for review August 6, 2026 19:42
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

CopilotAI reviewed Aug 6, 2026

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Note

This error may be related to your runner configuration. You can now configure runners for Copilot code review separately from Copilot cloud agent by creating a copilot-code-review.yml file with your setup steps. Read the docs for details.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @steveisok, @tommcdon, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.

@max-charlamb
max-charlamb merged commit f659b2c into dotnet:mainAug 7, 2026
110 of 111 checks passed
@max-charlamb
max-charlamb deleted the max-charlamb/macos-arm64-special-thread-info branch August 7, 2026 16:52
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-rc1 milestone Aug 7, 2026
max-charlamb added a commit to dotnet/diagnostics that referenced this pull request Aug 10, 2026
## Summary
- read macOS arm64 createdump thread metadata from the new 47-bit-valid
address
- fall back to the legacy address for compatibility with existing
createdump output
- use the selected address for all subsequent thread-info entries
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and assigns sequential thread IDs beginning at zero. SOS cannot
then correlate LLDB threads with runtime OS thread IDs or retrieve the
selected thread context.
Coordinated writer change: dotnet/runtime#131962
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet/runtime#130443
- diagnostics readers: #5823
## Testing
Draft pending coordinated macOS arm64 validation with the runtime writer
change.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
jtschuster pushed a commit to jtschuster/runtime that referenced this pull request Aug 11, 2026
## Summary
- write the macOS arm64 createdump thread-info region at a 47-bit-valid
address
- emit OS thread IDs using LLDB's `process metadata` `LC_NOTE` format
- this is for future support so we can eventually remove the
`SpecialThreadInfo`
- retain the existing special thread-info segment while consumers
migrate to the LLDB format
## Motivation
Apple Silicon LLDB rejects the legacy `0x7fffffff00000000` synthetic
segment and falls back to sequential thread IDs beginning at zero. SOS
then cannot correlate LLDB threads with runtime OS thread IDs or
retrieve the selected thread context.
Coordinated SOS reader change:
dotnet/diagnostics#5953
## Related precedent
This follows @steveisok's coordinated Apple Silicon fix for
`SpecialDiagInfoAddress`:
- runtime writer: dotnet#130443
- diagnostics readers: dotnet/diagnostics#5823
## Testing
Draft pending coordinated diagnostics validation on macOS arm64.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 7805386d-16fd-4306-bcc9-54d4ea7b65cf
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@max-charlamb@steveisok@noahfalk