D言語

Privileged instruction 2

phobosをデバッグモードでコンパイルしてリンクしたらでなくなった。 同時に他もいろいろ触ったので、これによって!とは言えないけど、とりあえずこいつでいく。

DによるWinnyの実装

と、ansemを微妙にパクってみたものの、まだまだ途中で相変わらずファイル検索しかできないです。 一応coreを作り直して、クラスタリングや検索は今うまく動いているようなので区切りということで、出しときます。 Winnyに興味のある人向けにソースコードに…

Privileged instruction 3

phobosをデバッグ用にコンパイルして、例外をログファイルに落とすようにしていたおかげで大体内容が分かった。 while ((e = *pe) != null) { int c; //printf("\te = %p, e.left = %p, e.right = %p\n", e, e.left, e.right); assert(e.left != e); assert(…

Privileged instruction例外

マジで分からんので、D言語研究に投げた。

すべてGCが原因

新年早々のぐち。 ポエニーのタスクがバグる理由がついにわかりました。 GCです。フルコレクトが走る前にすべてのスレッドを止めて、走りきったらすべてのスレッドを再開させます。というと一見まともな動きに聞こえますが、こっちがイベント待ち行列にいれて止め…

do { continue; } while (false)

これは無限ループしない。 もちろんCでも同じ。よく考えると納得できるんだけど、今日までこれは無限ループすると思っていた・・・。いまだ携帯..

DでQDBM

キャッシュファイルの形式にQDBM(http://qdbm.sourceforge.net/)を使ってみようと思ったので、D言語から使えるか試してみた。結果的には使える。が、メモリアロケータの指定ができないようなので、QDBMが内部でmallocを使って領域を確保して返し、呼び出し側…

ファイルロック

今頃気づくのは遅すぎだが、D言語の標準ライブラリ(phobos)には、明示的なファイルロックの処理がない。 stream.dのFileクラスで試したところ、Win32版ではReader/Writer Lockは行っているが、ロックできないと即時で例外が飛んでくる。linux版にいたっては…