Looking for pointers to where to investigate more closely as I chase
this down.

Started getting repeatable mutt crashes, if I leave mutt running for a
while and come back to it; session is IMAP using Kerberos auth.  Running
on FreeBSD, mutt built using Ports (poudriere).  The crash is in
keymap.c.  I can't recall when I started seeing this, but I only noticed
it in the last few days.

I rebuilt with debug enabled, to get a usable core dump, as before the
stack was garbage.  There are patches, but when I grep in
/usr/ports/mail/mutt/files for files containing keymap, the only two
listed are not selected in my builds (neither sidebar-patch nor
signature menu).

The mutt version output is somewhat broken, I remember seeing this
before but don't recall the cause.  Compiler is:
  FreeBSD clang version 3.3 (tags/RELEASE_33/final 183502) 20130610

Mercurial tip shows no changes to keymap.c this year; a diff between the
keymap.c in the source used through the FreeBSD build and current
mercurial tip shows no diff: code is unmodified.  Build uses ncurses.

The `struct keymap_t *` is non-NULL but every entry in it is zeroed out,
so in `map->keys[pos]` the `map->keys` part is NULL, thus a segfault.

What sorts of keymaps are allocated such that, after an idle time, the
memory might get blanked?  Something allocated in an arena/pool/whatever
tied to the current connection?

Thanks,
-Phil

----------------------------8< cut here >8------------------------------
#0  0x0000000000456c7b in km_dokey (menu=7) at keymap.c:511
511         while (LastKey > map->keys[pos])
[New Thread 804406400 (LWP 101052/mutt)]
(gdb) bt
#0  0x0000000000456c7b in km_dokey (menu=7) at keymap.c:511
#1  0x000000000046f1c9 in mutt_pager (banner=0x0, fname=0x7fffffffb640 
"/home/pdp/tmp/mutt-tower-Mwx5nC4u", flags=66, 
    extra=0x7fffffffb1d0) at pager.c:1854
#2  0x000000000041bc87 in mutt_display_message (cur=0x8070130c0) at 
commands.c:214
#3  0x000000000042dbd5 in mutt_index_menu () at curs_main.c:1207
#4  0x000000000045aa2a in main (argc=1, argv=0x7fffffffd400) at main.c:1056
(gdb) p LastKey
$1 = 113
(gdb) p map
$2 = (struct keymap_t *) 0x80441a850
(gdb) p *map
$3 = {
  macro = 0x0, 
  descr = 0x0, 
  next = 0x0, 
  op = 0, 
  eq = 0, 
  len = 0, 
  keys = 0x0
}
(gdb) p pos
$4 = 0
(gdb) frame 0
#0  0x0000000000456c7b in km_dokey (menu=7) at keymap.c:511
511         while (LastKey > map->keys[pos])
(gdb) list
506           if (func)
507             continue;
508         }
509     
510         /* Nope. Business as usual */
511         while (LastKey > map->keys[pos])
512         {
513           if (pos > map->eq || !map->next)
514             return (retry_generic (menu, map->keys, pos, LastKey));
515           map = map->next;
----------------------------8< cut here >8------------------------------

----------------------------8< cut here >8------------------------------
% mutt -v
Mutt 1.5.23 (2014-03-12)
Copyright (C) 1996-2009 Michael R. Elkins and others.
Mutt comes with ABSOLUTELY NO WARRANTY; for details type `mutt -vv'.
Mutt is free software, and you are welcome to redistribute it
under certain conditions; type `mutt -vv' for details.

System: FreeBSD 10.0-RELEASE-p7 (amd64)
ncurses: ncurses 5.7.20081102 (compiled with 5.7)
libidn: 1.29 (compiled with 1.29)
hcache backend: Berkeley DB 5.3.28: (September  9, 2013)

Compiler:
sion 3.3 (g ve  ags/RELEASE_33/final 183502) 20130610
eebsd10.0 x86_64-unknown-f
ead model: posix
/local/include' ion: '-I /us

/local' '--disable-flock' '--enable-locales-fix' '--wie-h-idn' 
'--disable-gpgme' '--wi  h-gss' '--enable-sm     p' '--enable-debug' 
/local/lib' 'LIBS=' 'CPPFLAGS=' 'CPP=cpp'gdbm' '--wi        h-bdb' '--wi    hou 
    -qdbm' '--p

icmpilat-aliasingS: -pipe  -g -fno-s    

Compile options:
-DOMAIN
+DEBUG
-HOMESPOOL  +USE_SETGID  +USE_DOTLOCK  +DL_STANDALONE  -USE_FCNTL  -USE_FLOCK   
+USE_POP  +USE_IMAP  +USE_SMTP  
+USE_SSL_OPENSSL  -USE_SSL_GNUTLS  +USE_SASL  +USE_GSS  +HAVE_GETADDRINFO  
+HAVE_REGCOMP  -USE_GNU_REGEX  +COMPRESSED  
+HAVE_COLOR  +HAVE_START_COLOR  +HAVE_TYPEAHEAD  +HAVE_BKGDSET  
+HAVE_CURS_SET  +HAVE_META  +HAVE_RESIZETERM  
+CRYPT_BACKEND_CLASSIC_PGP  +CRYPT_BACKEND_CLASSIC_SMIME  -CRYPT_BACKEND_GPGME  
-EXACT_ADDRESS  -SUN_ATTACHMENT  
-ENABLE_NLS  +LOCALES_HACK  +HAVE_WC_FUNCS  +HAVE_LANGINFO_CODESET  
+HAVE_LANGINFO_YESEXPR  
+HAVE_ICONV  -ICONV_NONTRANS  +HAVE_LIBIDN  +HAVE_GETSID  +USE_HCACHE  
-ISPELL
SENDMAIL="/usr/sbin/sendmail"
MAILPATH="/var/mail"
PKGDATADIR="/usr/local/share/mutt"
SYSCONFDIR="/usr/local/etc"
EXECSHELL="/bin/sh"
-MIXMASTER
To contact the developers, please mail to <[email protected]>.
To report a bug, please visit http://bugs.mutt.org/.

patch-1.5.20.bk.trash_folder-purge_message.1
patch-1.5.4.cd.ifdef.1
patch-1.5.6.cb.reverse_reply.2
patch-1.5.7.ust.maildir-mtime.2
patch-1.5.0.ats.date_conditional.1
dgc.deepif.1
vvv.quote
vvv.initials
rr.compressed
----------------------------8< cut here >8------------------------------

----------------------------8< cut here >8------------------------------
┌────────────────────────────── mutt-1.5.23_5 ─────────────────────────────────┐
│ ┌──────────────────────────────────────────────────────────────────────────┐ │
│ │ [x] COMPRESSED_FOLDERS        Compressed folders                         │ │
│ │ [x] DEBUG                     Debugging capabilities                     │ │
│ │ [x] DOCS                      Build and/or install documentation         │ │
│ │ [x] EXAMPLES                  Build and/or install examples              │ │
│ │ [ ] FLOCK                     flock() usage                              │ │
│ │ [ ] GPGME                     Gpgme interface                            │ │
│ │ [ ] GREETING_PATCH            Greeting support                           │ │
│ │ [x] GSSAPI                    Use the gss API                            │ │
│ │ [x] HTML                      HTML documentation                         │ │
│ │ [x] ICONV                     Encoding conversion support via iconv      │ │
│ │ [x] IDN                       International Domain Names support         │ │
│ │ [x] IFDEF_PATCH               ifdef feature                              │ │
│ │ [x] IMAP_HEADER_CACHE         IMAP header cache                          │ │
│ │ [x] LOCALES_FIX               Locales fix                                │ │
│ │ [x] MAILBOX_MANPAGES          Install mbox.5/mmdf.5 manpages             │ │
│ │ [x] MAILDIR_HEADER_CACHE      Maildir header cache                       │ │
│ │ [x] MAILDIR_MTIME_PATCH       Maildir mtime patch                        │ │
│ │ [ ] NLS                       Native language support                    │ │
│ │ [ ] NNTP                      NNTP (News) support                        │ │
│ │ [x] PARENT_CHILD_MATCH_PATCH  Parent/child match                         │ │
│ │ [x] QUOTE_PATCH               Extended quoting                           │ │
│ │ [x] REVERSE_REPLY_PATCH       Reverse_reply                              │ │
│ │ [x] SASL                      SASL authentication                        │ │
│ │ [ ] SIDEBAR_PATCH             Sidebar support                            │ │
│ │ [ ] SIGNATURE_MENU            Signature menu                             │ │
│ │ [x] SMART_DATE                Dynamic date formatting with "%@"          │ │
│ │ [x] SMIME_OUTLOOK_COMPAT      SMIME outlook compatibility                │ │
│ │ [x] SMTP                      SMTP relay support                         │ │
│ │ [ ] TOKYOCABINET              Use tokyocabinet instead of Berkley DB     │ │
│ │ [x] TRASH_PATCH               Trash folder support                       │ │
│ │ [x] XML                       Use XML tools for rebuilding documentation │ │
│ │────────────────────────────────── SCREEN ────────────────────────────────│ │
│ │ (*) NCURSES                   Ncurses support                            │ │
│ │ ( ) SLANG                     SLANG support                              │ │
│ │────────────────────────────────── SPELL ─────────────────────────────────│ │
│ │ ( ) ASPELL                    Spell checking support via GNU Aspell      │ │
│ │ ( ) ISPELL                    Spell checking support via Ispell          │ │
----------------------------8< cut here >8------------------------------

Reply via email to