logo
 
WebChain/2 Previous Ramdom Jump WebChain/2 Home Next
 メインメニュー
 サイト内検索

検索オプション
 ログイン
ユーザID または e-mail:

パスワード:

IDとパスワードを記憶

パスワード紛失

新規登録
 IRC(チャット)
#OS/2:*.jp
楽しみ方はこの辺参照.
フォーラム一覧   -   トピック一覧
   アプリ
     Cairo support for OS/2
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
chagrin
投稿日時: 05/08/27 00:20
Not too shy to talk
登録日: 03/01/27
居住地: yokohama, japan
投稿: 39
Re: Cairo support for OS/2
最新カーネルを拾ってきてはあるものの,試している娘にいれているのは,
まさに,14.100o_W4 debug version + cyrix patch でした.
OS は連座せず,アプリケーションだけが処刑される,のかな.
真面目に処理しようとする副作用の可能性がありますね.


#関係ないけど,
>これもひとえに自分のおかげです(バキ

うんうん,その通りだと思いますよん.
orca
投稿日時: 05/08/27 07:17
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: Cairo support for OS/2
testcaseの kernelをいくつか揃えてたけど, ソレでもダメでした。
uni20050129.zip
uni20050317.zip
起動時に, 画面の左下が替わってるので置き換えは大丈夫のよーだけど, 結果は相変わらず。

chagrinさんの環境では直ったのでしょーか。
sava
投稿日時: 05/08/28 03:38
Quite a regular
登録日: 03/01/27
居住地: ちば…たぶん
投稿: 41
Re: Cairo support for OS/2
・-fpreset と -reassign とでステータスレジスタの値が異なるか
・タグワードの内容(-tag オプションで見れます)

といったあたりはいかがでしょうか…。
chagrin
投稿日時: 05/08/28 03:40
Not too shy to talk
登録日: 03/01/27
居住地: yokohama, japan
投稿: 39
Re: Cairo support for OS/2
直りません.

カーネルを 14.62_W4 (とっても古い)と 14.104a_W4 に入れ替えてみましたが,
結果は全く変わりません.同じところで同じエラー.

alpref.inf によると,「If the value is too large to represent as an integer,
an I exception is raised. The masked response is to write the most negative
integer to memory.」とのことです.エラーになるのが正しいと読めます.
なぜ,環境によっては動くのだろう...

環境によっては動いてしまうものの,本来は orca さんが取ったような
レンジチックを行うのが,あるべき姿なのかも.


ちなみに,shapes3.exe, printf("%d \n", (long)tmp);
の double から long へのキャストの実体は以下の通り.

010597 FLD qword ptr[ESP+48h]
01059B CALL _000109D4
0105A0 FISTP dword ptr[ESP+50h] ; ここがエラーになる.

_000109D4 PUSH 00000C3Fh ; chop, 24bit, all exception masks
0109D9 FNSTCW word ptr[ESP+02h]
0109DD FLDCW word ptr[ESP]
0109E0 FRNDINT
0109E2 FLDCW word ptr[ESP+02h]
0109E6 LEA ESP,[ESP+04h]
0109EA RET

#あれ,-tag をつけると動くよ.出力はすべてempty.ますます訳が分からない.
sava
投稿日時: 05/08/28 04:56
Quite a regular
登録日: 03/01/27
居住地: ちば…たぶん
投稿: 41
Re: Cairo support for OS/2

chagrinさんは書きました:

#あれ,-tag をつけると動くよ.出力はすべてempty.ますます訳が分からない.


うわ、すいません。f[n]stenv は実行後に例外をマスクするんだった。制御ワードを書き戻さないとダメでした。

それはそれとして、逆アセンブルリストを見てすこし思ったことがあるのですが(FRNDINT で丸め込んでいるはずなのに、その後の FISTP でエラーが出るのがなんかヘン)、さすがにもう Cairo と全然関係ないように思えます…。
orca
投稿日時: 05/08/28 12:12
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: Cairo support for OS/2
-fpreset と -reassign とでステータスレジスタの値が異なるか

σ(^^) のトコでは, shapes3 -shapes -fpreset も shapes3 -shapes -reassign も まったく同じ内容れす。
そのときの FPU status word は 0x4021です。

んで, uni20050317.zipのカーネルは 14.103a だったはずなので, その後のカーネルもたぶんダメってことれすね。(T-T)

それはそれとして、逆アセンブルリストを見てすこし思ったことがあるのですが(FRNDINT で丸め込んでいるはずなのに、その後の FISTP でエラーが出るのがなんかヘン)

異常終了を引き起こす値は, 普通に doubleの直値として記述できないよーなので (普通に書くと異常にならない), そーゆートコも影響してるのかもです。
ソレは 8Byte 16進数では 0x53451c1041e27ecf だったです。


追記: cairoの話に持ってくと …
調べたところ, C言語では 浮動小数点数 → 整数への変換で, 範囲外なら その動作は未定義だそーれす。
もしソレが異常終了しても構わないってことなら, 今回のコレは cairoの問題と言えなくもないかも。
って, 言いがかりっぽい感じ。
achain
投稿日時: 05/08/30 17:55
Webmaster
登録日: 03/01/26
居住地: とーきょー じゃぺーん
投稿: 2597
Re: Cairo support for OS/2
どこに繋げれば良いのか悩んだ末,最後の投稿に繋げます.

いえね,ひところmozilla.os2ニュースグループで「MozillaやFirefoxがFP exception(SYS3183等)で落ちる」といった報告が多数あったんですよ.ただ今回のCairoと同じく私の環境では特に問題なかったので,真剣に話題を追っておらず,例のkernel更新のしばらく後に「Mozilla FP exception bugが直った」といった投稿を見たような気がしたので,「ああ,結局kernelが悪かったんだな」となんとなく思っておりました.

#長い前振りだ…

で,今回改めて調べてみたところ,MozillaのFP Exception BugはきっちりMozilla内で修正されておりました.関連するBugzilla項目を挙げておきます.
https://bugzilla.mozilla.org/show_bug.cgi?id=224487
https://bugzilla.mozilla.org/show_bug.cgi?id=280813

上のほうのバグのコメントから要約すると,「OS/2でなにがしかのシステムコールを行った際にFPコントロールワードが変化してしまうことがある.だから計算を行なう前にいちいちコントロールワードを設定することにした」といった感じでしょうか.

Cairoの問題もこれと同じだとすると,同じ手法を採用するしかないのかな.また私の環境で問題が出ないのはその「なにがしかのシステムコール」(←主にPM関係のようですが)がたまたまFPコントロールレジスタをいじらない環境/Fixレベル/組み合わせ…なのでしょうかね.
orca
投稿日時: 05/08/31 15:26
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: Cairo support for OS/2
雰囲気でゆーと, マスクが外れるのは仕方がないことって感じれすね。ホントかな。
「OS/2でなにがしかのシステムコールを行った際にFPコントロールワードが変化してしまうことがある.だから計算を行なう前にいちいちコントロールワードを設定することにした」といった感じでしょうか.

Cairoの問題もこれと同じだとすると,同じ手法を採用するしかないのかな.また私の環境で問題が出ないのはその「なにがしかのシステムコール」(←主にPM関係のようですが)がたまたまFPコントロールレジスタをいじらない環境/Fixレベル/組み合わせ…なのでしょうかね.


で, 環境で違うのは, ひとつには CPUがあるかもです。
FPUが, 前からのものと違い 別の用途に利用されたり(MMXとか), 一風変わったブツが追加されたり, そんなこんなで いつもマスクしてる訳にはいかなくなった … だとか。(あくまで想像だけど)
achain
投稿日時: 05/09/03 16:17
Webmaster
登録日: 03/01/26
居住地: とーきょー じゃぺーん
投稿: 2597
Re: Cairo support for OS/2
Orcaさん版cairo.zipをここに移しておきました.(古いのはoldサブディレクトリに移動してあります)
ただしこのOrcaさん版テストアプリ新バージョン,うちではSYS2070が出て起動しませんでした.アプリとcairo.dllとの辻褄が合っていないような….
09-03-2005  15:48:44  SYS2070  PID 0357  TID 0001  Slot 00c2
F:\TMP\CAIRO\FONT.EXE
FONT->CAIRO.190
182


さて,Cairo/2コミュニティってどこかに無いんでしょうか.問題点をDoodleさんに報告するだけならメールで良いのですが,オリジナルのCairo/2テストアプリでFP exceptionが出るのは我々(除くachain)だけなのか,それとも全世界的な問題なのか…も知りたいところ.
orca
投稿日時: 05/09/03 20:35
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: Cairo support for OS/2
achainさんは書きました:
Orcaさん版cairo.zipをここに移しておきました.(古いのはoldサブディレクトリに移動してあります)
ただしこのOrcaさん版テストアプリ新バージョン,うちではSYS2070が出て起動しませんでした.アプリとcairo.dllとの辻褄が合っていないような….

dllはコレでしょーか?
05-09-02 19:55 1209474 0 cairo.dll

さて,Cairo/2コミュニティってどこかに無いんでしょうか.問題点をDoodleさんに報告するだけならメールで良いのですが,オリジナルのCairo/2テストアプリでFP exceptionが出るのは我々(除くachain)だけなのか,それとも全世界的な問題なのか…も知りたいところ.

Cairo/2コミュニティーつったら, まずはココですね。
netlabs.org探しても見つからなかったし。

んで, この問題は ThinkPad T23なら起こる可能性が高い, のかもです。


追記: cairo/2じゃなく cairoコミュニティーなら, cairographics.orgML から http://lists.freedesktop.org/archives/cairo/ に辿り着くことできるです。
achain
投稿日時: 05/09/06 11:22
Webmaster
登録日: 03/01/26
居住地: とーきょー じゃぺーん
投稿: 2597
Re: Cairo support for OS/2
dllはコレでしょーか?
05-09-02 19:55 1209474 0 cairo.dll


すみません,展開したディレクトリに古いdllが紛れ込んでおりました.

さてニュースのほうにもコメントを付けましたが,cairo-1.0.0-os2-xxx.zipが差し替えられて,FP問題の対策が盛り込まれたものになっております.

動作テストよろしくです.
orca
投稿日時: 05/09/07 00:46
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: Cairo support for OS/2
正常に動いたです。
動作テストよろしくです.

で, その解説からすると もしかしてあちゃいんさんから伝えてもらったとかでしょーか? ありがとございます。
achain
投稿日時: 05/09/07 09:17
Webmaster
登録日: 03/01/26
居住地: とーきょー じゃぺーん
投稿: 2597
Re: Cairo support for OS/2
で, その解説からすると もしかしてあちゃいんさんから伝えてもらったとかでしょーか?

いえ,何もしてません….
同じようなトラブルがどこか見知らぬCairo/2コミュニティから報告されたか,それともDoodleさんがここを見てたか(笑).

まぁなんにせよ解決して良かったです.サンプルアプリ側でいちいちFPUを気にしなくちゃいけないのは難点ではありますが.
orca
投稿日時: 05/09/07 20:23
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: Cairo support for OS/2
achainさんは書きました:
同じようなトラブルがどこか見知らぬCairo/2コミュニティから報告されたか,それともDoodleさんがここを見てたか(笑).

なんとなく後者かな, みたいな気がするです (本人に確かめないと確証は得られないけど)。
んで, 今回のトラブルは解決したみたいだけど, 何かあったらここを紹介してもよいのかな, なんて思うです。

サンプルアプリ側でいちいちFPUを気にしなくちゃいけないのは難点ではありますが.

σ(^^) が疑ってるのは, 高速描画に関する技術れすね。そこで SIMDなブツをアレしてて, その関係上 FPUのマスクが影響を受けたとか。もちろん単なる臆測だけど。

# てゆーか, そんな技術ってあったっけ? (←ぉぃ)
sava
投稿日時: 05/09/12 00:17
Quite a regular
登録日: 03/01/27
居住地: ちば…たぶん
投稿: 41
Re: Cairo support for OS/2
いまごろですが私も試してみました。
以前のだと clock 以外で落ちていた実機(Duron700, xrjm15, SNAP PE)でもすべて動作しました。

結局こまめに(?)FPU の例外マスクするしかないんですかね…。
orca
投稿日時: 05/09/19 19:09
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: Cairo support for OS/2
> 結局こまめに(?)FPU の例外マスクするしかないんですかね…。

bugzillaのレポートを読んでいないのでアレだけど, OS/2が(つか IBMが) 対応してくれないから仕方なく, てことなら, もしかするとマスクを気にしなくてよい時期がくるかもです。 (望み薄 かも)

んで, アプリケーションのモデルが, 普段はマスクされてて必要に応じてマスクを取る → 普段はマスクされていなくて必要に応じてマスクする … に変わったのなら, マスクするしかないのかもです。
« 1 (2) 3
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Powered by IBM OS/2 Warp, Apache, PHP, MySQL and XOOPS Cube