Gauche:Bugs

Gauche:Bugs

Gaucheのversionと、できれば日付もいれといて下さい。日付は[[$date]]で入れられます。


reset/shift と guard の組み合わせで Assertion failed が発生する (0.9.9)

hamayama(2020/08/15 12:26:51 UTC): chaton のログ (2ヵ月前ですが。。。)
http://chaton.practical-scheme.net/gauche/a/2020/06/14

<サンプルのリスト>

hamayama(2020/08/15 12:26:51 UTC): pcdemo8.scm については、#716 で対策しました。
ただ、Assertion failed については 発生しなくなりましたが、想定していた動作とは違うかもしれない。

hamayama(2020/08/15 12:26:51 UTC): pcdemo10.scm については、
(reset (next)) を (reset (next) 1000) にすると、ghost continuation エラーが発生しなくなる。
どうも、guard が reset の 末尾位置にある場合、
部分継続によるジャンプ後にエラー処理して guard を抜けると、ghost continuation エラーになるもよう。
ただ、汎用的な修正方法については、ちょっと分からなかった。
(reset の末尾に強制的に何か挿入するようにしたら、ループ時にメモリリークした)

reset/shift と guard の組み合わせでメモリリークする (0.9.9)

hamayama(2020/06/02 09:08:38 UTC): 以下のページより。
http://chaton.practical-scheme.net/gauche/a/2020/05/30

<サンプルのリスト>

hamayama(2020/06/03 09:46:48 UTC): まずはログをたくさん入れてみました。

hamayama(2020/06/04 10:52:30 UTC): うーむ。pcdemo3.scm については、#529 を revert していくとリークしなくなる。
ただ、そうすると、#529 で修正した問題 (#477 等) が復活する。
両方を解決する方法は、まだ見つからない。。。
印象としては、pcdemo3_debug.scm の wrap-2 内の guard における
vm->handlers (vm.c の with_error_handler の辺り) が、
どこからか参照されていて、GC で回収されない感じ。

hamayama(2020/06/04 10:52:30 UTC): pcdemo4.scm については、#529 を revert してもリークする。
こちらは、0.9.5 でもリークするので、何か別の問題があるもよう。

hamayama(2020/06/05 08:11:01 UTC): pcdemo3.scm については、#696 で対策しました。

hamayama(2020/06/05 08:14:40 UTC): pcdemo4.scm については、#696 を適用後に、
wrap 内の reset の後ろに何か無意味な命令 (数値の1000とか) を入れると、リークしなくなるもよう。
(define (wrap thunk) (lambda () (reset (thunk)) 1000))
(0.9.8 以前でも有効。0.9.9 は不可)
ただ、原因はよく分からない。。。(ログを追加していたら直ってしまった)

GitHub Actions の failure (0.9.9 リリースより後の HEAD)

hamayama(2020/02/25 09:30:59 UTC): Gauche のリポジトリに GitHub Actions の設定を追加して、
自動ビルドのワークフローを動かしているのですが、
現状、しばしば failure が発生しています。

まずは、failure の事例を、以下にまとめてみました。
https://gist.github.com/Hamayama/3cc0e9c0c5283e7fc422360c6e5bd372

全体的に、並列処理とディスクの書き込み (書いてすぐは読めない?) に、
何かあるような印象ですが。。。

hamayama(2020/05/17 12:02:44 UTC): 最近 MinGW の gcc のバージョンが 10.1 になり、ビルドが通らなくなっています。
リンカで multiple definition of `GC_xxx' というエラーがたくさん出ていて、どうも原因はこれのようです。
https://gcc.gnu.org/gcc-10/porting_to.html
まずは情報として挙げておきます。

Scm_RegExec の引数の数が変わった (0.9.9)

hamayama(2019/12/19 10:28:22 UTC): どうもこの関数を使っている外部ライブラリがあって、
とりあえず以下のようにしましたが。。。

#if defined(SCM_REGEXP_MULTI_LINE)
               // for Gauche 0.9.9 or later
               && SCM_REGMATCHP(Scm_RegExec(SCM_REGEXP(skip_regex), SCM_STRING(next_line_str), SCM_UNDEFINED, SCM_UNDEFINED))) {
#else
               // for Gauche 0.9.8 or earlier
               && SCM_REGMATCHP(Scm_RegExec(SCM_REGEXP(skip_regex), SCM_STRING(next_line_str)))) {
#endif
More ...