Mona ToDo

基準

  • 落ちるのが良くない
  • 遅いのは今はがまん

ToDo

  • [done] 初期表示用にサーバーサイドにリンク集を置く。
  • [done]GNOTE のスタックトレースがうまく表示されるように MAP ファイルを同梱する。
  • GNOTE のスタックトレース見てバグ取り。
  • 日記投稿
  • TSOCK のハングアップ原因を調べる
  • TSOCK のバグが治ったらログを修正する
  • autopilot で QEMU が落ちなくなるのを確認

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 される間に変な値に書き換わってしまうようだ。
GDBwatch point はまだ使えないので手動でしぼっていこう。範囲は狭いし。


値が書き換わってしまうポイントを見つけたが、値が変わるはずのないところで変わってる。GNOTE はマルチスレッドだっけか。