Skip to content

[Sentry: APP-2SC] iOS EXC_BAD_ACCESS in WebKit WebBackForwardList IPC decoding #100269

Description

@mountiny

If you haven’t already, check out our contributing guidelines for onboarding. To join our Slack channel, fill out this form.


SENTRY EVENT

Version Number: 9.4.67 / 9.4.68 / 9.4.69
Reproducible in staging?: Needs to be confirmed
Reproducible in production?: Yes — crash is live in production
If this was caught during regression testing, add the test name, ID and link from BrowserStack: N/A — found via Sentry production crash scan
Email or phone of affected tester (no customers): N/A
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause / Sentry production crash scan
Slack conversation (hyperlinked to channel name): N/A

Action Performed:

  1. Open the Expensify app on iOS (HybridApp build).
  2. Use the app until a screen backed by a WKWebView loads, then navigate back and forward between web-backed screens.
  3. Keep the session going for a few minutes.

Expected Result:

Navigation works and the app stays up.

Actual Result:

The app crashes on the main thread with EXC_BAD_ACCESS / KERN_INVALID_ADDRESS at 0x100000001.

The crashing thread is inside WebKit IPC: WebKit::WebProcessProxy::didReceiveMessageWebKit::WebBackForwardList::didReceiveMessageIPC::Decoder::decodeWTF::AtomStringImpl::addSlowCase / WTF::StringImpl::hashSlowCase. The web process sends a back/forward list update and decoding it dereferences a bad string pointer.

Workaround:

Unknown. The app must be relaunched.

Platforms:

Select the officially supported platforms where the issue was reproduced:

  • Android: App
  • Android: mWeb Chrome
  • iOS: App
  • iOS: mWeb Safari
  • iOS: mWeb Chrome
  • Windows: Chrome
  • MacOS: Chrome / Safari

Screenshots/Videos

Sentry details

Sentry issue: https://expensify.sentry.io/issues/APP-2SC

Impact (snapshot at filing, 2026-09-03):

  • Users (total since first seen): 44
  • Events (total): 176
  • Users in scanned releases (9.4.67–9.4.69): 1
  • First seen: 2025-12-11
  • Last seen: ongoing
  • Platform: iOS native (HybridApp, com.expensify.expensifylite), iOS 26.x
  • Mechanism: mach, level fatal
  • Seer actionability: medium

Stack trace (crashing thread, top frames):

main
UIApplicationMain
-[UIApplication _run]
__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__
IPC::Connection::dispatchIncomingMessages
IPC::Connection::dispatchMessage
WebKit::WebProcessProxy::didReceiveMessage
WebKit::WebBackForwardList::didReceiveMessage
IPC::Decoder::decode<T>
WTF::AtomStringImpl::addSlowCase
WTF::StringImpl::hashSlowCase

Suspected cause: the crash is in WebKit's back/forward list IPC decoding, with no Expensify frames on the crashing thread. Likely a WKWebView that is used or released across threads, or a web view kept alive past its owning controller. Symbolicated Expensify frames are missing, so the first step is finding which web-backed screen is on top when it fires.

View all open jobs on GitHub

Issue OwnerCurrent Issue Owner: @jmusial

Activity

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

Metadata

Metadata

Labels

BugSomething is broken. Auto assigns a BugZero manager.DailyKSv2ExternalAdded to denote the issue can be worked on by a contributor

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions