Subject: bug#21802: closed (Re: [Emacs-diffs] emacs-25 8e84823: Revert regexp reentrancy abort patch)

From: [email-masked] (GNU bug Tracking System)
Date: Wed, 25 Nov 2015 08:11:03 +0000

Your bug report

#21688: 25.0.50; segfault in regex.c triggered by an isearch

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
21688: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=21688
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [Emacs-diffs] emacs-25 8e84823: Revert regexp reentrancy abort patch
From: Paul Eggert <[email-masked]>
To: Stefan Monnier <[email-masked]>, [email-masked]
Date: Wed, 25 Nov 2015 00:10:25 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Stefan Monnier wrote:
> I think Bug#21688 can be re-closed.

Thanks, reclosing.

Subject: 25.0.50; segfault in regex.c triggered by an isearch
From: Dima Kogan <[email-masked]>
To: [email-masked]
Date: Sun, 01 Nov 2015 01:36:45 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi. I'm running a recent emacs built from git:

  https://github.com/emacs-mirror/emacs/commit/6e2a402

I'm on a Debian machine, running the GTK build of emacs. Segfault
recipe:

1. emacs -Q /tmp/feedgnuplot (source attached)
2. M-x cperl-mode
3. C-s last if /^exit/ C-s

   Type out the string "last if /^exit/". It may crash while you're
   typing it, or it may reach the end of the string in the match on line
   431. Hit C-s again after you typed it. If it didn't crash already,
   the extra C-s makes it crash.

I haven't done any debugging other than to look at the backtrace.
Relevant chunks:

    #0  0x00007ffff03f8107 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
    #1  0x00007ffff03f94e8 in __GI_abort () at abort.c:89
    #2  0x000000000053c3e5 in re_match_2_internal (bufp=bufp@entry=0xb93fc0, string1=string1@entry=0x28bbca0 "#!/usr/bi:HiRes qw( usleep gettimeofday tv_interval );\nuse IO::Handle;\nuse List::Util qw( "..., size1=size1@entry=0, strinrnings;\nuse Getopt::Long;\nuse Time::HiRes qw( usleep gettimeofday tv_interval );\nuse IO::Handle;\nuse List::Util
    #3  0x0000000000543b52 in re_search_2 (bufp=bufp@entry=0xb93fc0, str1=str1@entry=0x28bbca0 "#!/usr/bin/perl\n\npackeep gettimeofday tv_interval );\nuse IO::Handle;\nuse List::Util qw( "..., size1=size1@entry=0, str2=str2@entry=0x2:Long;\nuse Time::HiRes qw( usleep gettimeofday tv_interval );\nuse IO::Handle;\nuse List::Util qw( "..., size2=siz
    #4  0x0000000000539522 in search_buffer (string=string@entry=42306836, pos=<optimized out>, pos_byte=<optimized out
        at search.c:1265
    #5  0x0000000000539e8f in search_command (string=42306836, bound=<optimized out>, noerror=44160, count=<optimized o
    #6  0x000000000053a08b in Fre_search_forward (regexp=<optimized out>, bound=<optimized out>, noerror=<optimized out

The significant-looking pieces are in regex.c and search.c.