poenyがマルチコアのCPUで頻繁に落ちる「誰かタスクがいなくなったようです」の件

すごい応急処置なのですが、タスクスケジューラーから実行CPU数を制限できるようなので、ひとつにすると少しはマシになると思います。
f:id:ultraist:20080710022239p:image
taskmgr.exe(CTRL+ALT+DELで起動するやつ)を起動して、「関係の設定」を選択して、
f:id:ultraist:20080710022240p:image
CPUを1個にする。

PoenyがマルチコアのCPUで頻繁に落ちる件

やっぱマルチスレッド系のバグがあるので、コアが増えて並行ではなく並列で動くようになると頻発するみたい。
応急処置的には、SetThreadAffinityMaskで実行コアを1つに制限してpoeny.exeをexecするスターターを作ればいいだろうけど、根本的にバグってるので、個人的な価値観では意味ないと思ってしまう。
本当に直すならD 1.0系の最新バージョンに対応させてからだけど、言語仕様の変更が多いのと、使っているライブラリのアップデートもいるし、GCの挙動が変更されているから、conservative GCで回収されないからって大量に入れている明示的なdeleteや明示的なfullCollectを削除したもしたいし、結構大変な気がして放置してしまう。
2年前くらいに文句言いまくって責任転換していたphobosのバグ(Issue 645 – Race condition in std.thread.Thread.pauseAll)が半年前くらいに修正されているようなので、そろそろやるべきか。もう機能的に変更する気はないけど、ひどいバグを放置していると他人のバグを突っつきにくい心境になる。

poeny_win32.zipおよびpoeny_win32_src.zipに含まれるsqlite3.dllがAVGというウィルスチェックソフトで脅威として検知されなくなった件について

今日のアップデートで検知されなくなったようです。
誤検知は本当にひどい。泣ける。
今回はsqlite3というさまざまなソフトで使われている超有名なライブラリだったから早い段階で対応されたのだと思います。

poeny_win32.zipおよびpoeny_win32_src.zipに含まれるsqlite3.dllがAVGというウィルスチェックソフトで脅威として検知される件について

poeny_win32.zipおよびpoeny_win32_src.zipに含まれる『sqlite3.dll』がAVGで『Trojan Horse Generic9.AAKT』として検知されるようになりました。これが誤検知なのか、本当にウィルス的なものに感染しているのか、自分でははっきりと断言できないので、ウェブにあるものは一時的に削除しました(今ちょうどサーバが止まっているので同じ意味で……)。
一応、で調べると検知されなかったということと、別のソフト*1でも同じ状態になっているようなので、誤検知ではないかと思っています。

お願いしたい対処方法

SQLite Download Pageで、Precompiled Binaries For Windowsにあるsqlitedll-3_*_*.zip(*は数字)をダウンロードして、その中にあるsqlite3.dllをポエニーのディレクトリのものと置き換えてください。現在最新であるsqlitedll-3_5_3.zipについては動作確認を行っています。

ポエニーに添付されているsqlite3.dllのバージョン

3.4.0
公式サイトの元ファイルが見つからないので、ダウンロードしてから変更がないか、判断が出来ません。

セキュリティー

「裏で変なことはしていないよ。ソースコードだってつけているし」というためには、sqlite3.dllもソースコードで配布するか、含めないでダウンロードリンクを書いておくべきでした。

その他

AVGの開発元に確認するしかない? はたして相手にしてくれるのか。無理だろうから泣きながらDLLを置き換えて再配布するしかないのか。
来週あたりに互換チェックして出そうと思います。

*1:[http://support.nusphere.com/viewtopic.php?t=4263]

poeny 20071010

寝る前にP2Pのことを考えていたら脳内デバッグでポエニの恥ずかしいバグを発見してしまったので修正しました。
ついでにいくつか気になっていたところを修正しました。

ポエニー WinXP用バイナリ
ポエニーソースコード

以下readme.txtより

		2007年9月に光回線がきました。
		今回の変更では全体的にメモリ使用量が増えました。
		リッチな環境で快適に動くようになりました(だったらいいなーとおもいます)。
		最新Dコンパイラの対応はしていません。
	
	* SQLiteのキャッシュサイズを変更
		これにより『最大』メモリ使用量が+40MBくらい増えましたが、
		大きいファイルのダウンロード時にSQLiteのエラーで切断するケースが減りました。
		
	* SQLiteの一時テーブルをメモリテーブルに
		これによって常時メモリ使用量が+10MBくらい増えましたが、
		検索時にハードディスクにアクセスしなくなりました。
		全体的に軽くなったと思います。
		
	* キャッシュ変換(デコード)を最適化
		極力ハードディスクにアクセスしないように大きめのバッファリングをするようにしました。
		「キャッシュ変換が始まると重くなる」症状が改善されました。
		キャッシュ変換時は、一時的にメモリ使用量が増大しますが、完了すると戻ります。
	
	* IDLE状態以外のスレッドの優先度操作をやめた
		ポエニしか考えていない優先度だったため、
		ほかのプログラムが激しく割り込んできてスレッドが動かなかったり
		ポエニのせいでほかのプログラムが重くて動かなかったりが多いので
		もうやめました。
	
	* 検索条件の全角スペースを半角スペース(AND条件)に自動変換
		検索条件として全角スペースが使えなくなりました。
		全角スペースが入ると半角スペースに自動変換され、
		半角スペースはAND条件の区切り文字になります。
		
		例: zip 2ch → zip 2ch → zipまたは2chを含むファイル
	
	* 同時ダウンロード数の初期値を3に
		アップロードを1つも実行していない場合のダウンロード数は
		前回まで2でしたが、3にしました。
		ダウンロードしなければ誰かがアップロードできないので、
		増やせるなら増やしたほうがいいという考えによるものです。
		(ダウンロードオンリーユーザはいないという性善説)

今日の出来事

Fuktommy氏がPoenyを最新のDMDでコンパイルできるようにするパッチを公開しています。


それとはまた別の話で、cc君がLinuxのwine環境で試してくれました。起動はするが通信ができないとのこと。
f:id:ultraist:20061227022126p:image