macOS Sonoma で JeditΩが異常終了(SIGTRAP)
macOS 14(Sonoma)の新機能「入力モードインジケータ」か「スプリットビュー」に不具合がある様子
macOS 14 Sonoma にアップグレードしてから、愛用しているテキストエディタ JeditΩ が頻繁に異常終了するようになってしまった。しかも再現率は非常に高く、以下のように操作すると、ほぼ100%異常終了なりハングなりの動作異常が発生する。
- 新規ファイルを作成
「ファイル」メニュー → 「新規ウインドウ」を開く(基本、プレーンテキストなど何でもよい)
- 文字を入力
1行目に。例えば abcdefghijklmnopqrstuvwxyz と入力する。その後、入力した文字列の途中(l の後ろ辺り)にカーソルを移動させる。
- 全角文字を入力
全角ひらがなモードにして文字を入力していく。漢字にして3文字以上になるよう、ひらがな入力したら、かな漢字変換させるためスペースキーを押す。
上記のように操作すると、スペースキーを押下したその瞬間に異常終了する。異常終了しない場合でも変換候補をリターンキーで確定させる際に異常終了する。稀に、新規ウィンドウが全面グレーになってハングする(レインボーカーソルが回り続ける)等、いくつか異常な動作が発生する。
異常終了すると以下のようなシステムレポートが表示される。
Translated Report (Full Report Below)
-------------------------------------
Process: JeditOmega [7252]
Path: /Applications/エディタ/Jedit Ω.app/Contents/MacOS/JeditOmega
Identifier: jp.co.artman21.JeditOmega
Version: 3.07 (27141)
Code Type: ARM-64 (Native)
Parent Process: launchd [1]
User ID: 501
Date/Time: 2024-03-31 16:09:46.6141 +0900
OS Version: macOS 14.4.1 (23E224)
Report Version: 12
Anonymous UUID:
Time Awake Since Boot: 23000 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x00000001886fb4dc
Termination Reason: Namespace SIGNAL, Code 5 Trace/BPT trap: 5
Terminating Process: exc handler [7252]
Application Specific Backtrace 0:
0 CoreFoundation 0x0000000184c3eccc __exceptionPreprocess + 176
1 libobjc.A.dylib 0x0000000184726788 objc_exception_throw + 60
2 CoreFoundation 0x0000000184d329f0 -[__NSCFString characterAtIndex:].cold.1 + 0
3 CoreFoundation 0x0000000184d32a28 -[__NSCFString getCharacters:range:].cold.1 + 0
4 CoreFoundation 0x0000000184ba4cd0 -[__NSCFString characterAtIndex:] + 124
5 UIFoundation 0x0000000189740a28 -[NSLayoutManager(NSPrivate) _rectArrayForRange:withinSelectionRange:rangeIsCharRange:singleRectOnly:fullLineRectsOnly:inTextContainer:rectCount:rangeWithinContainer:glyphsDrawOutsideLines:rectArray:rectArrayCapacity:] + 2364
6 UIFoundation 0x000000018983efd4 -[NSLayoutManager(NSPrivate) _rectArrayForRange:withinSelectionRange:rangeIsCharRange:singleRectOnly:fullLineRectsOnly:inTextContainer:rectCount:rangeWithinContainer:glyphsDrawOutsideLines:] + 48
7 UIFoundation 0x00000001897400e0 -[NSLayoutManager rectArrayForCharacterRange:withinSelectedCharacterRange:inTextContainer:rectCount:] + 40
8 JeditOmega 0x0000000102850a9c JeditOmega + 117404
9 AppKit 0x0000000188b9a2b0 -[NSRulerView _drawContentRect:] + 244
10 AppKit 0x000000018873f5d0 -[NSRulerView drawRect:] + 160
11 JeditOmega 0x000000010285079c JeditOmega + 116636
12 AppKit 0x0000000188539464 _NSViewDrawRect + 124
13 AppKit 0x0000000188ec85ec -[NSView _recursive:displayRectIgnoringOpacity:inContext:stopAtLayerBackedViews:] + 1088
14 AppKit 0x0000000188538e68 -[NSView(NSLayerKitGlue) _drawViewBackingLayer:inContext:drawingHandler:] + 556
15 AppKit 0x0000000188a6b09c -[NSViewBackingLayer drawInContext:] + 56
16 AppKit 0x00000001887d3ad4 block_destroy_helper.34 + 19760
17 AppKit 0x00000001887f581c _swift_stdlib_malloc_size + 36640
18 AppKit 0x00000001887a4914 _swift_stdlib_malloc_size + 3512
19 AppKit 0x00000001887f5418 _swift_stdlib_malloc_size + 35612
20 AppKit 0x00000001887f32a4 _swift_stdlib_malloc_size + 27048
21 AppKit 0x00000001887d3954 block_destroy_helper.34 + 19376
22 AppKit 0x00000001887d3b34 block_destroy_helper.34 + 19856
23 AppKit 0x0000000188a6acd0 -[NSViewBackingLayer display] + 1272
24 QuartzCore 0x000000018cdd3bd4 _ZN2CA5Layer17display_if_neededEPNS_11TransactionE + 744
25 QuartzCore 0x000000018cf58464 _ZN2CA7Context18commit_transactionEPNS_11TransactionEdPd + 512
26 QuartzCore 0x000000018cdb6618 _ZN2CA11Transaction6commitEv + 648
27 AppKit 0x000000018854866c __62+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayLink]_block_invoke + 272
28 AppKit 0x0000000188f05e14 ___NSRunLoopObserverCreateWithHandler_block_invoke + 64
29 CoreFoundation 0x0000000184bc9254 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 36
30 CoreFoundation 0x0000000184bc9140 __CFRunLoopDoObservers + 536
31 CoreFoundation 0x0000000184bc876c __CFRunLoopRun + 776
32 CoreFoundation 0x0000000184bc7e0c CFRunLoopRunSpecific + 608
33 HIToolbox 0x000000018f363000 RunCurrentEventLoopInMode + 292
34 HIToolbox 0x000000018f362e3c ReceiveNextEventCommon + 648
35 HIToolbox 0x000000018f362b94 _BlockUntilNextEventMatchingListInModeWithFilter + 76
36 AppKit 0x0000000188420970 _DPSNextEvent + 660
37 AppKit 0x0000000188c12dec -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 700
38 AppKit 0x0000000188413cb8 -[NSApplication run] + 476
39 AppKit 0x00000001883eaf54 NSApplicationMain + 880
40 dyld 0x00000001847620e0 start + 2360
〜以下略〜
|
異常終了したのはメインスレッドで、SIGTRAP例外が発生していることがわかる。
SIGTRAP というのはデバッグしやすくするために、あえて例外が発生するよう仕込んであるもので、macOS の場合、以下の場合に SIGTRAPが発生するそうだ。
- 非オプショナル型(通常の変数の型)に nilが入った
- forced unwrapping(強制アンラップ)に失敗した
Swift言語は nil(空)を許さないのだが、それなのに nil が渡されてきたよ、あるいは nil が入っているオプショナル型を強制的に非オプショナル型に変換しようとしたよと言ってるらしい(ワタシは Swift言語を使ったことがないので詳しくは知らないのだけど)。これは、要するに「呼び出し側(今回の場合、JeditΩになるか)の使い方が悪い」ということなのかな?と推察したため、上記のことを JeditΩ(Artman21)のユーザーサポートに報告してみた。すると、その日のうちに返事があり(迅速な対応に感謝!)、それによると開発元では既にこの現象を把握しており、どうやら macOS Sonoma のバグっぽいとのことだった。
お問い合わせありがとうございます
macOS 14 sonomaでそのような症状が発生すること、こちらでも認識しています。
これまでにわかっていることは、sonomaでは英数キーをおすとカーソル付近に青い「A」マーク
が表示されますが、「A」マーク(入力モードインジケータ)が表示中にキー入力を行うと不具合が
生じる場合があります。「A」マーク(入力モードインジケータ)の表示が消えてからキー入力を
行ってみてください。
また、この不具合は編集ウィンドウをスプリットして後半のスプリットビューで編集すると発生し
ないことが多いです。
すでにアップルにスプリットビューシステムのバグとしてバグレポートを送付済みです。残念ながら
まだ対策ができていません。
さらになにかわかりましたらご連絡したいと思います。
ご迷惑をおかけしています。
アートマン21
ユーザーサポート係
|
とのことだった。そういえば、Sonomaにアップグレードしてからというものエディタを使用している時カーソル下に
こんなインジケータが出たり消えたりして「こいつ、ウザイな」と思っていたのだけど、この「入力モードインジケータ」機能、或いは「スプリットビューシステム」に不具合があるってことなのかな?そうであれば、こんなウザい機能なんかオフにしてしまえば良いんでないかい?
と思って、macOS Sonoma の「入力モードインジケータ」機能をオフにする方法を探してみたところ、以下のいずれかの方法でオフにすることができることが分かった。
- ターミナルを起動して、以下のコマンドを入力して再起動
sudo defaults write /Library/Preferences/FeatureFlags/Domain/UIKit.plist redesigned_text_cursor -dict-add Enabled -bool NO
|
- OnyXを使って"Show the caps lock indicator"をオフにして再起動
上記のいずれかの方法で「入力モードインジケータ」機能をオフに設定したところ、JeditΩの異常終了(SIGTRAP)、ハングなどの異常動作はピタリと治まった。これは macOS Sonoma で追加された「入力モードインジケータ」機能に何らかの不具合(バグ)があると考えるのが妥当ではないか思う。
同じ現象でストレスが溜まっている方々の参考になれば幸いである。
追記:
アートマン21様のホームページでもmacOS 14 sonomaでの不具合についてが公開された。macOS Sonoma 14.5 Betaでも不具合が解消されていないとのことだ。
|