OSDN Ticket Archive


Ticket #40984

macOS High Sierra/Mojave環境で起動出来ない(1.3.1)

登録: 2020-11-20 15:54 最終更新: 2021-05-25 09:15

報告者:
tsas
担当者:
yknk
チケットの種類:
サポートリクエスト
状況:
完了
コンポーネント:
MIDITrail Ver.1.3.x for macOS
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
2

詳細

macOS High Sierra及びMojave環境で、ver 1.3.1が起動出来ない。

High Sierra 10.13.6 / MIDITrail 1.3.1 > EXC_CRASH (Code Signature Invalid)
Mojave 10.14.6 / MIDITrail 1.3.1 > EXC_BAD_ACCESS (SIGSEGV)

(ダンプは添付ファイルをご覧ください)


旧バージョンOSでの動作について報告するのは心苦しいのですが、Big Sur/iOS14のCoreMIDI動作が2020/11時点では信頼出来ないため、サポートを考慮いただければ大変ありがたいです。

チケットの履歴

2020-11-20 15:54 更新者: tsas
  • 新しいチケット "macOS High Sierra/Mojave環境で起動出来ない(1.3.1)" が作成されました
2020-11-20 15:55 更新者: tsas
  • 添付ファイル core-highsierra.txt (File ID: 5731) が付加されました
2020-11-20 15:56 更新者: tsas
  • 添付ファイル core-mojave.txt (File ID: 5732) が付加されました
2020-11-20 16:01 更新者: tsas
コメント

※ なお、MIDITrail 1.2.6は、High Sierra/Mojaveとも正常起動・動作します。 ( #40982 の現象が出る事は確認 )

2020-11-21 22:59 更新者: yknk
コメント

次の環境で MIDITrail 1.3.1 を起動させたところ、いずれも正常に動作しました。 OSDNからダウンロードしたMIDITrailで試しています。

  • 10.12.6 Sierra
  • 10.13.6 High Sierra
  • 10.14.6 Mojave
  • 10.15.7 Catalina

High Sierra 10.13.6 / MIDITrail 1.3.1 > EXC_CRASH (Code Signature Invalid)

コード署名無効で落ちていますが、前述の通り再現しないため、調査が難しいです。 次の二つの方法を確認していただけないでしょうか。それぞれアプリをビルドする際の署名の仕方が異なるためです。

  • (1) OSDNからダウンロードしなおしてMIDITrailを起動する。
  • (2) App StoreからダウンロードしてMIDITrailを起動する。

Mojave 10.14.6 / MIDITrail 1.3.1 > EXC_BAD_ACCESS (SIGSEGV)

OpenGLの初期化処理で、APIを呼び出した時に落ちています。 ダンプによると、VMware Fusion 12の仮想サーバ上でアプリを実行しているように見受けられます。

VMware Fusion 12の仮想サーバ(10.14.6 Mojave)で、MIDITrail 1.3.1を起動したところ、同じエラーが発生することを確認しました。

VMware Fusion固有の問題かもしれないため、仮想サーバでない環境でMIDITrail 1.3.1が起動できるか確認していただけないでしょうか。

なお、仮想サーバ上でもMIDITrail 1.2.6が起動することは確認できました。(ただし画面の描画が一部崩れていました)

MIDITrail 1.3.1の以下対策で追加した処理で落ちているため、1.2.6では落ちないようです。

  • #39721 macOS版 ディスプレイリンク対応
2020-11-21 23:00 更新者: yknk
  • コンポーネント(未割り当て) から MIDITrail Ver.1.3.x for macOS に更新されました
  • 担当者(未割り当て) から yknk に更新されました
2020-11-23 04:31 更新者: tsas
コメント

頂いた情報に基づき再度検証しました。

High Sierra 10.13.6 / MIDITrail 1.3.1 > EXC_CRASH (Code Signature Invalid)

OSDNダウンロード → 正常
AppStore → EXC_CRASH

Mojave 10.14.6 / MIDITrail 1.3.1 > EXC_BAD_ACCESS (SIGSEGV)

Fusion Player 12/12.1 vmxファイルにて
mks.enableMTLRenderer = “0"
mks.enableGLRenderer = “1”
を実施するも現象変わらず。 
外付けSSDにMojaveをインストールして起動 → 正常動作


リアルマシン&OSDNダウンロードであれば正常動作する事が確認できました。
ありがとうございます。

2020-11-23 23:59 更新者: yknk
コメント

追加検証

App StoreからダウンロードしたMIDITrail 1.3.1を起動させたところ、 High Sierraのみコード署名無効で起動できない。原因は不明。

OSDNからダウンロードしたMIDITrail 1.3.1を起動した場合

  • 10.12.6 Sierra - OK
  • 10.13.6 High Sierra - OK
  • 10.14.6 Mojave - OK
  • 10.15.7 Catalina - OK

App StoreからダウンロードしたMIDITrail 1.3.1を起動した場合

  • 10.12.6 Sierra - OK
  • 10.13.6 High Sierra - NG 起動できず(コード署名無効)
  • 10.14.6 Mojave - OK
  • 10.15.7 Catalina - OK
(編集済, 2020-11-24 00:05 更新者: yknk)
2020-11-24 00:04 更新者: yknk
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 直さない に更新されました
コメント

まとめ

High Sierra 10.13.6 / MIDITrail 1.3.1 > EXC_CRASH (Code Signature Invalid)

High Sierra固有の問題と考えられるため、対処なし。

Mojave 10.14.6 / MIDITrail 1.3.1 > EXC_BAD_ACCESS (SIGSEGV)

VMware Fusion 12固有の問題と考えられるため、対処なし。

(編集済, 2020-11-24 00:05 更新者: yknk)
2021-05-04 12:54 更新者: tyan0
コメント

「完了」かつ「直さない」との結論なので今更ですが、VirtualBoxのゲストとしてmacOSを実行している環境でも同じ問題が発生します。MIDITrail 1.3.1または1.3.2を実行するとSIGSEGVが発生して不正終了します。

原因を調査したところ、MTMainView.mm内、-prepareOpenGLでCVDisplayLinkSetCurrentCGDisplayFromOpenGLContext()を呼び出したところで、アドレス0へのアクセスが発生していることが原因でした。pixelFormatがnilになってしまっているようです。pixelFormatがnilになる原因は不明ですが、試しに以下のコードをCVDisplayLinkSetCurrentCGDisplayFromOpenGLContext()コールの直前に追加してみたところ、正常に動作するようになりました。

    if (!pixelFormat) {
        GLint numPixelFormats;
        CGLPixelFormatAttribute attr[] = {
            kCGLPFADepthSize,
            (CGLPixelFormatAttribute)32,
            (CGLPixelFormatAttribute)0
        };
        CGLChoosePixelFormat(attr, &pixelFormat, &numPixelFormats);
    }

何かの参考になればと思い、情報提供をさせていただきます。

2021-05-05 10:51 更新者: yknk
コメント

tyan0さん、情報提供ありがとうございます。

pixelFormatがnilで返されているとの情報から、ピクセルフォーマット属性を定義する処理を修正したところ、 VMware Fusion 12の仮想サーバ(10.14.6 Mojave)上でMIDITrailが動作しました。 画面も正常に描画されています。

次バージョンで修正しておきます。

MTMainView.mm 修正内容

  • initWithFrame:rendererParam でピクセルフォーマット属性を定義するとき、ハードウェアレンダリングを無条件で有効にしていたため、いったん外してみました。
  • 実際は、ハードウェアレンダリングのサポート有無を調べてから、ピクセルフォーマット属性の定義を切り替えることになります。
    変更前
    attributes[8]  = NSOpenGLPFAAccelerated;    //ハードウェアレンダリング
    attributes[9]  = NSOpenGLPFANoRecovery;     //リカバリシステム無効
    attributes[10] = 0;                         //終端
    変更後
    attributes[8]  = NSOpenGLPFANoRecovery;     //リカバリシステム無効
    attributes[9]  = 0;                         //終端
    attributes[10] = 0;                         //終端
    
2021-05-05 11:22 更新者: tyan0
コメント

早速のお返事ありがとうございます。上記変更にてVirtualBox上のmacOSでも正常動作することを確認いたしました。なお、お気づきとは思いますが、上記変更だけだと下記コードのアンチエイリアスが効かなくなってしまいますね。念のため。

	if (rendererParam.isEnableAntialiasing) {
		attributes[10] = attrbSampleMode;			//アンチエイリアシング:サンプルモード
		attributes[11] = NSOpenGLPFASampleBuffers;	//マルチサンプルバッファ
		attributes[12] = 1;							//  設定値
		attributes[13] = NSOpenGLPFASamples;		//マルチサンプルバッファごとのサンプル数
		attributes[14] = rendererParam.sampleNum;	//  設定値
		attributes[15] = 0;							//終端
	}

(編集済, 2021-05-05 11:25 更新者: tyan0)
2021-05-05 20:18 更新者: yknk
コメント

tyan0さん、動作確認ありがとうございます。

アンチエイリアスの設定についても、ご指摘ありがとうございます。修正時に考慮します。

2021-05-24 23:37 更新者: yknk
コメント

MIDITrail Ver.1.3.3 for macOS で対策しました。

  • #42369 macOS版 仮想マシン環境でMIDITrailが起動しない
2021-05-24 23:38 更新者: yknk
  • 解決法直さない から 修正済み に更新されました
2021-05-25 09:15 更新者: tyan0
コメント

VirtualBox内、Big Sur (ゲスト) にてv1.3.3が正常に動作することを確認いたしました。

対策ありがとうございました。

添付ファイルリスト