Skip to content

Crash at launch on macOS 26 — infinite recursion in SecKeychainFindGenericPassword / HSMasterPasswordHelper #1112

@digikaizen

Description

@digikaizen

Bug Report: Crash at launch on macOS 26

Environment

  • App: SQLPro for MSSQL
  • Version: 2026.07 (115707.5)
  • macOS: macOS 26.4 (25E246)
  • Hardware: Apple Silicon (ARM-64, Mac17,8)

Description

The app crashes immediately at launch every time. It is not possible to get past the startup screen. I have already tried:

  • Clearing Keychain entries for SQLPro / hankinsoft via Keychain Access
  • Running defaults delete com.hankinsoft.osx.tinysqlstudio in Terminal

Neither resolved the issue.

Crash Summary

The crash is caused by infinite recursion (7,452 levels deep) triggered at startup when the app attempts to initialize HSMasterPasswordHelper and access the Keychain via SecKeychainFindGenericPassword. A CSSMError is thrown (via ldapdl) and caught in a loop that never terminates, eventually overflowing the stack.

Exception: EXC_BAD_ACCESS (SIGSEGV) — Thread stack size exceeded due to excessive recursion

Key stack frames:

CSSMError::ThrowCSSMError → LDAPDatabase::DbDataGetFirst → SecKeychainFindGenericPassword
→ [PDKeychainBindings objectForKey:] → [HSMasterPasswordHelper sharedInstance]
→ [SQLPro applicationDidFinishLaunching]
→ __cxa_rethrow [recursion x7452] → CRASH

The SecKeychainFindGenericPassword API (accessed via ldapdl) appears to be broken or unsupported on macOS 26, and the exception handler in the app is rethrowing the error in an infinite loop rather than gracefully handling the failure.

Steps to Reproduce

  1. Install SQLPro for MSSQL 2026.07 on macOS 26.4
  2. Launch the app
  3. App crashes immediately — no UI is shown

Expected Behavior

App should launch normally and handle a missing or inaccessible Keychain entry gracefully.

Notes

This appears to be related to the deprecation of legacy CSSM/Keychain APIs in macOS 26. The SecKeychainFindGenericPassword path through ldapdl is no longer functioning correctly. Migrating to modern Keychain APIs (SecItemCopyMatching) should resolve this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions