Skip to content

Verify macOS WebRTC linkage without otool names - #53

Merged
jserv merged 1 commit into
mainfrom
fix
Sep 16, 2026
Merged

jserv merged 1 commit into
mainfrom
fix

Conversation

@jserv

@jserv jserv commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

The macOS release leg failed on the first main push after #52 with "WebRTC NSString category is missing", yet the binary was fine. Under both Xcode 16.4 (ld-1167) and 26.3 (ld-1230), -Wl,-why_load reports -ObjC caused load of ...(NSString+StdString.o), and the linker merges the category into StdString with stringForAbslStringView: among its class methods. The runner's otool cannot follow a relative method list to its selector name and prints (0x1037c0848 extends past end of file) instead, so the grep never matched. A newer otool (CLT 27) decodes the same CI binary correctly. This reverts the Xcode 26.3 pin from #52, which rested on the wrong idea that 16.4 drops the category, and matches the method entry by its __objc_selrefs slot, which every otool decodes.

Verified with probe runs on a throwaway branch (since deleted): a release build under Xcode 16.4 ran the new step body and printed ok slot=1037c0848 (run 35135158056). Locally, the check passes on the CI-built binary with both the 26.3 otool text and CLT 27 otool, and fails when the method entry is removed or only the selref line is left. actionlint is clean. The release leg only runs on pushes to main, so the merge is the final confirmation.

Refs #52


Summary by cubic

Fixes the macOS release check, which rejected valid WebRTC binaries because the runner’s otool could not resolve a relative Objective-C method list. It now verifies the method through its __objc_selrefs slot and removes the unnecessary Xcode 26.3 pin from #52.

  • Keeps the release cache key aligned with the runner image instead of an Xcode version.

Written for commit 4962528. Summary will update on new commits.

Review in cubic

The category was never dropped: ld under Xcode 16.4 and 26.3 both load
NSString+StdString.o through -ObjC. The runner's otool cannot follow a
relative method list to its selector name, so the grep failed on a
correct binary. Revert the Xcode 26.3 pin built on that misreading and
match the method entry by its __objc_selrefs slot instead.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

All reported issues were addressed across 1 file

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread .github/workflows/check.yml
@jserv
jserv merged commit 59fcbef into main Sep 16, 2026
6 checks passed
@jserv
jserv deleted the fix branch September 16, 2026 19:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant