〜2001年9月中旬〜
Perl的にはブロックなしのsortではまった人が多いらしい *1。 ブロックなしだとcmpなので
% perl -e 'print join("\n", sort(1e9-1,1e9)), "\n"' 1000000000 999999999
となる。
% perl -e 'print join("\n", sort{$a<=>$b}(1e9-1,1e9)), "\n"' 999999999 1000000000
のように明示的に<=>を使わないといけないわけだ。 ""で括ってないから数値だと思うよね、ふつう。
日記書いてる場合じゃなくなった。
会社のマシン、今日は3回もパニックだよ。 それも決まってssh hogeとかCVS_RSH=sshしてるcvs coとか、 他のホストからftpで~/.ssh/authorized_keysをgetしてるときとか、 とにかく~/.ssh/をアクセスしたときにパニックになってる。 原因はメモリじゃなくてディスクにあるようだ。
というわけで、/homeパーティションを-rでremountし、 まずはバックアップを取ることにした。 /homeパーティションは4GBほどだが、実際は200MBぐらいしか使ってない。 幸い1GBのディスクが手元に余ってたので、これをまるごと/homeにあてることにした。 バックアップ自体はパニックなることもなく無事終了。
次に不良ブロックがあるかどうか検査したいところだが、 そんなコマンドってあったっけ? mke2fsには-cはあるけど、これじゃまっさらになるし。 いやバックアップ取ってるんだから、まっさらになっても問題ない。
ほどなくman mke2fsの最後にbadblocks(8)を発見。おお、まさにこれだ。 なるほど。これをやってみよう。時間がかかりそうなので
# badblocks -w -o /tmp/hda4.badblocks /dev/hda4
と実行したまま帰る。結果は明日だ。
badblocksした結果不良ブロックはなかった。うーむ。memtest86してみるか。
さすがに3度もパニックしたせいか、 cmailでC-cC-cでメールを送るときに一緒にemacsが死んでしまうようになった。 Linux 2.2.xではstraceはもはやmakeできないのでltraceすると
% ltrace -S -L emacs <途中略> SYS_write(3, "\n/home/watanabe/#*mail*#698vlA#\n", 32) = 32 SYS_close(3) = 0 SYS_munmap(0x4031f000, 4096) = 0 SYS_rt_sigaction(29, 0xbfff9260, 0xbfff91d4, 8, 29) = 0 SYS_rt_sigprocmask(1, 0xbfff9408, 0xbfff9374, 8, 1) = 0 SYS_getpid() = 698 --- SIGILL (Illegal instruction) --- +++ killed by SIGILL +++
ということらしい。emacs自体が壊れたか。 emacs 21.0.105をmake installしたら直った。
1.3.3が出た。例によって Cygwin情報 を見ると出来は相変わらずのようで。 ま、不安定なのは昔からだしね。
dumper.exeの使いかたが書かれている。 gdbが読めるcoreが吐ける。じゃんじゃん吐こう。
CVSupにも2001年9月9日問題があったか。
・ Debian GNU/Linux i386 potato, contributed by Akinori Musha □ cvsup-16.1d-LINUXLIBC6-gui.tar.gz (i386: GUI version of cvsup, cvsupd, and cvpasswd) □ cvsup-16.1d-LINUXLIBC6-nogui.tar.gz (i386: non-GUI version of cvsup, cvsupd, and cvpasswd; untar and install manually)
おお、knuさんだ。早速入れ換えたら
% cvsup -L2 ~ruby/cvs-ruby.sup Parsing supfile "/home/ruby/cvs-ruby.sup" Connecting to cvs.ruby-lang.org Connected to cvs.ruby-lang.org Server software version: SNAP_16_1d Negotiating file attribute support Exchanging collection information Establishing multiplexed-mode data connection Running Updating collection src-all/cvs Touch lib/metaruby/doc/LGram.txt,v Touch lib/metaruby/lgram/Marshal.rb,v ...
のようtouchされた。
くー。またssh hogeでパニックだ。memtest86は通ってるしなあ。 /usrパーティションか?来週だな。
うーむ。1.3.3はやっぱまずいね。 せめてcygwin1-20010914.dll.bz2を使うべきか?
徳光和夫と英語を話さないクリス・ペプラー。
更新。と思ったらもうwin32ole 0.3.0が出てる。
1.0.4をgcc 3.0.1でコンパイルするとエラーだらけになる。 調べてみると多用されてる##の使いかたが間違っているのが原因だった。 というか使う必要がないんだよね。
% cat foo.c #define FOO "foo" #define BAR "bar" #define FOO_BAR "foo" ## BAR char s[] = FOO_BAR; % gcc -E foo.c # 5 "foo.c" foo.c:5:12: warning: pasting ""foo"" and "BAR" does not give \ a valid preprocessing token char s[] = "foo"BAR; % /usr/bin/gcc -E foo.c |sed '/^$/d' # 1 "foo.c" char s[] = "foo""bar" ;
gccが3.0.1で/usr/bin/gccが2.95.3。
% cat foo.c | sed 's/## //' |gcc -E - # 5 "<stdin>" char s[] = "foo" "bar"; % cat foo.c | sed 's/## //' |/usr/bin/gcc -E - |sed '/^$/d' # 1 "" char s[] = "foo" "bar" ;
Chris曰く、
ssh on Windows 9x has had a hanging problem for some time. Sorry.
だそうだ。やはりWin9xは捨てだな。
1.3.3のsymlinkは速いらしい。
1.1.8だけど、フロッピー1枚に収まるサイズになってる。 インストーラはWinampで使われている NSIS だそうだ。これもopen source。
結局必要な変更はすでにgcc2953s.zipに入っているので、 そのまま進めればいい。 ただ、パーミッションがパーミッションなだけに
% chmod +x **/config* **/move-if-change **/symlink-tree
ぐらいしとかないとpermission deniedの嵐になる。
出た。
サイバーテロとか言ってるし。
うちにもreadme.exeが来た。 というかこいつは感染経路が複数あるし、 もうあちこちで大変なことになってるね。 拡がるだけでほとんど何もしないようだが、 IIS攻撃は1回のアタックに16回アクセスするからCodeRedより性質が悪い。
/scripts/root.exeをダミーで用意すればその後のアタックはやめるとか? そんなに甘くはなさそうだな。
Cygwinはstatが遅いからこういう結果になっても不思議じゃないかも。
おお、formatだ。
#!/bin/sh sleep 10
というroot.exeを用意して待つという作戦を考えてというか、 実際にしかけておいてみたが、社内にはもう飛びかっていなかったというか、 access_logを見るとどうもthreadで同時にやってるような感じだったので、 無駄だとは思っていたんだけど。
それにしてもこれだけやられてもまだ使い続ける人がいるというのも不気味だ。
CygwinのパッケージとしてのmingwのメンテはもうCygwin Projectではなく MinGW projectに任せた。それに伴い、mingwはmingw-runtimeと名前を変えた。 そのあたりのアナウンスは こちら に。 updateするにはまず
mingw-20010917-1
をインストールして
mingw-runtime-1.1-1
をインストールしないといけないらしい。
% tar tfvz latest/mingw/mingw-20010917-1.tar.gz drwxr-xr-x BoydE/Administrators 0 2001-09-18 01:22 include/ drwxr-xr-x BoydE/Administrators 0 2001-09-18 01:22 lib/
だからアンインストールという意味か?
cvs updateすると途中でやたら時間がかかってるファイルがある。
U winsup/cinstall/temp/packages U winsup/cinstall/temp/rh U winsup/cinstall/temp/setup.ini U winsup/cinstall/temp/setup.ini.base U winsup/cinstall/temp/setup.ini.rpm
のpackagesなんだけど
% ls -l winsup/cinstall/temp total 3001 drwxr-xr-x 2 watanabe ruby 128 Sep 20 22:08 CVS -rw-r--r-- 1 watanabe ruby 2976482 Sep 20 11:11 packages -rwxr-xr-x 1 watanabe ruby 14227 Sep 20 11:38 rh -rw-r--r-- 1 watanabe ruby 25793 Sep 20 11:38 setup.ini -rw-r--r-- 1 watanabe ruby 18836 Sep 20 11:38 setup.ini.base -rw-r--r-- 1 watanabe ruby 27385 Sep 20 11:11 setup.ini.rpm
うぐ。3MB近いじゃん。中身はdebianの.debに関係するものみたいなんだけど、 何を企んでるんだろう?rhはrpm関係のPerlのスクリプト、setup.ini.rpmも気になる。