HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0308
vowgosub先で数値型変数にstrlenすると無言で終了する17解決


vow

リンク

2022/3/8(Tue) 16:19:37|NO.95657

以下のスクリプトのようにエラー表示されずに終了してしまうため、デバッグに非常に時間がかかり困っています。
回避方法などありますでしょうか。

objsize 200,30 button "gotoの場合はエラー6表示される",*aaa button gosub "gosubすると無言で終了",*aaa stop *aaa dim a,1 mes strlen(a) return



この記事に返信する


zrs90(5さい)

リンク

2022/3/8(Tue) 17:45:56|NO.95658

このプログラム、わざと
間違えて書いてますか?

dim a,1
mes strlen (a)

数値で宣言してある配列変数を
文字変数を代入して出力しないと
ダメな命令に、しかも配列変数でない
変数使ってますが。

ただ、プログラムをそのまま実行すると
ウチのhspは、3.6を使ってますが
両方とも、エラー6で引っかかります。
お使いのhsp3が3.6のβ2あたり?の前の物では?



vow

リンク

2022/3/8(Tue) 20:28:39|NO.95659

ありがとうございます。
gosubのジャンプ先でエラーが表示されないことを示すために間違えて書いています。

そうですか、エラーが出ますか。
当方もv3.6で、念の為に新たにDLし、2台のPCでエラーが出ずに終了してしまう事を確認しました。



す²

リンク

2022/3/8(Tue) 20:42:21|NO.95660

こちらは、HSP3.6(正式版)で、
.hspでも.exeでもerror6が確認できました。



沢渡

リンク

2022/3/8(Tue) 21:23:24|NO.95661

当方(Windows11 64bit)でも両方ともエラーが出ましたが、もしかするとOSが64bitか32bitかも
関わってくるかもしれません。
今回のケースと似たようなケースで「onexit gosubを使った時、終了時処理の内容次第では
C++のランタイムエラーが発生する」という現象が過去に確認されていますが、
この現象が発生するかどうかに64bitか32bitが関わっていたような記憶があるので。



Drip

リンク

2022/3/8(Tue) 21:47:14|NO.95662

Dripです。
vowさん、こんにちは。

ご報告の不具合はHSPに古来からあるbutton gosub混在時のネストに関わるバグのようで、私も過去に何度か報告をしています。
http://hsp.tv/play/pforum.php?mode=pastwch&num=87482
報告はしておりますが、都合上どうしても改善することが難しく、現在も修正に至っていないようです。
(vowさんであれば、上記の過去のスレッドで私が報告したエラーレポートを再現できるのではないでしょうか?)

ご使用のPCの環境依存で様々な振る舞いを示すため、正常にHSPのエラーを表示するものもあれば、VCのランタイムエラーで落ちたり、何もエラーを吐かずに終了したり、何が原因で落ちているのかわからずデバッグが大変ですよね。
昨今のPCではクラッシュしているものの何もエラーを表示せずMicrosoftにクラッシュレポートを送信だけして終了、というパターンが目立って来ており、HSPのクラッシュレポートが凄い量になっていそうな気がして何だか漠然と心配になるんですが;;
サイレントクラッシュであっても、Windowsのイベントログにエラーが記録されている可能性が高いかと思いますのでそちらも確認してみてください。


兎も角、本件に関しては作品の開発サイドでバグが発生しないように努めるしかありません。
幸いな事に、スクリプトが正常である限り作品(の利用者側)に悪影響はないようですので、もし複数のPCをお持ちであれば、環境を切り替えるなどして凌いでいくしかないのが現状です。
有志の方への情報提供のために動作環境を書き残していくとデバッグや原因究明の一助になるかもしれません。

また、vowさんのように異常動作が発生しないばっかりに、このような不具合にピンと来ない方が作成されたプログラムは重大な不具合を含んだまま放置されてしまう恐れがあるため危険です。
なのでvowさんのようなクラッシュが発生する環境は、少なくとも異常動作を感知できる環境という意味でむしろ貴重なものと考えられます。
私が所有するクラッシュしない環境(今回で言う所のエラー6が正常に表示されてしまう環境)で開発されたソフトウェアを運用開始したところ、全体の1割程度のユーザーからクラッシュの報告が相次ぎ、原因の特定と修繕に相当な時間と手間を要した経験があります。
この不具合はgosubとgotoのbuttonやonexitが混在する状況下で発生しやすいことが確認されており、そのようなシステムは設計しないようにして対処するよう努めてみてください。



vow

リンク

2022/3/8(Tue) 21:59:07|NO.95663

みなさんありがとうございます
複雑な問題のようですね…
もう少し状況を整理して、改めてご報告いたします。



zrs90(5さい)

リンク

2022/3/9(Wed) 09:27:10|NO.95664

vow さん エラーの件、大変失礼しました。
普通、書かない感じのソースでしたので
勘違いしました。すみません。

す さん、沢渡さん、Drip さん
ありがとうございました。
(※スマホだと、2乗の記号、変換で
出せないんです。す さんごめんなさい。)

私が、3.6β2辺りと書いたのは
沢渡さん、Dripさん が指摘された gosub 関係で
hsp3に修正が入っていたからです。
(※history.txt 参照。β2、β3で、修正が入っています)

この事から、バージョンの問題かな?
と思いましたが、違ってましたね...

ちなみに、私のPC の場合ですが
(Windows7pro 32ビット)
osと別のドライブに、3.4、3.5、3.6
(※全て正式版)が入ってるので
再チェックした所、全バージョンで
両方ともエラー6 で、引っかかりました。

ちなみに、hsp3のβ版はインストールした事
はないです。


●追記
私が思い付いたのは、レジストリ関係?位
でしょうか?

もう1つ、気になった事があります。
このプログラムを、コンパイル+実行と、exe化
した時、出来る中間ファイル等は
どういった物が出来るのでしょうか?
(obj、start.ax、packfile、hsptmp.exe含む)

私達のPC (※両方ともエラーになる物)と
バイナリーエディタを使って、比較したら
何らかの、原因の手がかりにならないでしょうか?

ただ、hsp3側で、生成されるファイル等に
私達のPCの情報の様な物が、決まった位置以外で
入っているなら、比較は難しいですが...

後、ここからは、最低でも、OpenHSP の知識が
必要になるので、私程度では何も出来ません。



おにたま(管理人)

リンク

2022/3/9(Wed) 20:26:47|NO.95668

>vow さん

ご報告ありがとうございます。
エラー表示が出ない件でお手数おかけしています。
Dripさんが書かれているように、残念ながらこちらの環境ではエラーが再現できないため、原因がまだ特定できていません。
参考までにWindowsのバージョンやPCの環境を聞いてもいいでしょうか。
また、WindowsのイベントビューアーでApplicationログにhsp3.exeのエラーが記録されているようならば、そちらの例外コードなどの内容も見れると参考になります。
こちらでも引き続き調査していきたいと思います。



TOMATO

リンク

2022/3/9(Wed) 21:33:50|NO.95669

違うとは思いますが、一応…

"gosubすると無言で終了" ボタンをダブルクリックするとか、
マウスの左ボタンがチャタリングしている環境だと、それっぽく再現しますね。

1回目のボタン押下時にHSPのエラーメッセージダイアログは表示されているものの、
モードレスウィンドウのため、2回目のボタン押下時にダイアログが裏に引っ込んでしまいます。
その状態になるとサイレントで落ちるようです。

Windowsの設定などをいじっていないのであれば、
メッセージダイアログが表示されるときには「ポーン」という音が聞こえるはずなので、
vowさんの環境で "gosubすると無言で終了" ボタン を押下したときには
「ポーン」という音が聞こえるのかが気になりました。



usagi

リンク

2022/3/9(Wed) 22:13:43|NO.95671

私の環境ではTOMATOさんと同じですね。

どちらも正しくHSPのエラーダイアログがでますが、
エラーメッセージ中にgosubすると落ちます。
(モードレスダイアログなので、エラーで止まってるはずなのに押せてしまう)

gotoの方でエラーダイアログ出した状態でgosubのボタンを押しても落ちるので、
エラー停止中に、gosub出来てしまう事が原因ですかね?

onerror追加してstopさせている状態だとダイアログも出ないからか
ダブルクリックしても落ちなかったです。



zrs90(5さい)

リンク

2022/3/9(Wed) 23:28:15|NO.95672

TOMATO さんの解説については、
ボタンのチャタリング...
簡単に説明すると、gosub のボタンを
連打した状態ですね。

usagiさんの解説については、エラーダイアログ
が出ていても、操作が出来てしまう為
エラー判定処理を追加して、stopさせると
言う事ですね。

TOMATO さん、usagiさん のご指摘の通り
ウチの環境下でも、プログラムが『無言』で
落ちる事が、確認出来ました。

エラー時のダイアログについては、
おにたま さんに、修正して頂いた方が
良いのか、私では全く分かりませんが
こういった処理を行う場合のサンプル
の様な物が、あると良いと思いました。

TOMATO さん、usagiさん
ありがとうございました。



vow

リンク

2022/3/10(Thu) 13:43:06|NO.95675

みなさんいろいろとご意見ありがとうございます。

>Drip様
> http://hsp.tv/play/pforum.php?mode=pastwch&num=87482
これ質問者(初心者)わたしです。その節は最後にレスを頂いているにも関わらずスルーしてしまい申し訳ありませんでした。
また、スレッド自体を失念しており当時と名前が変わってしまい失礼しました。
今ためしたところ、NO.87482、NO.87501ともに正常動作しました(ランタイムエラー出ず)。

>す²様
テストありがとうございます。

>沢渡様
ご指摘の通り32bitではHSPエラーが出ます。

>zrs90(5さい)様
>勘違い
こちらこそ分かりづらいスクリプトで申し訳ありません。また、考察ありがとうございます。

>TOMATO様
ボタンのダブルクリックはしておらず、また「ポーン」音は聞こえません。
このあたりは後述の動画をご覧いただければと思います。

>usagi様
テスト、考察ありがとうございます。

>おにたま様
いつもHSPを使わせていただいております。ありがとうございます。

普段あまり使用していないPCで、HSP3.6(インストーラ版)を本日DLしインストールしました。
環境等につきましては、CPUZの出力txt、イベントビューアのログ、動作時の動画をアップロードしましたのでご確認をお願いいたします。

https://drive.google.com/drive/folders/1cB8fpvsE4BJ_clXMU4b9YEhxIfqghnr0?usp=sharing

なお、問題のスクリプトをexeにした場合、以下のようになります。
 通常のランタイム→ 同様に無言で終了 
 #packopt runtime "hsp3c.hrt"→ 無言ではなくVCランタイムエラーが出ます。

 Microsoft Visual C++ Runtime Library
 Runtime Error!
 Program: C:\Users\user\Documents\c.exe
 This application has requested the Runtime to terminate it in an unusual way.
 Please contact the application's support team for more information.



TOMATO

リンク

2022/3/10(Thu) 18:36:50|NO.95676

動画見ました。
関係ないかもですが、標準環境と違うなぁと思うところがいくつか。

・HSPのscreen 0のタイトルバーのテキスト(Hot S ... ver 3.6)の余白がほぼない
・エラーメッセージダイアログのダイアログが大きめ
・ボタンのテキストが大きめ

と感じました。
Windows側 の設定などで文字サイズを大きくする設定にしてたりします?

[Windows 10] アイコンや文字の大きさを変更する方法を教えてください。
https://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?PID=4310-9005



おにたま(管理人)

リンク

2022/3/10(Thu) 22:27:18|NO.95677

>vow さん

詳細なレポートをありがとうございます。
環境やバージョンについては、大きな問題ないかと思います。
TOMATOさんのご指摘にあったエラーダイアログが出ている際にボタンを押すと落ちる現象は確認できたので、
こちらの修正を行ったバージョンでテストして頂いても宜しいでしょうか。
https://www.onionsoft.net/hsp/file/hsp3_220310.zip

こちらの実行ファイルをHSP3.6インストールフォルダ(C:\hsp36)に上書きしてお使い頂けます。
HSP3.7β1相当になりますが、他のファイルはそのままで問題ありません。
こちらでも同様に落ちるようであれば、また別な原因ではないかと思われます。



vow

リンク

2022/3/10(Thu) 22:45:36|NO.95679

>おにたま様
今、件の環境とは異なるPCで全く同じ現象(無言で終了)が発生し頭を抱えていたのですが、
修正いただいたファイルと差し替えたところ、HSPエラーが表示されました。
非常に嬉しいです。。。ありがとうございます。
明日以降、もとの環境で試して改めてご報告いたします。

>TOMATO様
ご指摘のおかげで(おそらく)解決しました。ありがとうございました。



vow

リンク

2022/3/11(Fri) 16:15:15|NO.95680

当初の環境で、コンパイル+実行とexeの両方で正常にHSPエラーの表示されることを確認しました。
おにたま様、みなさま、誠にありがとうございました。



おにたま(管理人)

リンク

2022/3/11(Fri) 20:35:28|NO.95682

>vow さん

ご確認ありがとうございました。また、助言頂いた他の皆様もありがとうございます。
ひとまず次回の更新ではこちらの修正を反映させたいと思います。



ONION software Copyright 1997-2023(c) All rights reserved.