絖綛 N@i.jp  昨日:00039277
 今日:00000228
 総計:00153613
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:04/16 19:55


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

macOS Sonoma で JeditΩが異常終了(SIGTRAP)

macOS 14(Sonoma)の新機能「入力モードインジケータ」か「スプリットビュー」に不具合がある様子


 macOS 14 Sonoma にアップグレードしてから、愛用しているテキストエディタ JeditΩ が頻繁に異常終了するようになってしまった。しかも再現率は非常に高く、以下のように操作すると、ほぼ100%異常終了なりハングなりの動作異常が発生する。

  1. 新規ファイルを作成
    「ファイル」メニュー → 「新規ウインドウ」を開く(基本、プレーンテキストなど何でもよい)
  2. 文字を入力
    1行目に。例えば abcdefghijklmnopqrstuvwxyz と入力する。その後、入力した文字列の途中(l の後ろ辺り)にカーソルを移動させる。
  3. 全角文字を入力
    全角ひらがなモードにして文字を入力していく。漢字にして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 の「入力モードインジケータ」機能をオフにする方法を探してみたところ、以下のいずれかの方法でオフにすることができることが分かった。

  1. ターミナルを起動して、以下のコマンドを入力して再起動
    sudo defaults write /Library/Preferences/FeatureFlags/Domain/UIKit.plist redesigned_text_cursor -dict-add Enabled -bool NO
  2. OnyXを使って"Show the caps lock indicator"をオフにして再起動

上記のいずれかの方法で「入力モードインジケータ」機能をオフに設定したところ、JeditΩの異常終了(SIGTRAP)、ハングなどの異常動作はピタリと治まった。これは macOS Sonoma で追加された「入力モードインジケータ」機能に何らかの不具合(バグ)があると考えるのが妥当ではないか思う。
 同じ現象でストレスが溜まっている方々の参考になれば幸いである。


追記:
 アートマン21様のホームページでもmacOS 14 sonomaでの不具合についてが公開された。macOS Sonoma 14.5 Betaでも不具合が解消されていないとのことだ。


< 過去の記事 [ 4月の 全てのカテゴリ リスト ] 新しい記事 >

2024 calendar
4月
123456
78910111213
14151617181920
21222324252627
282930


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.