Subject: Crash with etags

From: Paul Eggert <[email-masked]>
Date: Wed, 16 Jul 2014 06:42:11 -0700

[This bug report is taken from:
http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00209.html
I'm filing it here to give it a proper bug number and thread.
Dr. Werner Fink <[email-masked]> writes:]

Hi,

after installing the linux kernel sources, I see

      cd /usr/src/linux
      ulimit -c unlimited
      make TAGS
        GEN     TAGS
      xargs: etags: terminated by signal 11
      gdb /usr/bin/etags core
      [...]
      Reading symbols from /usr/bin/etags...Reading symbols from 
/usr/lib/debug/usr/bin/etags.debug...done.
      done.
      [New LWP 14768]
      Core was generated by `etags -a 
--regex=^\(ENTRY\|_GLOBAL\)(\([^)]*\)).* \2 / --regex=^SYSCALL_DEFINE['.
      Program terminated with signal SIGSEGV, Segmentation fault.
      #0  __memcpy_sse2_unaligned () at 
../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S:37
      37      ../sysdeps/x86_64/multiarch/memcpy-sse2-unaligned.S: No 
such file or directory.
      (gdb) up
      #1  0x000000000040376c in memcpy (__len=90, __src=<optimized out>, 
__dest=0x18ea090) at /usr/include/bits/string3.h:51
      51        return __builtin___memcpy_chk (__dest, __src, __len, 
__bos0 (__dest));
      (gdb) up
      #2  substitute (in=0x17048f0 "ENTRY(lguest_entry)", out=0x1707301 
"2", regs=0x1705dc8, regs=0x1705dc8)
          at /usr/src/debug/emacs-24.3/lib-src/etags.c:5792
      5792            memcpy (t, in + regs->start[dig], diglen);
      (gdb) list
      5787      for (t = result; *out != '\0'; out++)
      5788        if (*out == '\\' && ISDIGIT (*++out))
      5789          {
      5790            dig = *out - '0';
      5791            diglen = regs->end[dig] - regs->start[dig];
      5792            memcpy (t, in + regs->start[dig], diglen);
      5793            t += diglen;
      5794          }
      5795        else
      5796          *t++ = *out;
      (gdb) print *out - '0'
      $1 = 2
      (gdb) print regs->end[dig] - regs->start[dig]
      value has been optimized out
      (gdb) print regs->end[dig]
      value has been optimized out
      (gdb) print regs
      $2 = (struct re_registers *) 0x1705dc8
      (gdb) print *regs
      $3 = {num_regs = 4, start = 0x18d1d40, end = 0x18d4fc0}
      (gdb) print *regs->end
      $4 = 21474836499
      (gdb) print regs->end
      $5 = (regoff_t *) 0x18d4fc0
      (gdb) print *regs->end
      $6 = 21474836499
      (gdb) print *regs->start
      $7 = 0
      (gdb) print *regs->end[2]
      Cannot access memory at address 0x70000000000005f

I've also an other bug report about etags and kernel source tree, see
the cloned bug at http://rudin.suse.de:8888/show_bug.cgi?id=887483

Werner

-- "Having a smoking section in a restaurant is like having a peeing 
section in a swimming pool." -- Edward Burr