2008年

ipfilter の keep state がうまく働かない

ipfilter で、外部からの接続をすべて拒否しつつ、内部からは何でもアリな以下のような感じの ipf.conf の設定(本当はもっといろいろ書いてあるけど)をしたとき,普通うまくいくんだけど,うまくいかないサーバが一台だけあった(NetBSD/amd64 4.0)。

block in on bge0 all
pass out quick on bge0 proto tcp from any to any 
flags S/SAFR keep state

まだちゃんと追ってないので原因はよくわからないけど、これでなおった。

ifconfig bge0 -tcp4csum

(/etc/ifconfig.bge0 で tcp4csum 指定してたので削除した)
wm とか re は tcp4csum 付きでも大丈夫っぽいんだけど、bge固有の問題?

Cubase 4.5.1 (VST Sound Collection vol.1)

tips
ダウンロードは,USのサーバが圧倒的に速かった。(日本語サイトからはリンクされてないけど)
http://www.steinbergmediacenter.com/
VST Sound Collection 入れても音色が選べない場合:
1. カテゴリを表示(●をクリック)。
2. 場所を表示(●をクリック)。
3. それっぽい名前の場所にチェックが入ってなければ入れる。
3′. チェックが入っているのにその場所の音色が一個もでない場合には,チェックを一旦外して(ダイアログがでたら「変更なし」)再度チェックを入れる。
同じハマりの人も多そうなのでメモ。
気付かなくて2回も修復インストール(計3回インストール)しちゃったよ・・・。
バグフィックスに関しては,直ってるバグと直ってないバグが半々かな。

コミックマーケット74

そういえば告知をしていなかった。
数年ぶりにサークル参加します。
2008年8月16日(土)
西地区 る-09a Estuary
新作は,VOCALOID歌もの(発表済の曲を含む)CD1種類だけです。
旧作品の在庫もあったはずなんで,発掘されれば持って行きますが,発掘されないかもしれません。

Windows XP x64 Edition で Visio のデータベースモデル図を作成しようとするとハングする件

日本語で検索しても全然情報が出てこないが、visio database hang 等で(日本語のページに限定せずに)検索するといくつか情報が出てくる。
どうやらプリンタドライバに問題がある場合にハングする(応答なしになる)とのこと。とりあえず、適当に違うプリンタ(Microsoft XPS Document Writer)を指定してからデータベースモデル図を新規作成したらうまくいった。
Visio 2003でも2007でも同じ症状。OS が Vista x64 でも同じらしい。

たかがビルドでハマりにハマる

何台かでソースからビルドした NetBSD の /usr/bin/ld のうち一台だけ動かない。

$ ld
ld:built in linker script:1: ignoring invalid character `20' in expression
ld:built in linker script:1: ignoring invalid character `37777777646' in expression
ld:built in linker script:1: parse error

それぞれバージョン違いで,動かないのは netbsd-4 のツリーをビルドしたもの。netbsd-4 のバグかと思い,別のマシンにもたまたま netbsd-4 のソースが展開してあったのでビルドするとうまく動く。
あれこれやって,生成された eelf_x86_64.c がおかしいところまでは突き止めたが,何故おかしくなるかわからないので,ビルドログを比較してみると,エラーが出ているのを発見。

 #    create  ld/eelf_x86_64.c
unset MACHINE || true;  LIB_PATH=/usr/lib
/bin/sh /usr/src/gnu/usr.bin/binutils/ld/../../../dist/binutils/ld/genscripts.sh /usr/src/gnu/usr.bin/binutils/ld/../../../dist/binutils/ld /usr/lib "/usr"  x86_64--netbsd x86_64--netbsd x86_64--netbsd  elf_x86_64 /usr/lib no elf_x86_64 "x86_64--netbsd"
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory
+sed: stringify.sed: No such file or directory

その手前で stringify.sed が作られていない模様。

-#    create  ld/stringify.sed
-rm -f stringify.sed
-ln -s /usr/src/gnu/usr.bin/binutils/ld/../../../dist/binutils/ld/emultempl/astring.sed stringify.sed

で,結局あれこれいじっていると,/usr/src/gnu/usr.bin/binutils/ld/stringify.sed (シンボリックリンク)があるのを発見。既に存在するので作られないが,実行時に使われる /usr/obj/gnu/usr.bin/binutils/ld/stringify.sed がないというオチ。
結論としてはこんなかんじ。

  1. 何かの拍子に(過去に)ソースツリー内にシンボリックリンクを作ってしまった。(多分自分のミス)
  2. オブジェクトのディレクトリがソースのディレクトリとは別(NetBSD本体のビルドでは常にそうなる)であってもソース側にターゲットが存在してしまっているとオブジェクト側に作られない。(makeの仕様)
  3. ビルド中に使っている binutils/ld/genscripts.sh の中でエラーを起こしてもビルドが止まらない。(?)
  4. 結果として出来上がった eelf_x86_64.c が壊れているにも関わらず,コンパイルが通ってしまう。具体的には char * で内蔵 ldscript を返す関数が,stringify.sed がないせいで何も作られず,return; となってしまっているのにエラーにならない。(?)
  5. 存在しない戻り値(メモリのどこか)を ldscript だと思って読み込むが,当然ぐちゃぐちゃなのでエラー。

まあ発端は自分が悪いんだけど,バグで同じようなことが起きる可能性も考えると,ツール類も -Wall … -Werror つきでコンパイルできると本当はいいんだろうねえ。

おしえてMSのえらいひと

Office2003と2007の共存がしたい。
どっちかがあれば,もう一方のファイルも互換モードで開くのだが,2003と2007で交互に編集したりすると,いろいろおかしくなるのはお約束。PowerPointが特に顕著。
そこで,Office2007のインストール時に2003は消すのがデフォルトになっているのだが,残すようにしてみた。それで,例えば *.doc は Word2003 で,*.docx は Word2007 で開くのかと思ったらそうでもなくて,常に 2007 が動く。関連付けを変えようとしてもうまくいかない。
とか書くと,親切な人が「『ツール』→『フォルダオプション』で『ファイルの種類』を…」云々と教えてくれるのだが,それ自体がうまくいかないという話。2003 の方の WINWORD.EXE を明示して関連付けても Microsoft Office Word というアプリケーションとの関連付けと勝手に解釈して(?)新しい方が起動してしまうらしい。
しょうがないんで,

START "" "C:Program FilesMicrosoft OfficeOFFICE11WINWORD.EXE" %*

みたいなバッチファイルを作って,そのバッチに *.doc 等を関連付けすることでなんとか一応目的の共存はできるようになった。
ただ,これでわかったことは,2003使った後に2007使ったり,その逆をやると毎回インストーラが起動して「構成しています」とか何やら設定をはじめる。2007使った後の2003のインストーラはそれほど時間がかからずに終了するが,2003使った後の2007のインストーラは結構待たされる(1分以上?)。
なんとかなりませんかね,これ。

IBM System x3105 で NetBSD 4.0 が起動しない件

NetBSD 3.1 は動いてた。
4.0 にしようとしたら,

viaide2: couldn't map sata regs

といわれてwd0, wd1 が見つからずに死亡。
PR #38011 がそれっぽい。
http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=38011
手で viaide.c にパッチ当ててみると wd0, wd1 は見つかったものの,正しく動いてないのか起動時の init が呼ばれるあたりで固まる。
ちなみにチップセットは NVIDIA nForce Professional 2000 MCP らしいんだが,nForce4 でいいんだよねこれ?(少なくともSATA周りは)
とりあえず 3.1 に戻す。
続く (?)

放置してたら

コメントスパム&トラックバックスパムの嵐に。
承認しないと表示しない設定にしていたのだが,ブログ単位の設定かと思っていたらどうやら「記事単位」のデフォルトの設定だったらしい。つまり,過去の記事に関してはそのまま・・・。
どう考えても全部の記事設定しなおすなんて面倒でしょ。でも一括設定が見当たらない。やっぱり,他所に移してここは閉じるか。
とりあえず,http を禁止ワードにしておく。