Swiftのエラーで困った時に見るものとして記録していきましょう
はじめに
さてこのログが出てるなと感じた時に確認しておく
結論から言うと、
そのログ単体は 致命的エラーではなく「無視してOKなことが多い」系のログ
(GPU プロセス・拡張プロセスを OS が勝手に終了させようとしてるだけ)
というケースがほとんどです。
ただ、クラッシュや挙動不良とセットで出ている場合は、ちょっとだけ対処を考えましょう
GPUProcessProxy::gpuProcessExited: reason=IdleExitが出るけどアプリは動くときに読む
ログが出た経緯
Xcode のコンソールに謎の GPUProcessProxyが出てきた
さてこんなログの場合は、
ログ全文
このログが何を言っているか
貼ってくれたログを分解すると:
// Error.log
0xXXXXXXXXX - GPUProcessProxy::gpuProcessExited: reason=IdleExit
0xYYYYYYYYYY - [PID=AAAA] WebProcessProxy::gpuProcessExited: reason=IdleExit
Failed to terminate process: Error Domain=com.apple.extensionKit.errorDomain Code=18 "(null)" UserInfo={NSUnderlyingError=0xZZZZZZZZZZ {Error Domain=RBSRequestErrorDomain Code=3 "No such process found" UserInfo={NSLocalizedFailureReason=No such process found}}}
ログの意味をざっくり分解
- GPUProcessProxy / WebProcessProxy / IdleExit の説明
- ExtensionKit / RBS の "No such process found"
このエラーメッセージは、主にmacOS/iOSのWebコンテンツ処理に関連するもので、特にWebプロセスとGPUプロセスがアイドル状態で終了したことを示しています。
1. GPUProcessProxy::gpuProcessExited: reason=IdleExit
- WebKit / Safari 系の GPU プロセスが「アイドルだったので終了した」 というログです。
- macOS / iOS では、WebView や Safari 関連の GPU 用サブプロセスを
使っていないときに OS が勝手に落としてリソース解放することがあります。 -
IdleExitと書いてあるので、「クラッシュ」ではなく「正常終了に近い挙動」。
2. Failed to terminate process ... No such process found
- ExtensionKit / RBS(リソース管理まわり)が
「プロセス終わらせようとしたけど、すでに存在してなかった」と怒っているだけ。 - OS視点では「Killしようとしたけど、もう死んでたわ〜」という軽い警告ログです。
これは通常、ウェブブラウザ(Safariなど)やWebビューを使用するアプリケーションで、一定時間アイドル状態が続いた後にリソースを解放するためにプロセスが自動的に終了したことを示しており、多くの場合、ユーザー側で特に問題となる動作ではありません。
しかし、その後に続く
{
Failed to terminate process: Error Domain = com.apple.extensionKit.errorDomain
Code = 18
"(null)"
UserInfo = {
NSUnderlyingError = 0xZZZZZZZZZZ
{
Error Domain = RBSRequestErrorDomain
Code = 3
"No such process found"
UserInfo = {
NSLocalizedFailureReason = No such process found
}
}
}
}
というエラーは、システムが終了しようとしたプロセスをすでに見つけられなかった(No such process found) ということを示しており、プロセスの終了処理の連携がうまくいかなかったことを示唆しています。
原因
- OS がアイドル状態のGPUプロセスを自動終了しているだけ
- Killしようとした時点では既に死んでいるので「No such process found」と出る
考えられるケース
- WKWebView / SFSafariViewController 使用中
- Simulatorでのみ多発する など
じゃあどうすればいい?
✅ ケース1:アプリ自体は普通に動いている
- 画面も動くし、クラッシュもしない
- ただコンソールにこのログが出てくるだけ
この場合は 基本的に「無視でOK」 です。
特に、
-
WKWebViewを使っている - SFSafariViewController / ASWebAuthenticationSession を使っている
- Xcode のコンソールを眺めていたらいつの間にか出ていた
みたいなときは、OS内部のリソース管理のログなので
「自分のアプリのバグではない」ことがほとんどです。
✅ ケース2:一緒に症状が出ている場合
例えば:
- 画面が真っ白になる
- WKWebView が描画されない
- 特定処理のたびにアプリが落ちる
みたいな 実害がある ときは、下記を試す価値があります。
1. OS / Xcode / Simulator のアップデート
-
macOS / iOS / Xcode / Simulator の組み合わせ次第で
WebKit 系のログがうるさいバージョンがあります。 -
まずは
- Xcode 最新版
- Simulator 再インストール
- Mac再起動
-
を試してみる。
2. WKWebView / SFSafariViewController の使い方を見直す
たとえば:
-
WKWebViewをビュー階層から頻繁に add/remove していないか -
WKWebViewやSFSafariViewControllerがすぐ解放されるようなライフサイクルになっていないか - 強参照が足りず、
webViewがすぐdeinitしてしまっていないか
を確認すると、
「GPUプロセスが頻繁に起動→すぐアイドル→終了→ログ連発」を多少減らせる場合があります。
3. 実機とシミュレータで挙動を比較
-
Simulator は特に WebKit / GPU 周りのログが多いです。
-
実機(iPhone / iPad)で同じ処理をしたときに
- 挙動が正常
- ログも出ない or かなり少ない
なら Simulator 特有のノイズログ である可能性が高いです。
実害がないときの扱い
- 原則「無視してよいログ」
- ログにびっくりしないためのメモ
実害があるときのチェックポイント
- OS / Xcode のアップデート
- WebView のライフサイクル確認
- 実機とシミュレータの比較
もし、
- そのログが出たときに「アプリ側でどういう処理をしていたか」
- WKWebView を使っているのか、SFSafariViewControllerなのか
- シミュレータか実機か
このエラーはmacOSでWebブラウザ(おそらくSafariやChromium系)やWebKitを使用するアプリケーションで発生しているGPUプロセスとWebプロセスの終了に関するものです。以下の対処法を試してみてください。
基本的な対処法
1. アプリケーションの再起動
まず、エラーが出ているアプリケーションを完全に終了して再起動してください。
2. Macの再起動
システムプロセスの状態がリセットされ、問題が解決することがあります。
3. キャッシュのクリア
Safariの場合:環境設定 → 詳細 → 「メニューバーに"開発"メニューを表示」をオン
開発メニューから「キャッシュを空にする」
Chromeの場合:設定 → プライバシーとセキュリティ → 閲覧履歴データの削除
詳細な対処法
4. ハードウェアアクセラレーションの無効化
GPUプロセスの問題なので、一時的にハードウェアアクセラレーションを無効にしてみる:
Chromeの場合:設定 → システム → 「ハードウェアアクセラレーションが使用可能な場合は使用する」をオフ
5. macOSとアプリの更新確認
システム設定 → 一般 → ソフトウェアアップデート
App Storeから該当アプリの更新を確認
6. 拡張機能の無効化
ブラウザの拡張機能が原因の可能性もあるため、すべての拡張機能を一時的に無効にして確認してください。
開発者向けの対処
もし開発中のアプリケーションでこのエラーが出ている場合:
- プロセス管理のコードを見直す
- GPUプロセスのライフサイクル管理を確認
- Xcodeでクリーンビルドを実行
このエラー自体は通常、アプリの動作に致命的な影響はありませんが、頻繁に出る場合は上記の対処を試してみてください。特定のアプリで発生している場合は、そのアプリ名を教えていただければ、より具体的なアドバイスができます。
まとめ
「致命的エラーではなく、内部でのプロセス終了のログに過ぎないことが多い」
管理記事