Hi. I have been using BBDB with Gnus for a while, with the multiple records in BBDB feature activated. This is /very/ nice for dealing with the two "Andrew Phillips" that I have as friends. :) Anyway, recently, I have been getting this stack trace when trying to show the mark for them: ,----[ BBDB multiple records backtrace ] | car(["Andrew" "Phillips" nil nil nil nil ("[EMAIL PROTECTED]") |((creation-date . "2001-03-21") (timestamp . "2001-03-21")) ["Andrew Phillips" nil |#<marker at 66306 in .bbdb 0x8c9ec5c> nil]]) | (let ((name-rec ...) (nets net-recs)) (while nets (if ... ... ...)) (if name-recs |(setq name-recs ...) name-rec)) | (while name-recs (let (... ...) (while nets ...) (if name-recs ... name-rec))) | (if (not (and name-recs net-recs)) (or (and name-recs ...) (and net-recs ...)) |(while name-recs (let ... ... ...)) ret) | (let ((name-recs ...) (net-recs ...) ret) (if (not ...) (or ... ...) (while |name-recs ...) ret)) | bbdb-search-simple("Andrew Phillips" "[EMAIL PROTECTED]") | (setq record (bbdb-search-simple name (if ... ... net))) | (and data (setq record (bbdb-search-simple name ...))) | (if (and data (setq record ...)) (or (bbdb-record-getprop record |bbdb-message-marker-field) bbdb/gnus-summary-known-poster-mark) " ") | (let* ((from ...) (data ...) (name ...) (net ...) record) (if (and data ...) (or |... bbdb/gnus-summary-known-poster-mark) " ")) | gnus-user-format-function-b([2071 "Hmmmm." "Andrew Phillips <[EMAIL PROTECTED]>" |"Tue, 27 Feb 2001 10:49:12 +1100" |"<[EMAIL PROTECTED]>" "" 301 13 "localhost |Inbox.cabal:2071" ((To . "[EMAIL PROTECTED]") (Keywords . "cabal"))]) | | [...] `---- The trace is elided at the point Gnus is formatting the summary line string. If you care for the Gnus part of it, let me know. The specific problem is this code is `bbdb-simple-search': (let ((name-recs (if name ;; filter out companies from hash (let ((recs (bbdb-gethash (downcase name))) answer) (while recs (let ((n-rec (car recs))) (if (string= (downcase name) (downcase (bbdb-record-name n-rec))) (setq answer (append recs n-rec))) (setq recs (cdr recs)))) answer))) Specifically, because there are two records that match "Andrew Phillips" in the database, the walk through the records is done. The second call to `(setq answer (append recs n-rec))' results in `answer' being a *dotted* list of records. This can be seen by executing `(let ((l '(one))) (append l 'two))' Later, the code does: (while name-recs (let ((name-rec (car name-recs)) (nets net-recs)) (while nets (if (eq (car nets) name-rec) (setq nets '() name-recs '() ret name-rec) (setq nets (cdr nets)))) (if name-recs (setq name-recs (cdr name-recs)) name-rec))) Because `name-recs' was bound to `answer' from the above fragment, which is a dotted list, the line: (if name-recs (setq name-recs (cdr name-recs))) is executed. The `cdr' call returns the second element as is, *not* as a list. This can be seen by evaluating `(car '(one . two))'. As a result, when the code loops to : (let ((name-rec (car name-recs)) name-recs is /not/ a list, just a single element. This causes the stack trace. I have verified that the underlying behaviour is identical in Emacs 20.7.2 on my machine, Linux 2.4 running Debian/unstable. XEmacs is, of course, from CVS. I hope this is enough detail for someone who understands this code to correct the error. This started failing fairly recently, but is still a problem in the latest CVS. Daniel Emacs : XEmacs 21.2 (beta46) "Urania" [Lucid] (i686-pc-linux, Mule) of Thu Mar 22 2001 on inanna Package: BBDB 2.33 current state: ============== (setq bbdb-version-date "$Date: 2001/03/17 17:23:46 $" bbdb-file-format 6 bbdb-no-duplicates-p nil bbdb-after-change-hook '(bbdb/gnus-score-invalidate-alist) bbdb-after-read-db-hook nil bbdb-always-add-addresses nil bbdb-auto-notes-alist '(("X-face" (".*" face 0)) ("Organization" ("\\s-*\\(.*\\)\\s-*" company 1)) ("Organisation" ("\\s-*\\(.*\\)\\s-*" company 1)) ("X-Organization" ("\\s-*\\(.*\\)\\s-*" company 1)) ("X-Organisation" ("\\s-*\\(.*\\)\\s-*" company 1)) ("Web" ("\\s-*\\(.*\\)\\s-*" url 1)) ("X-Web" ("\\s-*\\(.*\\)\\s-*" url 1)) ("X-WWW-Homepage" ("\\s-*\\(.*\\)\\s-*" url 1)) ("X-WWW-page" ("\\s-*\\(.*\\)\\s-*" url 1)) ("X-Homepage" ("\\s-*\\(.*\\)\\s-*" url 0)) ("X-Url" ("\\s-*\\(.*\\)\\s-*" last-url 1)) ("X-Mailer" ("\\s-*\\(.*\\)\\s-*" mailer 1 t)) ("X-Newsreader" ("\\s-*\\(.*\\)\\s-*" mailer 1 t)) ("X-Mua" ("\\s-*\\(.*\\)\\s-*" mailer 1 t)) ("X-ICQ" ("\\s-*\\([0-9]+\\)\\s-*" icq 1))) bbdb-auto-revert-p nil bbdb-canonicalize-net-hook 'dp:bbdb-rewrite-address bbdb-canonicalize-redundant-nets-p t bbdb-case-fold-search t bbdb-change-hook '(bbdb-delete-redundant-nets bbdb-timestamp-hook) bbdb-completion-display-record t bbdb-completion-type nil bbdb-create-hook 'bbdb-creation-date-hook bbdb-default-area-code nil bbdb-define-all-aliases-field 'mail-alias bbdb-dial-local-prefix nil bbdb-dial-local-prefix-alist '(((if bbdb-default-area-code (format "(%03d)" bbdb-default-area-code) "") "")) bbdb-dial-long-distance-prefix nil bbdb-dwim-net-address-allow-redundancy nil bbdb-electric-p nil bbdb-elided-display nil bbdb-extract-address-component-handler 'message bbdb-extract-address-component-ignore-regexp "\\(\\(undisclosed\\|unlisted\\)[^,]*recipients\\)\\|no To-header on input" bbdb-extract-address-component-regexps '(("\"'\\([^\"]*\\)'\"\\s-*<\\([^>]+\\)>" (bbdb-clean-username (match-string 1 adstring)) 2) ("\"\\([^\"]*\\)\"\\s-*<\\([^>]+\\)>" (bbdb-clean-username (match-string 1 adstring)) 2) ("\\(\\b[^<,]*\\b\\)\\s-*<\\([^>]+\\)>" 1 2) ("<\\([^>]+\\)>" nil 2) ("\\(\\b[^<\",()]+\\b\\)\\s-*(\\([^)]+\\))" 2 1) ("\\b\\(\\([^@]+\\.[^@]+\\)@[0-9a-z._-]+\\)\\b" (bbdb-clean-username (match-string 2 adstring)) 1) ("\\b\\(\\([0-9a-z._-]+\\)@[0-9a-z._-]+\\)\\b" nil 1) ("\\b\\([0-9a-z._-]+\\)\\b" nil 1)) bbdb-file "~/.bbdb" bbdb-file-remote nil bbdb-file-remote-save-always t bbdb-finger-host-field 'finger-host bbdb-get-addresses-from-headers '("From" "Resent-From" "Reply-To") bbdb-get-addresses-headers '("From" "Resent-From" "Reply-To" "Resent-To" "Resent-CC" "To" "CC" "BCC") bbdb-get-addresses-to-headers '("Resent-To" "Resent-CC" "To" "CC" "BCC") bbdb-get-only-first-address-p nil bbdb-gui t bbdb-hashtable-size 1021 bbdb-ignore-most-messages-alist nil bbdb-ignore-some-messages-alist nil bbdb-info-file nil bbdb-initialize-hook nil bbdb-list-hook '(bbdb-fontify-buffer) bbdb-load-hook nil bbdb-message-caching-enabled t bbdb-message-marker-field 'mark-char bbdb-mode-hook nil bbdb-new-nets-always-primary nil bbdb-north-american-phone-numbers-p nil bbdb-notes-default-separator ", " bbdb-notes-sort-order '((notes . 0) (www . 1) (ftp . 2) (gopher . 3) (telnet . 4) (mail-alias . 5) (mail-folder . 6) (lpr . 7) (creation-date . 1000) (timestamp . 1001)) bbdb-notice-auto-save-file nil bbdb-notice-hook '(bbdb-auto-notes-hook) bbdb-offer-save t bbdb-pop-up-elided-display '(creation-date timestamp pilot-id) bbdb-pop-up-elided-display-fields nil bbdb-pop-up-elided-display-name-end 48 bbdb-pop-up-target-lines 5 bbdb-quiet-about-name-mismatches nil bbdb-readonly-p nil bbdb-refile-notes-default-merge-function 'bbdb-refile-notes-default-merge-function bbdb-refile-notes-generate-alist '((creation-date . bbdb-refile-notes-string-least) (timestamp . bbdb-refile-notes-string-most)) bbdb-save-db-timeout nil bbdb-send-mail-style nil bbdb-silent-running nil bbdb-use-alternate-names t bbdb-user-mail-names "\\bdaniel\\b" bbdb-write-file-hooks '(bbdb-write-file-hook-fn) bbdb/gnus-lines-and-from-length 18 bbdb/gnus-split-crosspost-default nil bbdb/gnus-split-default-group "mail.misc" bbdb/gnus-split-myaddr-regexp "^daniel$\\|^daniel@\\([-a-z0-9]+\\.\\)*inanna.rimspace.net$" bbdb/gnus-split-nomatch-function nil bbdb/gnus-split-private-field 'gnus-private bbdb/gnus-split-public-field 'gnus-public bbdb/gnus-summary-mark-known-posters t bbdb/gnus-summary-show-bbdb-names t bbdb/mail-auto-create-p t bbdb/news-auto-create-p nil bbdb/prompt-for-create-p nil bbdb/vm-set-auto-folder-alist-field 'vm-folder features '(reporter hyper-apropos eldoc find-func debug pp rect tc overlay gnus-picon w3-forms w3-display w3-imap url-handlers w3-widget css font w3-mouse w3-vars w3-keymap w3-cus url mule-sysdp url-proxy url-privacy url-expand url-methods url-history url-cookie url-util url-parse url-auto url-vars annotations gnus-cite gnus-async gnus-score score-mode mail-extr gnus-ml gnus-msg disp-table late-misc nndraft nnmh gnus-cache nnfolder sort nnml nntp cookie1 gnus-art mm-uu binhex uudecode mm-view gnus-sum nnoo gnus-group gnus-undo nnmail mail-source rfc1843 gnus-start gnus-range gnus-spec gnus-int gnus-win setup-spellcheck dictionary link connection flyspell ispell setup-sgml setup-prog cc-mode cc-align cc-cmds cc-engine cc-styles cc-langs cc-vars cc-menus imenu cc-defs setup-prog-misc eval-expr setup-printing setup-packages setup-network w3-auto browse-url socks setup-mud setup-misc shell-font setup-gnuserv gnuserv setup-files tramp-vc tramp efs-dired dired-faces dired-xemacs dired shell format-spec timer efs-x19\.15 efs-fnh efs-ovwrt efs-netrc efs-defun efs jka-compr setup-editor permanent-buffers saveplace uniquify hippie-exp savehist ebuff-menu electric redo paren blink-paren setup-documentation setup-bbdb bbdb-autoloads bbdb-xemacs bbdb-gui bbdb-hooks bbdb-gnus gnus gnus-ems gnus-xmas wid-edit message messagexmas mml mml-sec mml-smime mml2015 smime dig mm-decode mm-bodies mm-encode mailcap mail-parse rfc2045 rfc2231 rfc2047 qp ietf-drums mail-abbrevs sendmail mailheader gnus-util time-date parse-time nnheader nnheaderxm mail-utils mm-util mail-prsvr bbdb-snarf bbdb-com bbdb timezone setup-autoinsert autoinsert setup-email dms-sig regexp-opt messkeyw mailcrypt rfc822 comint early-visual font-lock cus-face early-vc vc byte-optimize ring vc-hooks early-misc env early-lisp advice advice-preload efs-cu autoload bytecomp byte-compile zenirc-autoloads xslt-process-autoloads xemacs-devel-autoloads xemacs-base-autoloads view-process-autoloads vc-autoloads time-autoloads textools-autoloads text-modes-autoloads texinfo-autoloads supercite-autoloads speedbar-autoloads sounds-wav-autoloads slider-autoloads sh-script-autoloads sgml-autoloads semantic-autoloads reftex-autoloads psgml-autoloads ps-print-nomule-autoloads prog-modes-autoloads pcomplete-autoloads pcl-cvs-autoloads pc-autoloads os-utils-autoloads net-utils-autoloads misc-games-autoloads mailcrypt-autoloads mail-lib-autoloads jde-autoloads ispell-autoloads igrep-autoloads hm--html-menus-autoloads gnats-autoloads games-autoloads fsf-compat-autoloads frame-icon-autoloads forms-autoloads footnote-autoloads eudc-autoloads eterm-autoloads eshell-autoloads elib-autoloads eieio-autoloads efs-autoloads edit-utils-autoloads edebug-autoloads dired-autoloads debug-autoloads cookie-autoloads cc-mode-autoloads calendar-autoloads calc-autoloads c-support-autoloads auctex-autoloads apel-autoloads ada-autoloads mule-base-autoloads w3-autoloads url-autoloads lisp-autoloads loadhist auto-show fontl-hooks x-iso8859-1 slovenian czech romanian ccl mule-help code-cmds gutter-items menubar-items x-menubar mode-motion mouse itimer auto-save lisp-mode easymenu iso8859-1 page buff-menu lib-complete cus-file derived frame text-props obsolete cus-start custom widget cl-extra mini-cl cl cl-19 packages backquote very-early-lisp postgresqlv7 postgresql file-coding mule lucid-scrollbars cut-buffer lucid-menubars motif-dialogs x c-balloon-help tty-frames tty toolbar native-sound scrollbar unix-processes multicast network-streams subprocesses modules menubar berkeley-db md5 xemacs xim gutter tiff png gif jpeg xface xpm xbm lisp-float-type linux dialog devices window-system base64) ) -- The secret of happiness is this: Let your interests be as wide as possible, and let your reactions to the things and persons that interest you be as far as possible friendly rather than hostile. -- Bertrand Russell _______________________________________________ [EMAIL PROTECTED] http://lists.sourceforge.net/lists/listinfo/bbdb-info BBDB Home Page: http://bbdb.sourceforge.net/