Mona ToDo
基準
- 落ちるのが良くない
- 遅いのは今はがまん
ToDo
GNOTE.EX5 が落ちる
textarea で Enter すると 100 % 落ちる。再現用に http://www.monaos.org/links.html に textarea を置いて実験。
syscall_stack_trace_enable を map ファイルのパスを指定して呼び、シンボル付きのスタックトレースを有効に。
しかし unknown ばかり。確かに map ファイルを見ると exact match していない。ふむ。eipの分だけずれたのかな。あとで A 氏に聞く。
name=GNOTE.EX5 tid =92 eax=1b8 ebx=c0069300 ecx=1b8 edx=3f93c08 esp=effff868 ebp=effff888 esi=c0069530 edi=c0069300 cs =2b ds =33 ss =3b cr3=348000 eflags=282 eip=a000435f nullpo! stack trace: (unknown) a000435f (unknown) a0004e4b (unknown) a000cf69 (unknown) a000d775 (unknown) a000e525 (unknown) a0011893 (unknown) a0003565 (unknown) a0006faf (unknown) a002cbaf (unknown) a000104a (unknown) a0046831 PROVIDE (etext, .): 0x8 /home/taro/mona/lib/libmonapi-imp.a(d000377.o) (4c3161cc)
map ファイルからすると DrawCaretLine が怪しい。
logprintf してみると cursol 変数がコンストラクタで 0 に指定されてから setCursor される間に変な値に書き換わってしまうようだ。
GDB の watch point はまだ使えないので手動でしぼっていこう。範囲は狭いし。
値が書き換わってしまうポイントを見つけたが、値が変わるはずのないところで変わってる。GNOTE はマルチスレッドだっけか。