2008年11月3日月曜日

CLISP on Cygwin が使えない

半年くらい前からだろうか、cygwin にインストールした clisp が起動と同時にエラーになる症状に陥った。

$ clisp
  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8

*** - Internal error: statement in file
       "/usr/src/clisp/clisp-2.46-1/src/clisp-2.46/src/stream.d"
      , line 5658 has been reached!!
      Please see <http://clisp.cons.org/impnotes/faq.html#faq-bugs> for bug
      reporting instructions.
Break 1 [3]> nil
NIL
Break 1 [3]> (car '(1 2 3))
1
Break 1 [3]> :q

[/usr/src/clisp/clisp-2.46-1/src/clisp-2.46/src/eval.d:573] reset() found no driver frame (sp=0xdacc70-0xd90580)
Floating point exception (core dumped)

動かないわけではないけれど、デバッガから抜けると落ちる。

まあ win32 バイナリの clisp の方が使えるから問題はないが。けど気持ち悪いなあ。 解決法がわからないから今のところ放置中。

3 件のコメント:

  1. 私の環境でも、環境変数LANGをja_JP.SJISに設定してから
    同様のことが起こりました。次のようにLANGの設定を解除し
    てからclispを起動すると正常に起動します。
    $ LANG= clisp
    試してみてください。

    返信削除
  2. あー、ロケールの問題でしたか。コメントありがとうございます。

    好みの問題ですが自分はenvコマンドを使うのが好みですね。
    $ env LANG=C clisp

    CLISPの端末文字コードはデフォルトではCP932(SHIFT-JIS)らしいので、これだ
    けでも一応日本語が通るようです。
    http://clisp.cons.org/impnotes/encoding.html

    [1]> *terminal-encoding*
    #<ENCODING "CP932" :DOS>
    [2]> (elt "ほげふが" 1)
    #\HIRAGANA_LETTER_GE

    返信削除
  3. 1. 明示的に文字コードを指定する方法があったのでメモ。
    $ man clisp
    -Edomail encoding
    file,pathname,terminal,foreign,misc,blank

    $ clisp -E EUC-JP

    これならば UTF-8, EUC-JP, CP932 が指定できる。

    2. 起動時のバナーを表示させないようにしたらエラーがなくなった。謎だ…
    $ clisp -q (or --quiet)
    ちなみにこの状態なら SJIS, SHIFT-JIS も指定できる
    $ clisp -E SJIS -q

    返信削除