[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00906] アーカイブブラウザから戻る位置が時々おかしい



稲員です。

MINIX の方は個人的には不満の無い (Job Control は除く) 状態で一段落な
感じですが、テストがてら使用中に BUG らしき挙動に遭遇したので報告します。

具体的な症状;

  適当な archive (仮に foo.tar.gz) にカーソルのある状態で Enter で
  archive browser を起動し適当に閲覧後 'q' で archive browser を
  終了すると、本来ならカーソル位置が [foo.tar.gz] にある状態に戻らなけ
  ればならないが、時々戻る位置を失って [..] の位置に戻ってしまう時がある。

原因と思しきもの;

  Valgrind 様のお告げによると、下の patch の該当部分で既に free 済み
  の filelist[filepos].name を Xstrcpy() してしまっているみたい。
  どうやら filelist が古いままらしく更新忘れっぽい気がします。

とりあえず直前に getfilelist() を仕込んで症状は回避できましたが、これが
正しい処置かどうか良く分かってません。

================
=== modified file 'browse.c'
--- browse.c	2010-06-22 00:34:15 +0000
+++ browse.c	2010-07-12 20:16:50 +0000
@@ -1820,6 +1820,7 @@
 				escapearch();
 			} while (browselist);
 # endif
+			getfilelist();
 			Xstrcpy(file, filelist[filepos].name);
 		}
 		else if (no == FNC_CHDIR) {
================

よくよく思い返してみるとこの症状って FD3 系になってからずっとな気がします。

FreeBSD の CURRENT 使ってた頃 FDclone が時々 core dump してたけど
これのせいだったみたいです。
別の理由で STABLE に入れ替えてから core dump しなくなったんで CURRENT
のせいだとばかり思ってたけど、どうやら malloc の default option の違い
でたまたま core dump しなくなっただけみたいですね。
さっき試したら STABLE でも MALLOC_OPTIONS=AJ だと core dump しました。

正しい位置に戻らない症状は普段の環境だとあまり不便を感じなくて無意識にスルー
してたみたいですが、非力な sub machine のしかも仮想環境上の MINIX だと
レスポンス遅くて流石に違和感あったみたいです。

-- 
Rikito INAKAZU (稲員力士) <riki1017kazu@gmail.com>