テテのアトリエ 掲示板の過去ログです (2006年7月1日 ~ 2006年12月31日)。
アイヴァーンさんこんにちは! 情報ありがとうございます。パスワードを盗まれる恐れですか…。怖いですねえ~。
ひょっとして、Fx 2.0.0.1と1.5.0.9を同時期にビルドすることになるとか…(汗)。2007年4月24日までは、正式版のFirefox 1.5系ソースをビルドすることにしましたので。
また忙しくなりそうです(笑)。
tmemutil.dll (2006年11月20日)を公開しました。
単一プロセッサシステム以外であっても、tmemutil.iniファイルのProcessAffinityMask
でtete009ビルドが使用する論理プロセッサ数を1つだけに制限している場合は、単一プロセッサシステムのようにlockプリフィックスを削除してみました。
複数の論理プロセッサを持つ環境 (マルチコア、HT、マルチプロセッサ) の方は、動作確認にご協力いただけると助かります。確認方法は以下の通りです。
Firefox 2.0 SSE2 PGIビルド (最適化情報を収集するためのビルド) を普段どおりに使用して、最適化情報の収集にご協力いただける方、いらっしゃいますか? (^^)
ご協力いただける条件は…
提供いただいた*.pgcファイルを利用して、当方で最終的なビルドの作成を試みたいと思っています。当方のAthlon XP環境で成功するかどうかは分からないですが…。
はい。シングルプロセッサ以外でのパフォーマンスは、リリース版DLLと変わりません。
シングルプロセッサ以外では、tmemutil.iniのCriticalSectionSpinCountで、クリティカルセクションのスピンカウントというのを変更できます。しかしスピンカウントは、激しい競合にあいやすい、存在期間の短いクリティカルセクションで有効
だそうです。従って、スピンカウントをいじって速度が向上するかは分からないし、へたに大きい数値を指定すると、かえってパフォーマンスが落ちます。数値を500~1000単位で増やしてみて、速度が遅くなる一方ならば、CriticalSectionSpinCount=0 (既定値)のままで良いと思います。試される方は自己責任ということで。(^^ゞ
今回のtmemutil.dllからは、同じフォルダにtmemutil.iniというファイルが存在する場合、そこから設定値を読み込んで初期化を行います。
取りあえず、下記の設定をtmemutil.iniの[General]セクションで指定できるようにしてみました。
1(LFH有効)。
0でLFH無効。
0(Windowsにお任せ)。
0(Windowsにお任せ)。詳しくはSetCriticalSectionSpinCountを参照。
一部の拡張では、CRTヒープでLFHを有効化しているとエラーが発生するようです。その場合はEnableCRuntimeLFHeap=0
を指定してみてください。
今日公開したtmemutil.dllでは、tmemutil.iniファイルの[General]セクションのProcessAffinityMask
キーで、どの論理プロセッサでtete009ビルドを実行するかを指定できるようにしました。
0(Windowsにお任せ)。詳しくはSetProcessAffinityMaskを参照。
例えば、Pentium 4 HT有効時にtete009ビルドが短時間固まる場合、ProcessAffinityMaskに1または2を設定し、tete009ビルドに1つの論理プロセッサだけを使わせると、症状が改善するかもしれません。以下の記事にそれらしきことが書いてありました。
ProcessAffinityMaskに設定する値は、SetProcessAffinityMaskの第2引数と同じです。Windowsの「電卓」で「表示」から「関数電卓」を選べば、2進数と10進数の変換を簡単に行えます。あと、次の記事も参考になると思います。
不具合試験用DLL(tmemutil-20060915-test)で不具合が収まるそうで、tmemutil.dllにバグがある可能性が高いと思います。セーフモードで不具合が収まるということは、特定の拡張を有効にしているときに、tmemutil.dllのバグが現れるという気がしますね…。
よろしければ、下記のテストDLLを試していただけないでしょうか。どちらか片方で不具合が出る気がします。お手数をおかけしてすみません。
ご協力ありがとうございます。お陰様でバグのある箇所を絞り込めてきました。
たびたびすみませんが、下記のTestDLLs.zipを試していただけないでしょうか。解凍すると、6つのtmemutil.dllが出来ます。この中の1つか2つで、不具合が発生するものと思われますので。
自信がないですが、これはどうでしょうか。お時間の許す時に試していただけると助かります。
問題の箇所を修正しました。これで不具合が出なければ、ベータ版DLLとして公開したいと思います。
試してくださり、ありがとうございます。
ご報告から推測すると、Rayさんの環境でエラーが発生する条件は、「Html Validator」を有効にして、さらに、Cランタイム(CRT)ヒープでLow Fragmentation Heap (LFH)を有効にした時のようです。MSの説明では、CRTヒープでLFHを有効にできることになっているのですが。
http://msdn2.microsoft.com/ja-jp/library/csd157zx(VS.80).aspx
当方のバクでは無いようなので、従来どおり、既定ではCRTヒープでLFHを有効にします。しかし、これを無効にする手段を用意することにしました。
下記の内容でtmemutil.iniファイルを新規作成し(文字コードはShift_JIS等)、今回のtmemutil.dllと共に、firefox.exeのフォルダへ入れてみてください。不具合は収まるでしょうか?
[General]
EnableCRuntimeLFHeap=0
Windows Server 2003以降では、埋め込みマニフェストと外部マニフェストの優先順位が変わったそうです。
http://msdn2.microsoft.com/ja-JP/library/ms235342.aspx
Windows XP では、外部マニフェストがアプリケーションのローカル フォルダに存在する場合、オペレーティング システムローダーは、バイナリに埋め込まれたマニフェストではなく、この外部マニフェストを使用します。Windows Server 2003 およびそれ以降のバージョンの Windows では、この優先順位が逆になります。つまり、埋め込みマニフェストが存在する場合はそれが使用され、外部マニフェストは無視されます。
やっぱり仕様変更が行われていたんですね。
当掲示板に、新たなスパム対策を追加してみました。本文に含まれるURLからホスト名を抽出して、ブラックホールリストと照合します。リストに載っている場合は、書き込みに失敗します。例えば、以下のような投稿が来たとします。
あなたの神経の太さには、ほんとうに毎日驚かされます。こちらの善意で、全額免除手続きをとっているのに、どうして返事しないのですか? このままですと、このチャンスはこれで放棄と認定され、他の人に譲ります。
放棄したくない場合 http://○○○○ からアクセスし、きちんと処理をしてください。
○○○○がブラックホールリストに載っている場合は、以下のような警告が出て、掲示板への書き込みに失敗します。合掌。
○○○○は、××××によってスパムサイトと判断されているため、掲示板に書き込めませんでした。