Gauche:Bugs:log0
Gaucheのバグ報告過去ログ。Epochから2002/7/19まで。
新しいバグ報告はGauche:Bugsにどうぞ。
ここにバグレポートを書いていいですか? --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)
)
このプログラムが何も出力されないのですが、これは仕様ですか? 藤井
- バグです。インタプリタがexitするときにstdoutがフラッシュされなければ
ならないはず。直します --Shiro (2002/07/18 01:03:43 PDT)
- リリース0.6で直しました --Shiro (2002/07/19 14:43:31 PDT)
Last modified : 2004/01/13 10:23:35 UTC