可能是因為 ports 本身有一些檔案沒寫好導致讀到空字串吧,
gdb 進去看 pkg_delete 的 core 檔會發現死在 strcmp() 上,
不知道為什麼五六年前已經有人寫出了 patch 卻到現在還沒修正,
就算 ports 的 maintainer 有東西沒寫好,
套件管理工具本身也不應該直接 crash 掉吧?
每次砍光 ports 做全面更新的時候都會遇上個幾次。
解決的方法可以參考 mailing list 上的舊文:
http://www.mail-archive.com/freebsd-questions@freebsd.org/msg203243.html
為了方面查詢我也複製一份資料在這好了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Index: plist.c =================================================================== RCS file: /home/ncvs/src/usr.sbin/pkg_install/lib/plist.c,v retrieving revision 1.52 diff -u -r1.52 plist.c --- plist.c 28 Mar 2007 05:33:52 -0000 1.52 +++ plist.c 18 Nov 2008 12:51:02 -0000 @@ -31,6 +31,11 @@ { PackingList tmp; + if( arg == NULL || arg[0] == '\0' ) + { + warnx("Invalid packing list line ignored"); + return; + } tmp = new_plist_entry(); tmp->name = copy_string(arg); tmp->type = type; @@ -61,6 +66,11 @@ { PackingList tmp; + if( arg == NULL || arg[0] == '\0' ) + { + warnx("Invalid packing list line ignored"); + return; + } tmp = new_plist_entry(); tmp->name = copy_string(arg); tmp->type = type; |