Tíquete #40984

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

: 2020-11-20 15:54 Última Atualização: 2021-05-05 20:18

Relator:
Dono:
Estado:
Fechado
Marcos:
(Nenhum)
Prioridade:
5 - Medium
Gravidade:
5 - Medium
Resolução:
Won't Fix
Arquivo:
2

Details

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時点では信頼出来ないため、サポートを考慮いただければ大変ありがたいです。

Ticket History (3/13 Histories)

2020-11-20 15:54 Updated by: tsas
  • New Ticket "macOS High Sierra/Mojave環境で起動出来ない(1.3.1)" created
2020-11-20 16:01 Updated by: tsas
Comentário

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

2020-11-21 22:59 Updated by: yknk
Comentário

次の環境で 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 Updated by: yknk
  • Dono Update from (Nenhum) to yknk
  • Componente Update from (Nenhum) to MIDITrail Ver.1.3.x for macOS
2020-11-23 04:31 Updated by: tsas
Comentário

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

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 Updated by: yknk
Comentário

追加検証

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
(Edited, 2020-11-24 00:05 Updated by: yknk)
2020-11-24 00:04 Updated by: yknk
  • Resolução Update from Nenhum to Won't Fix
  • Estado Update from Aberto to Fechado
Comentário

まとめ

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固有の問題と考えられるため、対処なし。

(Edited, 2020-11-24 00:05 Updated by: yknk)
2021-05-04 12:54 Updated by: tyan0
Comentário

「完了」かつ「直さない」との結論なので今更ですが、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 Updated by: yknk
Comentário

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 Updated by: tyan0
Comentário

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

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

(Edited, 2021-05-05 11:25 Updated by: tyan0)
2021-05-05 20:18 Updated by: yknk
Comentário

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

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

Attachment File List

Editar

Please login to add comment to this ticket » Login