2003-10-13 難波
2003-10-23 libxml2
_ 開発中のソフトで作りこんでしまったバグに大ハマり。
libxml2 は DOM ツリー操作関数を持っている。DOMツリーの頂点には所有権の概念があり、所有権を持っているのは、ドキュメントである。また、どのドキュメントにも属さない頂点も存在する。
使っていてハマった関数は、以下の3つ。
- xmlAddNextSibling
- xmlAddPrevSibling
- xmlAddChild
それぞれ、右の頂点を追加、左の頂点を追加、子供の末尾に追加を行う関数だ。良く似た操作を行う3つの関数だが、実は仕様は異なる。
上の2つ(兄弟の追加)では、追加する頂点がどこかの木に属していた場合には、頂点の追加ではなく、移動の操作となる。
しかし、 xmlAddChild では、追加する頂点の所有権や、どこの木に属しているかといったことを考慮しない。したがって、xmlAddChild を頂点の移動のつもりで用いると、DOMツリー (つまりポインタで作られたグラフ構造) の破壊を引き起こしてしまう。 なんでこんな仕様になっているかは不明。
2003-10-31 Audiophile-USB
_ [linux] Linux で使ってる Audiophile-USB が不安定。
蛍光灯の電源を切った瞬間に、alsa のドライバが死亡した。過去にも、一度同じことがあったので、電源周りが怪しいのだろうか。アース? ノイズ? 電圧? 電気関係は (も?) さっぱり。とりあえずACアダプタの向きを逆にしてみるか…。
そうでなくても、 PC のチップセットも VIA VT82C686 だったり、 alsa 0.9.0rc5 より後のバージョンでは動かなかったり、怪しいところだらけ。
一度 reboot すれば直るのだが。 usb 周りを全部 module にしておけば、reboot はせずに済むかな。