こんにちは。

いつの頃からか、ufs_copy の終了時にコアダンプを吐く様になって
いたので調べて見ました。9.1から含まれる様になった soft
updates journaling (SUJ) の変更により問題が発生する事が判りま
した。

取り敢えず、MLに流します。portsメンテナの方に対応して頂けると
有難いです。

問題発生状況:
コピーを行う際のソース側がデバイス、デスティネーション側がイ
メージファイルである場合に発生します。

原因:
ソース側に対して ufs_disk_fillout(3) を呼び出して作成した
struct uufsd を bcopy(3) を使用してデスティネーション側の
struct uufsd として使いまわしているので、SUJの対応に伴い追加
された d_sbcsum メンバのポインタ値もコピーされてしまう。コピー
処理後、ソース側の ufs_disk_close(3) を実行した後でデスティネー
ション側の ufs_disk_close(3) を実行するので、free(3) を同じポ
インタに対して2回呼び出す事になるので、この時点でコアダンプを
生成してしまう。

対策:
添付したパッチ(diff.txt)を以下の通り当ててインストールする。

make patch
patch < diff.txt
make
make install


--- 山下英美
--- work/ufs/ufs_copy.c.orig     2014-05-14 05:51:24.000000000 +0900
+++ work/ufs/ufs_copy.c  2014-05-14 05:51:30.000000000 +0900
@@ -289,6 +289,9 @@
                }
        }
        bcopy(&src, &dst, sizeof(dst));
+#if __FreeBSD_version >= 900011
+       dst.d_sbcsum = NULL;
+#endif
        dst.d_name = dst_path;
        dst.d_fd = open(dst_path, O_CREAT | O_WRONLY,  S_IRUSR |  S_IWUSR );
        if (dst.d_fd < 0) {
_______________________________________________
freebsd-users-jp@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
To unsubscribe, send any mail to "freebsd-users-jp-unsubscr...@freebsd.org"

メールによる返信