Skip to content

macOS Sequoia 15.5でのBus Errorクラッシュ #630

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
ku-ron opened this issue May 28, 2025 · 0 comments
Open

macOS Sequoia 15.5でのBus Errorクラッシュ #630

ku-ron opened this issue May 28, 2025 · 0 comments

Comments

@ku-ron
Copy link

ku-ron commented May 28, 2025

Sorry for writing in Japanese.
このレポートはClaudeと協力して作成しました。
著者の私が理解できていない部分があることもご了承ください。

macOS Sequoia 15.5でのBus Errorクラッシュ

概要

macOS Sequoia 15.5 (Apple Silicon) においてPyxelアプリケーションがbus errorでクラッシュします。macOS 15.3.2では同じコード・同じハードウェアで正常に動作するため、macOS 15.5固有の問題と考えられます。

問題の詳細

おそらくOSアップデート後に、Pyxelアプリケーションが起動してすぐにbus errorで落ちるようになりました。検証の結果、以下の挙動が確認されています:

プログラムの複雑さによる違い

  • 複雑なプログラム: 起動直後にクラッシュ(原因は特定できていないが、おそらく早い段階でカーソル処理が呼ばれるため)
  • 単純なテストプログラム: アプリケーションは正常に起動・描画されるが、マウスカーソルがウィンドウ内に入った瞬間にbus errorでクラッシュ

発生時期

macOS 15.4かその少し前のバージョンから問題が発生し始めた可能性があります。問題解決を期待してmacOS 15.5にアップデートしましたが、問題は継続しています。

環境

クラッシュする環境

  • OS: macOS Sequoia 15.5 (24F74)
  • ハードウェア: Apple M3チップ (MacBook Air)
  • カーネル: Darwin 24.5.0 (xnu-11417.121.6~2)
  • Python: 3.12.9
  • Pyxel: 複数バージョンで確認(1.9.16, 2.3.18)

正常動作する環境

  • OS: macOS Sequoia 15.3.2
  • ハードウェア: Apple M3チップ (MacBook Air)
  • カーネル: Darwin 24.3.0 (xnu-11215.81.4~3)
  • Python: 3.12.9
  • Pyxel: 同じバージョン

再現手順

単純なテストプログラムでの確認

  1. macOS Sequoia 15.5でPyxelをインストール
  2. 下記の最小限のテストプログラムを実行
  3. アプリケーションウィンドウが表示される(この時点では正常動作)
  4. マウスカーソルをアプリケーションウィンドウ内に移動
  5. 即座にbus errorでクラッシュ

複雑なプログラムの場合

  1. より複雑なPyxelアプリケーションを実行
  2. アプリケーション起動直後にbus errorでクラッシュ
    (おそらく初期化処理やイベントループの早い段階でカーソル関連処理が呼ばれるため)

エラーメッセージ

zsh: bus error  python3 test_pyxel.py

クラッシュ詳細

macOSクラッシュレポートより:

  • 例外タイプ: EXC_BAD_ACCESS (SIGBUS)
  • 例外コード: EXC_ARM_DA_ALIGN at 0x000000000bad4007
  • クラッシュ箇所: +[NSCursor(InvisibleCursor) invisibleCursor] in pyxel_wrapper.abi3.so
  • 関連スタック: ImageIO → NSBitmapImageRep → NSImage → NSCursor処理でのメモリアライメントエラー

テストコード

import pyxel

class App:
    def __init__(self):
        pyxel.init(160, 120, title="Test")
        pyxel.run(self.update, self.draw)
    
    def update(self):
        if pyxel.btnp(pyxel.KEY_Q):
            pyxel.quit()
    
    def draw(self):
        pyxel.cls(0)
        pyxel.text(55, 41, "Hello, Pyxel!", 7)

App()

詳細検証結果

1. 複数バージョンでの確認

  • Pyxel 1.9.16: クラッシュ
  • Pyxel 2.3.18: クラッシュ
  • 全て同じ箇所でクラッシュ

2. 依存関係の分析

両環境で otool -L pyxel_wrapper.abi3.so を実行した結果:

  • HomebrewのSDL2は参照されていない
  • システムフレームワークのみ使用
  • フレームワークバージョンは両環境で同一

3. システム比較

項目 15.3.2 (動作) 15.5 (クラッシュ)
AppKit 2487.30.104 2487.30.104
CoreFoundation 2202.0.0 2202.0.0
SDL2参照 なし なし
カーネル 24.3.0 24.5.0

他のライブラリでの検証

同様の問題を確認:

  • Pygame: 同じくbus errorで無言終了
  • SDL2ベースライブラリ全般: 影響を受けている可能性

試行した解決策(すべて効果なし)

  • 各種SDL環境変数の設定
  • Quarantine属性の削除
  • コード署名の確認
  • 複数のPyxelバージョン
  • Homebrewライブラリの再インストール
  • SIP/Gatekeeperの設定変更

推測される原因

macOS 15.5のカーネルレベル変更により、NSCursorのカーソル画像処理でメモリアライメントエラーが発生している可能性があります。特に invisibleCursor 生成時の画像データ処理で問題が生じているようです。

添付ファイル

その他

現在macOS 15.3.2のものを15.5にアップグレードすれば、さらに検証できるかとは思うのですが、予備の開発環境が失われることを恐れてそれはしていません。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant