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


HSPTV!掲示板


未解決 解決 停止 削除要請

2024
0502
DrakujiLinux・RPiのhttploadとhttpinfoについて不都合報告8解決


Drakuji

リンク

2024/5/2(Thu) 14:51:20|NO.101650

お世話になっております、Drakujiです。

Linux・Raspberry Pi版のHSPにて、http系の不都合について報告します。

1回目はhttpからファイルのダウンロードができますが、
2回目同じ処理内容でファイルをロードすると、0byteでロード完了となり、
ファイルが正しく取得できませんでした。

検証環境は以下です。
・Linux PC (RaspberryPi OS (x86) Bullseye)
・RaspberryPi2 (RaspberryPi OS 32bit Bullseye)

以下、OpenHSPのサンプルを改造して2回繰り返す処理にしたものです。

#include "hsp3dish.as" url="http://www.onionsoft.net/img/onibtn.gif" fname ="onibtn.gif" //1回目の保存ファイル名 fname2 ="onibtn2.gif" //2回目の保存ファイル名 times = 0 *loadset times++ httpload url if stat : goto *bad //正しくリクエストができなかった *main //結果待ちのためのループ httpinfo res,HTTPINFO_MODE if res = HTTPMODE_READY : goto *comp if res <= HTTPMODE_NONE : goto *bad await 50 goto *main *bad //エラー httpinfo estr,HTTPINFO_ERROR dialog "ERROR "+estr stop *comp //DOWNLOAD 完了 httpinfo buf,HTTPINFO_DATA httpinfo size,HTTPINFO_SIZE if times == 1{ bsave fname,buf,size redraw 0 color 0,0,0:pos 0,0 mes "["+fname+"] saved." redraw 1 await 1000 goto *loadset } if times == 2{ bsave fname2,buf,size redraw 0 color 0,0,0:pos 0,0 mes "["+fname2+"] saved." redraw 1 await 1000 stop }
以上。



この記事に返信する


zakki

リンク

2024/5/2(Thu) 19:40:08|NO.101654

libcurlの使い方をミスってたみたいです。

後で検証・修正するつもりですが、急ぎならmcurl回りを削除・curl_easy_への差し替えで多分動くようになると思います。
https://github.com/onitama/OpenHSP/blob/master/src/hsp3dish/linux/webtask_linux.cpp#L55



Drakuji

リンク

2024/5/2(Thu) 20:17:25|NO.101655

zakkiさん
早速のご回答ありがとうございます。

急ぎではないのでゆっくりで大丈夫です。
まだまだ不慣れでして、投稿内容を参考に、できそうな作業であれば挑戦してみます。



zakki

リンク

2024/5/6(Mon) 19:19:46|NO.101674

Ubuntu 22.04 x86_64だとこの1行追加で大丈夫でした。
多分ラズパイでも大丈夫だと思います。

https://github.com/onitama/OpenHSP/pull/34/files#diff-dba98a646cdf777e45504c504462e248a93995838903dbd893d73c79cda0bad2R222



Drakuji

リンク

2024/5/7(Tue) 04:43:24|NO.101682

zakkiさん

早速確認させていただきました。
上記のonibtn.gifを2回読み込むプログラムは正常に動作したことをx86環境で確認できました。

同じ処理に近いプログラムを私どもで作っているプログラムで実行したところ、
以下のエラーが発生しました。
double free or corruption (out)
Aborted

その後エラーでプログラムが落ちる問題箇所を調査したところ、
52.6KiBぐらいのファイルはダウンロードできましたが、
ファイルサイズの大きい64.6kiBぐらいのファイルをダウンロードしたときに
以下及びいくつか文言エラーが出てうまく行きませんでした。
munmap_chunk(): invalid pointer
Aborted

double free or corruption (!prev)
Aborted

free(): invalid next size (normal)
Aborted

以下ソースを添付いたします。

#include "hsp3dish.as" //以下コメントを変更して検証してみてください url="https://drakuji.main.jp/images/call4.wav" //エラーで落ちる 64.6KiB ;url="https://drakuji.main.jp/images/drakuji.wav" //問題なし 52.5KiB fname ="test_wav" //1回目の保存ファイル名 fname2 ="test2.wav" //2回目の保存ファイル名 times = 0 *loadset times++ httpload url if stat : goto *bad //正しくリクエストができなかった *main //結果待ちのためのループ httpinfo res,HTTPINFO_MODE if res = HTTPMODE_READY : goto *comp if res <= HTTPMODE_NONE : goto *bad await 50 goto *main *bad //エラー httpinfo estr,HTTPINFO_ERROR dialog "ERROR "+estr stop *comp //DOWNLOAD 完了 httpinfo buf,HTTPINFO_DATA httpinfo size,HTTPINFO_SIZE if times <= 1{ bsave fname,buf,size redraw 0 color 0,0,0:pos 0,0 mes "["+fname+"] saved."+size redraw 1 await 1000 goto *loadset } if times >= 2{ bsave fname2,buf,size redraw 0 color 0,0,0:pos 0,0 mes "["+fname2+"] saved."+size redraw 1 await 1000 stop }
よろしくお願いいたします。



Drakuji

リンク

2024/5/7(Tue) 10:41:21|NO.101683

すみません、
上記ソースの1回目の保存ファイル名部分ですが、タイプミスしていました。
問題の症状は依然変わりありません。


【誤】 fname ="test_wav" //1回目の保存ファイル名 【正】 fname ="test.wav" //1回目の保存ファイル名

です。
よろしくお願いいたします。



zakki

リンク

2024/5/7(Tue) 13:20:35|NO.101685

バッファサイズ計算で見ている変数が間違っていてバッファーオーバーランしてたを修正しました。



おにたま(管理人)

リンク

2024/5/7(Tue) 23:54:25|NO.101686

>Drakuji さん
>zakki さん

Linux・Raspberry Pi版のOpenHSPについてご報告と修正ありがとうございます。
こちらで確認してgithubリポジトリにマージさせて頂きました。



Drakuji

リンク

2024/5/8(Wed) 11:27:58|NO.101687

zakkiさん
おにたまさん

対応ありがとうございます。
こちらでも検証確認し、x86、Raspberry Pi共に正常に処理され、解決しました。



記事削除

記事NO.パスワード
(質問が解決したスレッドは他の利用者に活用してもらうため、削除しないようお願いします)

NO.101650への返信

マスコット

好きなマスコットを選んでください。

名前

e-mail
HOME
  1. 初めて利用する方は、HSP3掲示板の使い方をお読みください。
  2. 不要部分の多い長いスクリプトの投稿は ご遠慮ください。
  3. 書き込みは自動改行されません。適度に改行を入れてください。
  4. スクリプトは小文字の<pre>〜</pre>で囲むと見やすく表示できます。

削除用パスワード

エラー発生時、再送信すると二重送信になることがあります。
回答が得られたら、お礼書き込み時に[解決]チェックしてください。
SPAM防止のためURLから始まる文章は投稿できません。
SPAM防止のため英文字のみの本文を投稿することはできません。

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