App terminated by watchdog due to hang in Game Center authentication.

Hi,

We are seeing watchdog-terminated app hangs reported by users on iOS 26. The hang occurs during cold launch when we set the Game Center authenticate handler. Our usage is straightforward — we follow the official guide: to set the handler once in the boot flow.

localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){//handler code}

The app never reaches our handler code. Instead, it is killed by the watchdog before the handler is invoked.

Root Cause: We believe the root cause is GKDaemonProxy localPlayerAgeCategory makes a synchronous XPC call ( xpc_connection_send_message_with_reply_sync ) to the Game Center daemon ( com.apple.gamed ). The daemon does not respond, blocking the main thread indefinitely until the watchdog terminates the app. Also we haven't seen this before iOS 26.

Reproduction Conditions: Unfortunately we don't have a consistent way to reproduce it. It happens intermittently. And I can't share the iOS build due to company requirements. I have pasted the stack trace below (all users report the similar stack tracks).

Stack trace (representative, reported consistently across affected users):

App Hang: The app was terminated while unresponsive
0   libsystem_kernel.dylib +0xcd0  _mach_msg2_trap
1   libsystem_kernel.dylib +0x4308 _mach_msg2_internal
2   libsystem_kernel.dylib +0x4228 _mach_msg_overwrite
3   libsystem_kernel.dylib +0x4074 _mach_msg
4   libdispatch.dylib +0x1c980     __dispatch_mach_send_and_wait_for_reply
5   libdispatch.dylib +0x1cd20     _dispatch_mach_send_with_result_and_wait_for_reply
6   libxpc.dylib +0x11ed8          _xpc_connection_send_message_with_reply_sync
7   Foundation +0x41710            ___NSXPCCONNECTION_IS_WAITING_FOR_A_SYNCHRONOUS_REPLY__
8   Foundation +0x29068            -[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:]
9   Foundation +0x69b7c            -[NSXPCConnection _sendSelector:withProxy:arg1:]
10  Foundation +0x699e8            __NSXPCDistantObjectSimpleMessageSend1
11  GameCenterFoundation +0x986fc  ___39-[GKDaemonProxy localPlayerAgeCategory]_block_invoke.109
12  GameCenterFoundation +0x1397d0 0x22cbde7d0 (0x22cbde794 + 60)
13  GameCenterFoundation +0x139610 0x22cbde610 (0x22cbde508 + 264)
14  GameCenterFoundation +0x139770 0x22cbde770 (0x22cbde6ec + 132)
15  GameCenterFoundation +0x98420  -[GKDaemonProxy localPlayerAgeCategory]
16  GameCenterFoundation +0x2ceb4  -[GKClientPreferencesSupport localPlayerAgeCategory]
17  GameCenterFoundation +0x93ba4  -[GKPreferences(AgeCategoryRestrictions) localPlayerAgeCategory]
18  GameCenterFoundation +0x93c34  -[GKPreferences(AgeCategoryRestrictions) getRestrictionLimitForLocalPlayer:]
19  GameCenterFoundation +0x93cd0  -[GKPreferences(AgeCategoryRestrictions) clampBoolRestriction:tableEntry:]
20  GameCenterFoundation +0x93d40  -[GKPreferences(AgeCategoryRestrictions) isBoolValueRestricted:tableEntry:]
21  GameCenterFoundation +0x9f7b8  -[GKPreferences(Restrictions) isBoolKeyRestricted:category:]
22  GameCenterUICore +0x2d04       -[GKLocalPlayerAuthenticator _authenticateUsingAuthUI:authenticationResults:usernameEditable:authUIDismissHandler:completionHandler:]
23  GameCenterUICore +0xd638       ___106-[GKLocalPlayer(AuthenticationPrivate) startAuthenticationForExistingPrimaryPlayerUponReturnToForeground:]_block_invoke
24  libsystem_trace.dylib +0xdb40  _os_activity_apply_f
25  GameCenterFoundation +0x181f4  -[GKActivity execute:]
26  GameCenterFoundation +0x18138  +[GKActivity named:execute:]
27  GameCenterUICore +0xd528       -[GKLocalPlayer(AuthenticationPrivate) startAuthenticationForExistingPrimaryPlayerUponReturnToForeground:]
28  libsystem_trace.dylib +0xdb40  _os_activity_apply_f
29  GameCenterFoundation +0x181f4  -[GKActivity execute:]
30  GameCenterFoundation +0x18138  +[GKActivity named:execute:]
31  GameCenterFoundation +0x4f124  ___40-[GKLocalPlayer setAuthenticateHandler:]_block_invoke
32  libdispatch.dylib +0x1b1e0     __dispatch_client_callout
33  libdispatch.dylib +0x45ac      __dispatch_once_callout
34  GameCenterFoundation +0x4f070  -[GKLocalPlayer setAuthenticateHandler:]

Additional Notes:

  • This issue was not observed prior to iOS 26. We have no reports of this on iOS 17 or iOS 18.
  • We are unable to share a build due to company policy.
  • We cannot reproduce this consistently — it occurs intermittently in production.
  • All affected users report the same stack trace pattern.
App terminated by watchdog due to hang in Game Center authentication.
 
 
Q