Gauche:Bugs:log0
Gaucheのバグ報告過去ログ。Epochから2002/7/19まで。
新しいバグ報告はGauche:Bugsにどうぞ。
- ここにバグレポートを書いていいですか? --nobsun
- Gauche-0.5.2 で ``(write* #())'' が意図した通りの出力をしません。--HAbe
- 剰余の演算結果がおかしいような気がします。version 0.5.2です。 --y.hana
- call-with-values (2002/04/30 03:47:37 PDT) --nobsun
- begin 2002/05/02 00:20:59 PDT --HAbe
- Gauche 0.5.7 + Gauche-gl failed to link 2002/07/03 23:05
- 改行のない出力 (2002-07-18)
ここにバグレポートを書いていいですか? --nobsun
$ gosh -V Gauche scheme interpreter, version 0.4.12 [euc-jp] $ gosh gosh> (+ 10 (if #t 0 1)) 0 ;; 10 が期待する値
- ショック。こんな簡単なエラーを今まで見逃していたとは… コンパイラの最適化のバグでした。 -fno-inlineをつけてgoshを起動 すれば出現しません(が、遅くなります)。次リリースで直します。--Shiro
Gauche-0.5.2 で ``(write* #())'' が意図した通りの出力をしません。--HAbe
- 御指摘ありがとうございます。src/write.c 中のwrite_circular_vectorを 次のものに置き換えてください。このコードは次のリリース0.5.3に反映します。--Shiro
static void write_circular_vector(ScmObj obj, ScmPort *port, ScmWriteContext *ctx) { int len = SCM_VECTOR_SIZE(obj), i; ScmObj *elts = SCM_VECTOR_ELEMENTS(obj); if (len > 0) { for (i=0; i<len-1; i++) { write_circular(elts[i], port, ctx); SCM_PUTC(' ', port); } write_circular(elts[i], port, ctx); } SCM_PUTC(')', port); }
剰余の演算結果がおかしいような気がします。version 0.5.2です。 --y.hana?
foo% gosh gosh> (modulo (* 989616731927823 989616731927823) 1074786564930257) 1074786564930252 gosh> (exit) foo% irb irb(main):001:0> 989616731927823 * 989616731927823 % 1074786564930257 1074786564930256 irb(main):002:0> ^D
- ども。bignumの実装のバグでした。多分今夜中にリリースする version 0.5.3で直っています。 (2002/04/16 02:10:17 PDT) -- Shiro
call-with-values (2002/04/30 03:47:37 PDT) --nobsun
Reference manual の記述とは違う動作のようです。
gosh> (gauche-version) "0.5.3" gosh> (call-with-values (values 1 2) cons) *** ERROR: bad procedure: 1 Stack Trace: _______________________________________ 0 (producer) At line 111 of usr/local/share/gauche/0.5.3/lib/gauche-init.scm" gosh>
(1 . 2) が期待した値です。
- あ、リファレンスマニュアルが間違ってました。次の形が正しいです。-- Shiro (2002/04/30 13:44:38 PDT)
(call-with-values (lambda () (values 1 2)) cons) => (1 . 2)
begin 2002/05/02 00:20:59 PDT --HAbe
対話環境では中身が空の begin (規格外でしょうか?)がおかしな値を返します。
blade080 % gosh gosh> (gauche-version) "0.5.3" gosh> (begin) "gosh> " gosh> (display (begin)) gosh> #<undef> gosh> (exit) blade080 % echo '(display (begin))' | gosh #<undef>
- (begin) は本来規格外ですが、#<undef>を返すようにしておくのが良いでしょうね。 現在の実装は「何もしない」コードにコンパイルされてしまうため、 レジスタに残っている直前のevalの結果(プロンプト)が返り値になってしまっている ようです。修正を考えます。 --Shiro (2002/05/02 01:02:45 PDT)
Gauche 0.5.7 + Gauche-gl failed to link 2002/07/03 23:05
Gauche 0.5.7 を入れてから,Gauche-gl 0.1.2 を入れ直したのですが,
gosh> (use gl) ERROR: failed to link "/usr/local/lib/gauche/0.5.7/i686-pc-linux-gnu/gauche-gl.so" dynamically: /usr/local/lib/gauche/0.5.7/i686-pc-linux-gnu/gauche-gl.so: undefined symbol: GC_register_dlopen_data Stack Trace:
と言われてしまいました.GCを新しくしたことに関するところですかね.todo
- あれれ。GC_register_dlopen_dataを参照してるってことは古いバージョンの ヘッダを見てしまっていますね… Gauche-glのコンパイル時のインクルードパスが 0.5.7のヘッダを見ていたかどうか、確認していただけますか? --Shiro (2002/07/03 11:36:21 PDT)
- ./configure後,makeしたときは0.5.7を参照していたようです.todo
$ make cd src; make all make[1]: Entering directory `/home/kanaya/program/src/Gauche-gl/src' gcc -I/usr/local/lib/gauche/0.5.7/include -fPIC -I/usr/X11R6/include -c -o gl_head.o gl_head.c (以下略)
- 妙ですね。問題の関数はマクロSCM_INIT_EXTENSIONの中で使われていたもので、そのマクロの定義はgauche/extend.hにあります。0.5.7ではScm_RegisterDLという関数になっているはずです。make cleanでちゃんと消えていないオブジェクトがあるのかな。make distcleanしてやってみたらどうでしょうか。Shiro
- うーん,変わりませんでした.こっちの環境が微妙におかしいことになってるのかな…todo
- どこかに古い関数を参照しているオブジェクトが残っているはずです。お手数ですが、次のような手順を試してみて下さい。Shiro (2002/07/04 11:52:07 PDT)
- /usr/local/lib/gauche/0.5.7/include/gauche/extend.h が最新のものか(マクロSCM_INIT_EXTENSION内でScm_RegisterDLを使っているか)
- Gauche-glをコンパイルしたディレクトリにて、nm src/*.o して、 GC_register_dlopen_dataを参照している*.oがあるかどうか。 もしあれば、それが何らかの理由で再コンパイルされていない。
- Gauche-glをコンパイルしたディレクトリにて、nm src/*.so して、 GC_register_dlopen_dataへの参照があるかどうか。 もしあれば、*.soのリンク時におかしなことになっている。
- 以上すべてパスした場合、nm /usr/local/lib/gauche/0.5.7/i686-pc-linux-gnu/gauche-gl.so して、 GC_register_dlopen_dataへの参照があるかどうか。 もしあれば、最新の.soがちゃんとインストールされていない。
- Shiro : Gauche-gl-0.1.2同梱のconfigureが最新のGaucheのextension interface を反映していなかったことに気づきました。手もとのテストではconfigure.inから 生成して行っていたため気づかなかった模様。このせいかもしれません。 Gauche-gl-0.1.3で直っていると思いますが、0.1.2を使う場合は Gauche-glのトップディレクトリで次のようにしてconfigureを再生成すると うまくゆくと思います。
autoconf -I `gauche-config --ac`
改行のない出力 (2002-07-18)
$ gosh -V Gauche scheme interpreter, version 0.5.7 [euc-jp] #! /usr/bin/env gosh (define (main arg) (write "hello world!") ;(newline) )
このプログラムが何も出力されないのですが、これは仕様ですか? 藤井