2010/8/22:本掲示板は閲覧専用です。データが一部破損しておりますがご了承ください。
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
76 / 376 ツリー ←次へ | 前へ→

【1949】SysInfo.vxd の改良&修正 DULL 06/3/21(火) 10:00
【1950】Re:SysInfo.vxd の改良&修正 ひよひよ 06/3/21(火) 22:03
【1951】呼び出し規約か…? DULL 06/3/22(水) 18:40
【1952】Re:呼び出し規約か…? ひよひよ 06/3/22(水) 21:47
【1953】Re:呼び出し規約か…? DULL 06/3/22(水) 22:57
【1954】あぅあぅ (T_T) DULL 06/3/23(木) 22:04
【1955】Re:あぅあぅ (T_T) ひよひよ 06/3/23(木) 22:09
【1959】CrystalCPUID 4.7.4.295 試しました DULL 06/4/2(日) 22:34
【1960】Re:CrystalCPUID 4.7.4.295 試しました ひよひよ 06/4/3(月) 21:51
【1961】Re:CrystalCPUID 4.7.4.295 試しました DULL 06/4/4(火) 21:15
【1962】Re:CrystalCPUID 4.7.4.295 試しました ひよひよ 06/4/4(火) 22:13
【1963】Re:CrystalCPUID 4.7.4.295 試しました DULL 06/4/5(水) 21:58
【1964】Re:CrystalCPUID 4.7.4.295 試しました ひよひよ 06/4/7(金) 17:16

【1949】SysInfo.vxd の改良&修正
←back ↑menu ↑top forward→
 DULL WEB  - 06/3/21(火) 10:00 -

引用なし
パスワード
   実際に rdmsr/wrmsr を vxd 側に移してみました。
SysInfo.sys からMSR関係のソ〜スをコピペするだけで
問題なく動作するようです。(ただ hlt は試していません。)

vxd の動作チェックをしていたら ReturnedLength が
常に0である事に気がつきました。
DIOCPARAMETERS のメンバ名を見ると
lpcbBytesReturned は lpから始まっているので

&lpDIOCParms->lpcbBytesReturned

(ULONG *)lpDIOCParms->lpcbBytesReturned

に変更すると ReturnedLength に値が入りました。

これで「ペ〜ジ違反」が直るかと思いましたがダメでした。

現在わかっているのは
・CrystalCPUID.exe と SysInfo.dll の最適化をOFFにすると動作する。
・スタック領域の書き込みで落ちる。

- PciInfo.cpp -
c = _pciConfigReadChar( address >> 16, 0x82);
c |= 0x04;  ← 今回はここで落ちた

- アセンブラ -
or al,4
mov [ebp-4],al  ← 今回はここで落ちた

もう少し探っていきたいと思います。
ではでは。

【1950】Re:SysInfo.vxd の改良&修正
←back ↑menu ↑top forward→
 ひよひよ  - 06/3/21(火) 22:03 -

引用なし
パスワード
   ▼DULLさん:
>実際に rdmsr/wrmsr を vxd 側に移してみました。
>SysInfo.sys からMSR関係のソ〜スをコピペするだけで
>問題なく動作するようです。(ただ hlt は試していません。)
どうもありがとうございます。
次回は vxd も更新かな・・・?

>vxd の動作チェックをしていたら ReturnedLength が
>常に0である事に気がつきました。
>DIOCPARAMETERS のメンバ名を見ると
>lpcbBytesReturned は lpから始まっているので
>
>&lpDIOCParms->lpcbBytesReturned
>を
>(ULONG *)lpDIOCParms->lpcbBytesReturned
>
>に変更すると ReturnedLength に値が入りました。
>
>これで「ペ〜ジ違反」が直るかと思いましたがダメでした。
>
>現在わかっているのは
>・CrystalCPUID.exe と SysInfo.dll の最適化をOFFにすると動作する。
ということですが、CrystalCPUID.exe だけ最適化でも OK だったりしませんか?
どっちかだけの場合どうなるかも気になります。
なんにせよ、次回リリースからは最適化オフで出したいと思います。
海外のユーザでもな〜んか動かないんだよなぁ〜と思っている方&使用をあきらめてしまった方もいると思うので。

>・スタック領域の書き込みで落ちる。
>
>- PciInfo.cpp -
>c = _pciConfigReadChar( address >> 16, 0x82);
>c |= 0x04;  ← 今回はここで落ちた
>
>- アセンブラ -
>or al,4
>mov [ebp-4],al  ← 今回はここで落ちた
ほんと、何でだ?って感じなんですが。。。

>もう少し探っていきたいと思います。
>ではでは。
お手数をおかけいたします。

【1951】呼び出し規約か…?
←back ↑menu ↑top forward→
 DULL WEB  - 06/3/22(水) 18:40 -

引用なし
パスワード
   ▼ひよひよさん:

>ということですが、CrystalCPUID.exe だけ最適化でも OK だったりしませんか?
両方の最適化をOFFにしないとダメです。

>なんにせよ、次回リリースからは最適化オフで出したいと思います。
個人的には最適化ON/OFFの両方を公開する方が良いと思います。
OFFバ〜ジョンは頻繁にバ〜ジョンアップしないで確認用とか。

スタックが狂っているようなので原因を考えると
・アセンブラでPUSH/POP等を間違っている。
・呼び出し規約の_stdcallと_cdeclが間違っている。

後者を疑って/Gz(強制 _stdcall使用)を試しました。
CrystalCPUID.exe は libpng の仕様でビルド失敗。
SysInfo.DLL は /Gz を通過したので実行してみました。

結果は起動中に「ページ違反」が発生。
アドレスがいつもの落ちるアドレスと同じだったので
もしかしたらこれが原因かも知れません。

過去に私も libpng を使った事がありますが
ファイル処理で関数ポインタを使う方法があります。
このへんで呼び出し規約を間違ったりとか…?

libpng のソ〜スを持ってきて -DPNGAPI __stdcall で
ビルドして回避できないかと考えたりします。

さらに pcidll.c の initialize() の
char path[MAX_PATH];

これだとパスが245文字以上のフォルダで実行されると
path[] にはファイル名も入るのでバッファが
オ〜バ〜フロ〜してしまう可能性があると思います。
(ファイル名が固定なので確立はかなり低いですが…)

ではでは。

【1952】Re:呼び出し規約か…?
←back ↑menu ↑top forward→
 ひよひよ  - 06/3/22(水) 21:47 -

引用なし
パスワード
   ▼DULLさん:
>▼ひよひよさん:
>
>>ということですが、CrystalCPUID.exe だけ最適化でも OK だったりしませんか?
>両方の最適化をOFFにしないとダメです。
ふむふむ。

>>なんにせよ、次回リリースからは最適化オフで出したいと思います。
>個人的には最適化ON/OFFの両方を公開する方が良いと思います。
>OFFバ〜ジョンは頻繁にバ〜ジョンアップしないで確認用とか。
それも一案ですが・・・。

>スタックが狂っているようなので原因を考えると
>・アセンブラでPUSH/POP等を間違っている。
>・呼び出し規約の_stdcallと_cdeclが間違っている。
呼び出し規約までは考えてことがありませんでした。
ありそー。

>後者を疑って/Gz(強制 _stdcall使用)を試しました。
>CrystalCPUID.exe は libpng の仕様でビルド失敗。
>SysInfo.DLL は /Gz を通過したので実行してみました。
libpng をはずせばうまく動いたりするんでしょうか?
#define USEPNG
あたりをコメントアウトして、libpng のリンクをやめれば
PNG サポートをオフにできるかと思います。
この状態で、最適化してもうまく動くんであれば、libpng を
使うのを辞めて、GDIPlus に切り替えるという方針も・・・。

>結果は起動中に「ページ違反」が発生。
>アドレスがいつもの落ちるアドレスと同じだったので
>もしかしたらこれが原因かも知れません。
怪しい。

>過去に私も libpng を使った事がありますが
>ファイル処理で関数ポインタを使う方法があります。
>このへんで呼び出し規約を間違ったりとか…?
libpng はずぅ〜っと、前にコンパイルしたものをそのまま
使っている(セキュリティは???)ので、
ちょっと考えてもいいのかもしれません。

>libpng のソ〜スを持ってきて -DPNGAPI __stdcall で
>ビルドして回避できないかと考えたりします。
>
>さらに pcidll.c の initialize() の
>char path[MAX_PATH];
>
>これだとパスが245文字以上のフォルダで実行されると
>path[] にはファイル名も入るのでバッファが
>オ〜バ〜フロ〜してしまう可能性があると思います。
>(ファイル名が固定なので確立はかなり低いですが…)
Windows って 256 文字以上のパスって基本的に実現できないんですよね???
MAX_PATH は WinDef.h で 260 と定義しているので大丈夫だと信じています。

>ではでは。
なんだか、神の香りがしてきた今日この頃です。
一段落したら、Special Thanks コーナーに追加させていただきますね。

libpng は疑ったことが一度もありませんでした。
この件が解決すれば、今まで動かない〜とレポートしてくださった方の環境でも動くようになるのかも。

【1953】Re:呼び出し規約か…?
←back ↑menu ↑top forward→
 DULL WEB  - 06/3/22(水) 22:57 -

引用なし
パスワード
   ▼ひよひよさん:
>libpng をはずせばうまく動いたりするんでしょうか?
>#define USEPNG
>あたりをコメントアウトして、libpng のリンクをやめれば
>PNG サポートをオフにできるかと思います。
>この状態で、最適化してもうまく動くんであれば、libpng を
>使うのを辞めて、GDIPlus に切り替えるという方針も・・・。
おっ、簡単にPNGは外せるんですね。
さすがにソ〜スを追うのがひんどくなってきてまして(^_^;
明日、試してみます。

>>これだとパスが245文字以上のフォルダで実行されると
>>path[] にはファイル名も入るのでバッファが
>>オ〜バ〜フロ〜してしまう可能性があると思います。
>>(ファイル名が固定なので確立はかなり低いですが…)
>Windows って 256 文字以上のパスって基本的に実現できないんですよね???
>MAX_PATH は WinDef.h で 260 と定義しているので大丈夫だと信じています。
パスだけなら問題ないのですがドライバファイル名を後から追加してるんです。
sprintf(path,"%s\\%s",tmp,DRIVERFILENAME);
"\\Sysinfo.sys" を追加したら260を超える可能性はありますよね?

>この件が解決すれば、今まで動かない〜とレポートしてくださった方の環境でも動くようになるのかも。
直ってくれるように明日もテストします。
ではでは。

【1954】あぅあぅ (T_T)
←back ↑menu ↑top forward→
 DULL WEB  - 06/3/23(木) 22:04 -

引用なし
パスワード
   ▼ひよひよさん:

libpng を外してもダメでした。
でもスタックが狂っているのは確かなんですよね…。

過去にも報告があるようですが、
この「落ちる」現象はNT系でも起こるのでしょうか?

【1955】Re:あぅあぅ (T_T)
←back ↑menu ↑top forward→
 ひよひよ  - 06/3/23(木) 22:09 -

引用なし
パスワード
   ▼DULLさん:
>▼ひよひよさん:
>libpng を外してもダメでした。
>でもスタックが狂っているのは確かなんですよね…。
残念。。。

>過去にも報告があるようですが、
>この「落ちる」現象はNT系でも起こるのでしょうか?
はい。Windows 2000 でも報告がありました。

気を取り直してリフレッシュ作業を進めてみます。
当面は、最適化なし化でしのぐことにします。

【1959】CrystalCPUID 4.7.4.295 試しました
←back ↑menu ↑top forward→
 DULL WEB  - 06/4/2(日) 22:34 -

引用なし
パスワード
   4.7.4.295 で正常動作する事を確認しました。
やはりオプションを変更すると動作するようです。

Turion機をマルチブ〜トにして Win2000 を入れてみました。
/o1ビルドで Win98SE では落ちるのに Win2000 では落ちませんでした。
ハ〜ドに依存というわけではないようです…(-_-;

またK8ブリッヂのネタで申し訳ないのですが
マルチプロセッサ環境では K8 のブリッヂが
複数存在する事がわかりました。

現在の処理は1つ目だけを初期化しているので
Opteron ×2以上のマルチプロセッサ環境だと
2つ目が初期化されない状態になると思います。

個人でOpteronは使う人は少ないので確認は難しいですが…

もし、2つ目以降も初期化するのであれば EnableK8FVID() の
_pciFindPciDevice の index をインクリメントして
みつからなくなるまで処理するだけで良いと思います。

for(i=0;i<32;i++){
  _pciFindPciDevice(,,index);
  if( みつからない ){
    break;
  }
  index++;
  // K8 Func3 の初期化
  // Bit2 を立てる
}

ニッチな部分は対応するかどうかビミョウですよね…
ではでは。

【1960】Re:CrystalCPUID 4.7.4.295 試しました
←back ↑menu ↑top forward→
 ひよひよ  - 06/4/3(月) 21:51 -

引用なし
パスワード
   ▼DULLさん:
>4.7.4.295 で正常動作する事を確認しました。
>やはりオプションを変更すると動作するようです。
動作確認ありがとうございました。

>Turion機をマルチブ〜トにして Win2000 を入れてみました。
>/o1ビルドで Win98SE では落ちるのに Win2000 では落ちませんでした。
>ハ〜ドに依存というわけではないようです…(-_-;
そうなんですよね・・・。
ホント不思議です。。。って、どこかにバグがあるんでしょうけど。

>またK8ブリッヂのネタで申し訳ないのですが
>マルチプロセッサ環境では K8 のブリッヂが
>複数存在する事がわかりました。
確かにそうですね。

>現在の処理は1つ目だけを初期化しているので
>Opteron ×2以上のマルチプロセッサ環境だと
>2つ目が初期化されない状態になると思います。
>
>個人でOpteronは使う人は少ないので確認は難しいですが…
>
>もし、2つ目以降も初期化するのであれば EnableK8FVID() の
>_pciFindPciDevice の index をインクリメントして
>みつからなくなるまで処理するだけで良いと思います。
>
>for(i=0;i<32;i++){
>  _pciFindPciDevice(,,index);
>  if( みつからない ){
>    break;
>  }
>  index++;
>  // K8 Func3 の初期化
>  // Bit2 を立てる
>}
>
>ニッチな部分は対応するかどうかビミョウですよね…
>ではでは。
ご提案ありがとうございました。
ちょっと検討してみます。動作確認は・・・無理だよなぁ(笑)

DULL さんのサイトを見させていただいたのですが、かなりマニアックな情報を扱われているんですね。PC-98 関連ネタが特に。

今後ともよろしくお願いいたします。
遅くなりましたが、リンクさせていただきました。

【1961】Re:CrystalCPUID 4.7.4.295 試しました
←back ↑menu ↑top forward→
 DULL WEB  - 06/4/4(火) 21:15 -

引用なし
パスワード
   ▼ひよひよさん:
>DULL さんのサイトを見させていただいたのですが、かなりマニアックな情報を扱われているんですね。PC-98 関連ネタが特に。
そこに反応するとはっ!?
ちょっとビックリしました(笑)
学生時代はI/Oポ〜トを叩いてはリセットする毎日でした。
アレはその記録なのでしょう(多分)。

今はかなりマニアックネタは控えていますが、
近いうちにTurion64レポ〜トを作りたいなと思っています。

最近の自作情報は某巨大掲示板サイトに書き込みされるので
ネットを検索しても情報がほとんどみつかりません。
悲しい限りです。

VT8237RとVT8237R Plusの違いとかマイナ〜な情報も
扱っていきたいと思います。
ではでは。

【1962】Re:CrystalCPUID 4.7.4.295 試しました
←back ↑menu ↑top forward→
 ひよひよ  - 06/4/4(火) 22:13 -

引用なし
パスワード
   ▼DULLさん:
>▼ひよひよさん:
>>DULL さんのサイトを見させていただいたのですが、かなりマニアックな情報を扱われているんですね。PC-98 関連ネタが特に。
>そこに反応するとはっ!?
>ちょっとビックリしました(笑)
>学生時代はI/Oポ〜トを叩いてはリセットする毎日でした。
>アレはその記録なのでしょう(多分)。
I/Oポートとか割り込みとかそういう概念が理解できたのは本当に最近の話ですし、PC-98 を使っていた頃(高校時代)はプログラムしたいなぁ〜とか思いつつ RPG ツクールとかで遊んでいた口なので。

CrystalCPUID のデバッグ関連では大変お世話になりました。正直、あんな腐れソースにもかかわらず、アレコレ検討していただけて光栄です。DARU/K8COOL-ON! の開発も頑張ってください。(K8環境が今なくて試させてもらっていないのですが・・・)

【1963】Re:CrystalCPUID 4.7.4.295 試しました
←back ↑menu ↑top forward→
 DULL WEB  - 06/4/5(水) 21:58 -

引用なし
パスワード
   ▼ひよひよさん:
>I/Oポートとか割り込みとかそういう概念が理解できたのは本当に最近の話ですし、PC-98 を使っていた頃(高校時代)はプログラムしたいなぁ〜とか思いつつ RPG ツクールとかで遊んでいた口なので。
あ〜、年齢が近いかも知れませんね。

>CrystalCPUID のデバッグ関連では大変お世話になりました。正直、あんな腐れソースにもかかわらず、アレコレ検討していただけて光栄です。DARU/K8COOL-ON! の開発も頑張ってください。(K8環境が今なくて試させてもらっていないのですが・・・)
私とソ〜スの書き方が似ていたのでそれほど違和感なく読めました。
シンプルソフトしか作っていないので巨大ソ〜スのトレ〜スには苦労しましたが(^_^;
今後は時間のある時にデバッグして/O1でも動作できるようにしたいですね。

あとで DARU/K8COOL-ON! のソ〜スを送りま〜す。
ではでは。

【1964】Re:CrystalCPUID 4.7.4.295 試しました
←back ↑menu ↑top forward→
 ひよひよ  - 06/4/7(金) 17:16 -

引用なし
パスワード
   ▼DULLさん:
>▼ひよひよさん:
>>I/Oポートとか割り込みとかそういう概念が理解できたのは本当に最近の話ですし、PC-98 を使っていた頃(高校時代)はプログラムしたいなぁ〜とか思いつつ RPG ツクールとかで遊んでいた口なので。
>あ〜、年齢が近いかも知れませんね。
私は27ですよ。(って結構いい歳になってきたんだなぁ・・・)

>>CrystalCPUID のデバッグ関連では大変お世話になりました。正直、あんな腐れソースにもかかわらず、アレコレ検討していただけて光栄です。DARU/K8COOL-ON! の開発も頑張ってください。(K8環境が今なくて試させてもらっていないのですが・・・)
>私とソ〜スの書き方が似ていたのでそれほど違和感なく読めました。
>シンプルソフトしか作っていないので巨大ソ〜スのトレ〜スには苦労しましたが(^_^;
>今後は時間のある時にデバッグして/O1でも動作できるようにしたいですね。
>
>あとで DARU/K8COOL-ON! のソ〜スを送りま〜す。
あんりがとうございます。

76 / 376 ツリー ←次へ | 前へ→
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索 ┃設定 ┃ホーム  
ページ:  ┃  記事番号:   
51982
(SS)C-BOARD v3.8(とほほ改ver2.1) is Free