emacs-devel
[Top][All Lists]
Advanced

[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: Kenichi Handa
Subject: Re: address@hidden: strange Emacs 22.1 failure due to utf-8-compose-scripts when --no-window-system used]
Date: Fri, 20 Jul 2007 10:16:21 +0900
User-agent: SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.2 Emacs/23.0.0 (i686-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO)

Thank you investigating this problem.  I now can reproduce
the bug, and I think I found a solution.  Please wait for a
while.  I'll let you know when it is fixed.

---
Kenichi Handa
address@hidden

In article <address@hidden>, Joe Wells <address@hidden> writes:

> 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)
> ----------------------------------------------------------------------





reply via email to

[Prev in Thread] Current Thread [Next in Thread]