アメリカ?で10月2日に15.4のアップデートが配布されました.
そこで配信された Mono 5.4.0.201 が今回対象としている日本語入力問題を解消したパッチを含んでいるため,以下のような問題はAlpha, Beta チャンネルで発生しなくなりました.
こんな問題が過去にあったんだよ,ってことで記事は残しておきます.
こんな限定的なことをQiitaに載せるなよという感じではありますが,他に困った人がいたとのことで.
結論
一番簡単な方法
StableのMonoを使用する(5.2系)
http://www.mono-project.com/download/#download-mac
対症療法的な
Monoのバージョンを一緒に上げない
or
8月17日より前のバージョンのMonoを使う(5.4系や5.7系の場合)
or
(追記)JapaneseIMやGoogle日本語入力などのサードパーティーのIMEを使わない(Google日本語入力では,日本語入力部ではなく”英語”のみがクラッシュする)
or
Stableチャンネルで運用する()
or
(追記)Weekly Updatesの5.7.0.378移行を使用する
現実的じゃない方法
(非推奨と言うかVS4Mのアップデートにより使用できなくなったため削除)
膨大なマシンリソースが必要になるので面倒ですが,
https://gist.github.com/yamachu/f7476e853b83096cffe47ac252ec50d4
に記載されている方法でビルドしてみて,そのビルド結果からlibgdk-quartz-2.0.0.dylibを抽出し,問題となっているMono5.4.xのインストールされている
/Library/Frameworks/Mono.framework/Versions/5.4.0/lib/
にコピーする.
詳細
現在Visual Studio for MacをAlpha, Beta Channelで運用していると,アップデートすると,
* Visual Studio for Mac 7.2 build 617(以下VS4M)
Alpha, Beta だと
* Mono 5.4.0.199
が落ちてきます.
ここでVS4Mをアップデートするのは良いのですが,Monoも同時にアップデートしてしまうと,日本語入力などを使用する特定環境下でVS4Mが起動できなくなります.
すでに報告済みなので詳細を知りたい方はこちらをどうぞ.
Monoのバージョンを上げなくてもVS4Mは動作するので現時点では無理して上げる必要はなさそうです.
起動できるMonoのバージョンの判定方法としては,
$ mono -V
として,出力が
Mono JIT compiler version 5.7.0.100 (master/83020f1270e Tue Aug 15 16:40:04 EDT 2017)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: normal
SIGSEGV: altstack
Notification: kqueue
Architecture: amd64
Disabled: none
Misc: softdebug
LLVM: yes(3.6.0svn-mono-master/8b1520c8aae)
GC: sgen (concurrent by default)
こんな感じになるのですが,このバージョンの横の日付が8月17日より前であれば動作します.
もともとはこの問題を解決するためのパッチだったみたいなのですが,日本語環境では悪さをしてしまったようです
追記
更に検証を進めてみたら,JapaneseIM(ことえり)やGoogle日本語入力を使わなければ使用できるということがわかりました.
日本語のコメントアウトができなくなりますね...一瞬でもIMEが変わると問答無用でVS4Mが落ちます.
状況が結構ややこしいのですが,Google日本語入力は問答無用でダメで,ことえりに変える前に使っていたIMEがGoogle日本語入力じゃない場合は大丈夫でした.
お気持ち
PR出したんですけどCloseされてしまって上記の他の言語圏の人のためにやったパッチを取り消す形で進んでしまっていてなんとも悲しいお気持ちになりました.
前向きに検討されている感じがあるようです
https://github.com/mono/bockbuild/pull/49
=> マージされたので,多分次か次のAlpha版のMonoからは問題なく動作しそうなMonoが配布されそうです.