[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scri
From: |
Joe Wells |
Subject: |
Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used] |
Date: |
Thu, 19 Jul 2007 19:08:25 +0100 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux) |
Joe Wells <address@hidden> writes:
> Kenichi Handa <address@hidden> writes:
>
>> In article <address@hidden>, Joe Wells <address@hidden> writes:
>>
>>> I have reverified the bug. I tested in a dummy account to make sure
>>> none of my account settings affected things. I have also verified
>>> that I get the bug when using the console (no X windows).
>>
>>> Here are some more details on my configuration. I am using
>>> Ubuntu 6.06 LTS (“Dapper Drake”) with all packages fully updated.
>>> Everything I am using is standard Ubuntu except for my kernel and
>>> Emacs. I am using a custom Linux kernel version 2.6.17 (this version
>>> was fairly current a year ago) with a few extra patches applied by my
>>> hardware middleman. As I reported in my original report, I built
>>> Emacs with these options:
>>
>>> export CFLAGS='-O0 -g3 -ggdb'
>>> ./configure --prefix=$HOME/local2 --enable-debug --disable-nls
>>> --with-x-toolkit=gtk
>>
>>> I suppose that the “--disable-nls” or “--with-x-toolkit=gtk” options
>>> might contribute to the bug.
>>
>> I configured Emacs 21.1 with the same options, but still
>> can't reproduce the bug (my distribution is Debian). After
>> starting Emacs, the *Messsage* buffer contains this:
>>
>> ("/home/handa/local2/bin/emacs" "--quick" "--eval" "(setq
>> utf-8-compose-scripts\ t)" "--load" "lao-util")
>> Loading encoded-kb...done
>> For information about the GNU Project and its goals, type C-h C-p.
>> Loading regexp-opt...done
>> Loading thai-util...
>> Loading mule-util...done
>> Loading thai-util...done
>> Loading devan-util...
>> Loading ind-util...done
>> Loading devan-util...done
>> Loading mlm-util...done
>> Loading tml-util...done
>
> Here is the *Messages* buffer for me which shows the error:
>
> ----------------------------------------------------------------------
> ("/home/jbw/local2/bin/emacs" "--quick" "--eval" "(setq utf-8-compose-scripts
> t)" "--load" "lao-util")
> Loading encoded-kb...done
> For information about the GNU Project and its goals, type C-h C-p.
> Loading thai-util... [2 times]
> Loading mule-util...
> Loading lao-util... [2 times]
> Loading regexp-opt...
> Loading lao-util... [2 times]
> Loading regexp-opt...
> Loading lao-util... [2 times]
> Loading regexp-opt...
> Loading lao-util...
> utf-8-post-read-conversion: Recursive load:
> "/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc",
> "/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc",
> "/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp/regexp-opt.elc",
> "/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc",
> "/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc",
> "/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp/regexp-opt.elc",
> "/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc"
> ----------------------------------------------------------------------
>
> There are several differences. Your *Messages* buffer shows
> regexp-opt being loaded just once and before the other files. Mine
> shows regexp-opt not being loaded until after several other files, and
> it is loaded repeatedly as part of the recursive load loop.
>
> Mine shows thai-util being loaded _twice_, with the second time
> apparently happening during the first time.
>
> Yours _never_ loads lao-util.
>
>> If you don't supply "--load lao-util", does your emacs work
>> well?
>
> No, sooner or later something else causes it to be loaded. It seems
> that any time an attempt is made to load “mule-util”, “lao-util”, or
> “regexp-opt”, a recursive loading loop results. A quick check reveals
> I get the same error with both of these command lines:
>
> emacs --no-window-system --quick --eval '(setq utf-8-compose-scripts t)'
> --load "mule-util"
>
> emacs --no-window-system --quick --eval '(setq utf-8-compose-scripts t)'
> --load "regexp-opt"
>
>> How about "--load lao-util.el" instead?
>
> I get the same problem if I load “lao-util.el” instead of “lao-util”.
>
> --
> Joe
>
> P.S. Unfortunately, doing (setq debug-on-error t) before (load
> "lao-util") does not trigger the debugger, which makes it harder to
> figure out just what is happening.
Well, debug-on-error is not working (presumably because the debugger
itself is failing for the same reason), but stack-trace-on-error does
work! I've appended the full stack trace below.
It seems that an additional ingredient is needed to trigger the bug:
the path to Emacs's installed location must include a symbolic link.
On my system, Emacs is installed under “/home/jbw/local2”, which is a
symbolic link to “/mnt/extra-space-02/jbw/local”.
Loading is canonicalizing paths using the function file-truename which
invokes file-symlink-p which uses the macro DECODE_FILE which invokes
code_convert_string_norecord using the value of
default-file-name-coding-system which is mule-utf-8. The function
code_convert_string_norecord makes an attempt to prevent character
composition with the line “coding.composing = COMPOSITION_DISABLED;”,
but this seems to be ignored (or be affecting a completely different
code path for character composition). The function
code_convert_string_norecord invokes decode_coding_string which
invokes run_pre_post_conversion_on_str if the coding system has a
post-read-conversion property. The coding system mule-utf-8 has as
its value of its post-read-conversion property the function
utf-8-post-read-conversion. The function
run_pre_post_conversion_on_str then invokes
utf-8-post-read-conversion, which attempts to run lao-compose-region.
The function lao-compose-region is autoloaded from “lao-util.el”, and
loading that file defines the initial value of a variable by invoking
“regexp-opt” which is autoloaded from “regexp-opt.el”. There is some
additional complication. See the stack trace below.
What seems to be needed is some way of telling the
post-read-conversion function to do all of its usual work except for
any work for character composition.
Joe
----------------------------------------------------------------------
lao-compose-region(30 1)
utf-8-post-read-conversion(29)
file-symlink-p("/home/jbw/local2")
file-truename("/home/jbw/local2" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp" (91)
((("/home/jbw/" . "/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp/debug.elc")
debug(error (error "Recursive load"
"/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc"
"/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp/regexp-opt.elc"
"/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc"
"/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc"
"/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp/regexp-opt.elc"
"/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc"
"/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc"
"/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp/regexp-opt.elc"))
lao-compose-region(30 1)
utf-8-post-read-conversion(29)
file-symlink-p("/home/jbw/local2")
file-truename("/home/jbw/local2" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp" (91)
((("/home/jbw/" . "/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp/regexp-opt.elc")
regexp-opt(("ngh" "kh" "qh" "ng" "th" "dh" "hp" "fh" "ph" "gn" "hh" "nh" "mh"
"lh" "yh" "wh" "hl" "hy" "hn" "hm" "k" "j" "s" "x" "y" "d" "t" "n" "b" "p" "f"
"m" "l" "r" "v" "w" "O" "h"))
byte-code("\306\307\310\311\"!\312\307\310\311 \"!\313\307\310\311
\"!\312\307\310\311\"!\314\307\310\311\"!\315\307\310\311
\"!\260\207" [lao-transcription-consonant-alist
lao-transcription-semi-vowel-alist lao-transcription-vowel-alist
lao-transcription-maa-sakod-alist lao-transcription-tone-alist
lao-transcription-punctuation-alist "\\(" regexp-opt mapcar car "\\)\\("
"\\)?\\(\\(" "\\)?\\(" "\\)?\\)?\\|"] 15)
(defconst lao-transcription-pattern (byte-code
"\306\307\310\311\"!\312\307\310\311 \"!\313\307\310\311
\"!\312\307\310\311\"!\314\307\310\311\"!\315\307\310\311
\"!\260\207" [lao-transcription-consonant-alist
lao-transcription-semi-vowel-alist lao-transcription-vowel-alist
lao-transcription-maa-sakod-alist lao-transcription-tone-alist
lao-transcription-punctuation-alist "\\(" regexp-opt mapcar car "\\)\\("
"\\)?\\(\\(" "\\)?\\(" "\\)?\\)?\\|"] 15)
("/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc" . 10639))
lao-compose-region(30 1)
utf-8-post-read-conversion(29)
file-symlink-p("/home/jbw/local2")
file-truename("/home/jbw/local2" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/language" (91)
((("/home/jbw/" . "/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc")
lao-compose-region(30 1)
utf-8-post-read-conversion(29)
file-symlink-p("/home/jbw/local2")
file-truename("/home/jbw/local2" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp" (91)
((("/home/jbw/" . "/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp/regexp-opt.elc")
regexp-opt(("ngh" "kh" "qh" "ng" "th" "dh" "hp" "fh" "ph" "gn" "hh" "nh" "mh"
"lh" "yh" "wh" "hl" "hy" "hn" "hm" "k" "j" "s" "x" "y" "d" "t" "n" "b" "p" "f"
"m" "l" "r" "v" "w" "O" "h"))
byte-code("\306\307\310\311\"!\312\307\310\311 \"!\313\307\310\311
\"!\312\307\310\311\"!\314\307\310\311\"!\315\307\310\311
\"!\260\207" [lao-transcription-consonant-alist
lao-transcription-semi-vowel-alist lao-transcription-vowel-alist
lao-transcription-maa-sakod-alist lao-transcription-tone-alist
lao-transcription-punctuation-alist "\\(" regexp-opt mapcar car "\\)\\("
"\\)?\\(\\(" "\\)?\\(" "\\)?\\)?\\|"] 15)
(defconst lao-transcription-pattern (byte-code
"\306\307\310\311\"!\312\307\310\311 \"!\313\307\310\311
\"!\312\307\310\311\"!\314\307\310\311\"!\315\307\310\311
\"!\260\207" [lao-transcription-consonant-alist
lao-transcription-semi-vowel-alist lao-transcription-vowel-alist
lao-transcription-maa-sakod-alist lao-transcription-tone-alist
lao-transcription-punctuation-alist "\\(" regexp-opt mapcar car "\\)\\("
"\\)?\\(\\(" "\\)?\\(" "\\)?\\)?\\|"] 15)
("/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc" . 10639))
lao-compose-region(30 1)
utf-8-post-read-conversion(29)
file-symlink-p("/home/jbw/local2")
file-truename("/home/jbw/local2" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/language" (91)
((("/home/jbw/" . "/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/language/lao-util.elc")
lao-compose-region(30 1)
utf-8-post-read-conversion(29)
file-symlink-p("/home/jbw/local2")
file-truename("/home/jbw/local2" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share" (91) ((("/home/jbw/" . "/home/jbw/")
("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp" (91) ((("/home/jbw/" .
"/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp" (91)
((("/home/jbw/" . "/home/jbw/") ("/home/" . "/home/"))))
file-truename("/home/jbw/local2/share/emacs/22.1/lisp/emacs-lisp/regexp-opt.elc")
load("regexp-opt")
eval((load "regexp-opt"))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp)
----------------------------------------------------------------------
- Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used], Kenichi Handa, 2007/07/16
- Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used], Joe Wells, 2007/07/16
- Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used], Kenichi Handa, 2007/07/17
- Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used], Joe Wells, 2007/07/17
- Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used], Joe Wells, 2007/07/18
- Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used], Kenichi Handa, 2007/07/18
- Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used], Joe Wells, 2007/07/19
- Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used],
Joe Wells <=
- Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used], Kenichi Handa, 2007/07/19
- Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used], Kenichi Handa, 2007/07/19