Skip to content

[Bug]: Shop Ring signup authorize fails with SDK state lock poisoned after wipe #1398

Description

@piotr-iohk

What happened?

Fresh Bitkit wallet (no Pubky profile). On production Shop Create account (phone verified), Shop showed the dual QR page (Pubky Ring + Bitkit). Scanned the Pubky Ring signup QR with Bitkit. Bitkit opened Authorize (“Create a new Pubky identity on this homeserver…”) with caps for /pub/pubky.app, /pub/paykit, /priv/pubky.app.

Pubky identity appeared to be created / republished, but tapping Authorize failed with Authorization Failed / Nieznany błąd (Unknown error). Retry failed the same way.

Bitkit log (UTC):

19:30:57  WipeWalletUseCase / Deleted PAYKIT_SDK_STATE
19:31:25  Failed to save to PAYKIT_SDK_STATE keychain (cause='NullPointerException')
19:31:25  SDK state transaction lock poisoned
19:32:48  Republished Pubky identity
19:32:49  Auth approval failed [AppError='code=storage_error, context=SDK state transaction lock poisoned']
19:32:59  Auth approval failed (retry) [same]

Expected behavior

Shop signup scanned in Bitkit completes Authorize successfully (or shows a clear, actionable error — not “Unknown error”), and Paykit SDK state survives wipe → new wallet → signup without a poisoned lock.

Steps to Reproduce

  1. Wipe / create a fresh Bitkit mainnet wallet with no Pubky profile.
  2. On shop.pubky.app: Create account → phone verification → Scan QR Code page.
  3. In Bitkit, scan the Pubky Ring signup QR (left column).
  4. On Authorize, tap Authorize.
  5. See Authorization Failed / Unknown error; retries fail.

Logs / Screenshots / Recordings

Screenshots
Shop dual QR Bitkit Authorization Failed
Shop dual QR create-account page Bitkit Authorization Failed Unknown error

2026-09-30-shop-ring-signup-auth-poisoned-logs.zip

Bitkit Version

2.5.0 (190), master dbbf90f02 mainnet debug (to.bitkit)

Device / OS

Samsung Galaxy S22 (SM-S901B / R5CTA150NAH), Android 16

Reproducibility

Rarely (once or twice) — reproduced once on a fresh wipe → Shop Ring-QR signup path; not re-run yet.

Additional context

  • Production Shop / mainnet. Homeserver on Authorize screen: 8um71us3fyw6h8wbcxb5ar3rwusy1a6u49956ikzojg3gcwd1dty.
  • Shop copy says Ring = create new pubky, Bitkit column = use existing Bitkit pubky; Bitkit still accepts the Ring signup QR without a prior profile.
  • Same Shop signup entry as marketplace #49 (Create account → scan signup / Ring QR with Bitkit). That issue’s remaining marketplace side is buyer step-up after a successful Bitkit signup; this report is Bitkit failing authorize on that create path (SDK state transaction lock poisoned after wipe). #48 is seller Connect Bitkit grant/scheme.
  • Closed #1297 is a different Ring import path after enabling Paykit.
  • Related open: #1093 (Paykit session recovery) — may overlap storage hardening, but this is specifically wipe → signup authorize.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions