[mew-dist 21258] Seg.fault with Mew-3.0.57 + mew-ldap
Shun-ichi TAHARA ( 田原 俊一 )
jado at example.com
2002年 7月 25日 (木) 16:29:52 JST
HDDクラッシュのリハビリをかねて、Mewを2.0.50→3.0.57へと一気に上げたの
ですが、後藤さんの mew-ldap を使うと XEmacs が落ちてしまう、という現象
に遇うようになってしまいました。LDAPでの検索結果が多いと落ちるようです。
ベースの環境は XEmacs-21.4.8 + Mule-UCS-0.84 で、以前と変わりありませ
んが、Mule-UCS が、XEmacs の mule-sumo-packages に入るようになったので、
それを使うようにした、という違いはあります。
mew-ldap は、最新版(1.30?)を持ってきています。以前は 1.21 を使ってたよ
うな記憶があります。
あ、ldapsearchは、以前は openldap-2.0.7 付属のものを使っていましたが、
今回は openldap-2.1.3 より引っ張ってきています。
まだ、どこがおかしいのか切り分けがついていないのですが、もしかしたら誰
か同様の問題を抱えている人がいるかもしれないと思ってレポートしてみます。
後ろの方に、落ち際に XEmacs が吐いた backtrace をくっつけておきます。
# Addrbookの中身は切っています
_______________________________
田原 俊一 jado at example.com, shunichi_tahara at example.com
http://flowernet.gr.jp/jado/
FingerPrint: 16 9E 70 3B 05 86 5D 08 B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
Fatal error (11).
Your files have been auto-saved.
Use `M-x recover-session' to recover them.
If you have access to the PROBLEMS file that came with your
version of XEmacs, please check to see if your crash is described
there, as there may be a workaround available.
Otherwise, please report this bug by running the send-pr
script included with XEmacs, or selecting `Send Bug Report'
from the help menu.
As a last resort send ordinary email to `crashes at example.com'.
*MAKE SURE* to include the information in the command
M-x describe-installation.
If at all possible, *please* try to obtain a C stack backtrace;
it will help us immensely in determining what went wrong.
To do this, locate the core file that was produced as a result
of this crash (it's usually called `core' and is located in the
directory in which you started the editor, or maybe in your home
directory), and type
gdb /usr/local/bin/xemacs core
then type `where' when the debugger prompt comes up.
(If you don't have GDB on your system, you might have DBX,
or XDB, or SDB. A similar procedure should work for all of
these. Ask your system administrator if you need more help.)
Lisp backtrace follows:
decode-coding-region(1 27 utf-8)
# (unwind-protect ...)
# (unwind-protect ...)
# bind (temp-buffer coding-system str)
decode-coding-string("å*Iç°æº(大åå¶æ¥æ)" utf-8)
(if (null post-conv) (decode-coding-string str cs) (setq buf (generate-new-buffer mew-buffer-prefix)) (save-excursion (set-buffer buf) (mew-erase-buffer) (mew-set-buffer-multibyte ...) (insert str) (or ... ...) (decode-coding-region ... ... cs) (setq ret ...)) (mew-remove-buffer buf) ret)
# bind (buf ret post-conv)
(let ((post-conv ...) ret buf) (if (null post-conv) (decode-coding-string str cs) (setq buf ...) (save-excursion ... ... ... ... ... ... ...) (mew-remove-buffer buf) ret))
(if (null cs) str (let (... ret buf) (if ... ... ... ... ... ret)))
# bind (cs str)
mew-cs-decode-string("å*Iç°æº(大åå¶æ¥æ)" utf-8)
(mew-header-sanity-check-string (mew-cs-decode-string (mew-ldap-decode-base64-string value) (mew-charset-to-cs "utf-8")))
(setq value (mew-header-sanity-check-string (mew-cs-decode-string ... ...)))
(if (mew-ldap-encoded-p type) (setq value (mew-header-sanity-check-string ...)))
(if (or (and ... ...) (assoc type result) (string= "ldap_search:" type)) nil (if (mew-ldap-encoded-p type) (setq value ...)) (setq result (cons ... result)))
(while (setq attr (mew-ldap-get-entry-1)) (setq type (downcase ...) value (cdr attr)) (if (or ... ... ...) nil (if ... ...) (setq result ...)))
(if (not (re-search-forward "^dn:" nil t)) nil (beginning-of-line) (setq result (list ...) decode (if ... t nil)) (while (setq attr ...) (setq type ... value ...) (if ... nil ... ...)))
# bind (value type attr decode result)
(let (result decode attr type value) (if (not ...) nil (beginning-of-line) (setq result ... decode ...) (while ... ... ...)) (nreverse result))
mew-ldap-get-entry()
(setq entry (mew-ldap-get-entry))
(while (setq entry (mew-ldap-get-entry)) (setq dn (mew-ldap-get-value "dn" entry) sym (intern dn hash)) (if (not ...) (set sym entry)))
# (unwind-protect ...)
(save-excursion (set-buffer tmp) (erase-buffer) (if mew-ldap-debug-with-dummy-output (mew-ldap-insert-dummy-output) (setq attr-list mew-ldap-search-attribute-type-list must-list ...) (while must-list ... ...) (apply ... mew-ldap-program nil tmp t ...)) (goto-char (point-min)) (while (setq entry ...) (setq dn ... sym ...) (if ... ...)) (mapatoms (quote ...) hash) (if (not mew-ldap-debug) (kill-buffer tmp)))
# bind (dn must-list attr-list result entry arg-list sym hash tmp)
(let ((tmp ...) (hash ...) sym arg-list entry result attr-list must-list dn) (if (not ...) (error "You must specify LDAP server.")) (if (not ...) (setq arg-list mew-ldap-program-arguments) (setq sym ...) (if ... ... ...)) (if (or ... ...) (error "mew-ldap-program-arguments is not list or valid symbol.")) (let (server port base) (if ... ... ...) (if ... ...) (setq base mew-ldap-search-base) (setq arg-list ...)) (save-excursion (set-buffer tmp) (erase-buffer) (if mew-ldap-debug-with-dummy-output ... ... ... ...) (goto-char ...) (while ... ... ...) (mapatoms ... hash) (if ... ...)) (nreverse result))
# bind (pat)
mew-ldap-search("tsuru")
(mew-ldap-make-addrbook-alist wd (mew-ldap-search wd))
(setq alist (mew-ldap-make-addrbook-alist wd (mew-ldap-search wd)) mew-ldap-search-cache (cons word alist))
(progn (message "Searching with LDAP...") (if (string-match ... word) (setq wd ...) (setq wd word)) (setq alist (mew-ldap-make-addrbook-alist wd ...) mew-ldap-search-cache (cons word alist)) (message "Searching with LDAP...done"))
(if mew-ldap-use (progn (message "Searching with LDAP...") (if ... ... ...) (setq alist ... mew-ldap-search-cache ...) (message "Searching with LDAP...done")))
(if (and mew-ldap-use-cache mew-ldap-search-cache (string-match ... word)) (setq from-cache t alist (cdr mew-ldap-search-cache)) (if mew-ldap-use (progn ... ... ... ...)))
# bind (wd alist from-cache case-fold-search)
(let ((case-fold-search t) from-cache alist wd) (if (and mew-ldap-use-cache mew-ldap-search-cache ...) (setq from-cache t alist ...) (if mew-ldap-use ...)) (if mew-ldap-debug (save-excursion ... ... ... ...)) (let (... uniq) (if ... addrbook-alist ... ...)))
# bind (word)
mew-ldap-make-address-completion-alist("tsuru")
(setq alist (mew-ldap-make-address-completion-alist WORD))
# bind (ent entry wd alist completion-ignore-case)
(let ((completion-ignore-case t) alist wd entry ent) (setq alist (mew-ldap-make-address-completion-alist WORD)) (setq ALIST (mew-ldap-addrbook-merge alist ...)) (setq ad-return-value (ad-Orig-mew-complete WORD ALIST MSG EXPAND-CHAR TRY ALL GET HIT)) (setq wd (mew-delete-backward-char)) (insert wd))
(if (or (not ...) (if ... nil ... ... t)) (setq ad-return-value (ad-Orig-mew-complete WORD ALIST MSG EXPAND-CHAR TRY ALL GET HIT)) (let (... alist wd entry ent) (setq alist ...) (setq ALIST ...) (setq ad-return-value ...) (setq wd ...) (insert wd)))
# bind (ad-return-value)
(let (ad-return-value) (if (or ... ...) (setq ad-return-value ...) (let ... ... ... ... ... ...)) ad-return-value)
# bind (HIT GET ALL TRY EXPAND-CHAR MSG ALIST WORD)
mew-complete("xxxxx" ((……)) "alias" ?@ nil nil mew-addrbook-alias-get mew-addrbook-alias-hit)
# bind (word completion-ignore-case)
mew-complete-address()
# bind (func)
mew-draft-header-comp()
# bind (mew-ldap-use)
(let* ((mew-ldap-use ...)) (mew-draft-header-comp))
# bind (force)
mew-ldap-header-comp((4))
# bind (command-debug-status)
call-interactively(mew-ldap-header-comp)
# (condition-case ... . error)
# (catch top-level ...)
Segmentation fault (core dumped).
Mew-dist メーリングリストの案内