Wanderlust (wl)で"wrong-type-argument arrayp nil"

症状

先日まで問題なかったのに突然 "wrong-type-argument arrayp nil" とエラーメッセージがでて inboxにある新着メールを読み込まなくなってしまった。

環境

  • Ubunt 12.04 LTS
  • emacs 23.3.1
  • WanderlustUbuntuの wl-betaパッケージ バージョン 2.15.9+0.20120101-1)

原因

あるメールのパーシングでエラーが発生したため。

対処方法

当該メールを inbox から削除した。


debug-on-error を t にしてバックトレースを行って当該ファイルを探しだし、削除した。

  1. emacs を起動する。
  2. wl を起動する(M-x wl)
  3. M-x set-variable と入力し、Enterキー、debug-on-errorと入力しEnterキー、そして値 を t にして、Enterキー。
  4. 読み込めないフォルダーを開く(私の場合はinbox)

すると以下のようなバックトレースが表示される。

Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
  std11-wrap-as-quoted-pairs(nil (34 92 13 10))
  ad-Orig-std11-wrap-as-quoted-string(nil)
  std11-wrap-as-quoted-string("")
  eword-decode-token((quoted-string . ""))
  eword-decode-and-unfold-structured-field-body("\"\" <hogehoge@hogehoge.co.jp>" 3 nil)
  mime-decode-field-body("\"\" <hogehoge@hogehoge.co.jp>" "to" summary)
  #[(field-body) ... 略
  mapconcat(#[(field-body)  ... 略
  #[(handler number args) ... 略
  apply(#[(handler number args) ... 略
  luna-call-next-method()
  luna-apply-generic(... 略 ....)
  elmo-msgdb-create-message-entity-from-buffer([modb-standard-entity-handler [0 0 0 0 0 0 0] x-ctext] 45245 :size 25997 :date "19 Mar 2015 13:09:56 +0900")
  以下、略。

今回の場合、elmo-msgdb-create-message-entity-from-buffer のところで、ピックアップされているメール(ファイル名 inbox/45245 )が原因だった(To欄が 「"" 」だったのが原因っぽい)。なので、これを削除する。

% cd ~/Mail/inbox
% cp -p 45245 ~/
% rm 45245

あとは、これで無事にファイルを読み込めた。ちなみに上記メールは International Journal of Scientific Researchというところからの論文募集メールだった。

この作業の参考にしたのは 2ch: Wanderlust その 4の以下の書き込み。

950 :名無しさん@お腹いっぱい。:2005/04/12(火) 11:18:16
    CVS の Wanderlust で,1000 通以上のメールがある IMAP フォルダを表示しようとすると,

    error in process filter: ad-Orig-std11-wrap-as-quoted-string: Wrong type argument: arrayp, nil
    error in process filter: Wrong type argument: arrayp, nil

    というエラーが 10 個以上でてそれ以上操作ができなくなってしまいます.
    試しに,.elmo を消したりもしてみましたが症状変わりません.

    どなたかアドバイスお願いします.
951 :950:2005/04/12(火) 13:09:54
    いろいろ調べて見たところ、特定のメール(Spam)によってエラーが発生してい
    ることが分かりました。

    その時のバックトレースです。

    Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
    std11-wrap-as-quoted-pairs(nil (34 92 13 10))
    ad-Orig-std11-wrap-as-quoted-string(nil)
    std11-wrap-as-quoted-string("")
    eword-decode-token((quoted-string . ""))
    eword-decode-and-unfold-structured-field-body("\"\" <foo@bar.baz.or.jp>" 3 nil)
    mime-decode-field-body("\"\" <foo@bar.baz.or.jp>" "to" summary)
    #[(field-body) "\301^H\302\303#\207" [field-body mime-decode-field-body "to" summary] 4]("\"\" <foo@bar.baz.or.jp>")
    mapconcat(#[(field-body) "\301^H\302\303#\207" [field-body mime-decode-field-body "to" summary] 4] ("\"\" <foo@bar.baz.or.jp>") ",")
    #[(handler number args) "^H\306\211\211^Y^Z^[^X\212\307\f!\210\310\311\312\"\211^R\2039^@\313\n!\314^]^Z\315^M\nAA\"A*\211^Q\2039^@\316 !\211$
    apply(#[(handler number args) "^H\306\211\211^Y^Z^[^X\212\307\f!\210\310\311\312\"\211^R\2039^@\313\n!\314^]^Z\315^M\nAA\"A*\211^Q\2039^@\316 !$
    luna-call-next-method()
    luna-apply-generic([modb-standard-entity-handler [0 0 0 0 0 0 0] iso-2022-jp] elmo-msgdb-create-message-entity-from-buffer [modb-standard-entit$
    elmo-msgdb-create-message-entity-from-buffer([modb-standard-entity-handler [0 0 0 0 0 0 0] iso-2022-jp] 62004 :size 1885)
    elmo-imap4-fetch-callback-1(((flags ("\\Seen")) (rfc822size 1885) (bodydetail "HEADER.FIELDS SUBJECT FROM TO CC DATE MESSAGE-ID REFERENCES IN-R$
    elmo-imap4-parse-fetch(450)
    elmo-imap4-parse-response() 
953 :hmurata:2005/04/12(火) 14:18:20
    >>951
    std11-wrap-as-quoted-string に defadvice されている様ですが, 其処でエラー
    になっています. 設定を見直してみて下さい.