GNU bug report logs - #32806
An assertion is hit when processing "(|()()0)\2" extended regular expression

Previous Next

Package: grep;

Reported by: Anatoly Trosinenko <anatoly.trosinenko <at> gmail.com>

Date: Sat, 22 Sep 2018 15:21:03 UTC

Severity: normal

Merged with 22793, 34238, 42946

To reply to this bug, email your comments to 32806 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-grep <at> gnu.org:
bug#32806; Package grep. (Sat, 22 Sep 2018 15:21:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Anatoly Trosinenko <anatoly.trosinenko <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-grep <at> gnu.org. (Sat, 22 Sep 2018 15:21:04 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Anatoly Trosinenko <anatoly.trosinenko <at> gmail.com>
To: bug-grep <at> gnu.org
Subject: An assertion is hit when processing "(|()()0)\2" extended regular
 expression
Date: Sat, 22 Sep 2018 18:00:56 +0300
Hello,

When processing a simple extended regular expression, GNU grep hits an
assertion. This is reproducible on the latest commit from master
branch 51dacfb (Sep 19).

$ export LC_ALL=C
$ gdb -q --args ./grep -E "(|()()0)\2"
Reading symbols from ./grep...(no debugging symbols found)...done.
(gdb) r
Starting program: /path/to/grep -E \(\|\(\)\(\)0\)\\2
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
grep: regexec.c:1342: pop_fail_stack: Assertion `num >= 0' failed.

Program received signal SIGABRT, Aborted.
__GI_raise (sig=sig <at> entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
51      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0  __GI_raise (sig=sig <at> entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff75ae801 in __GI_abort () at abort.c:79
#2  0x00007ffff759e39a in __assert_fail_base (fmt=0x7ffff77257d8
"%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
assertion=assertion <at> entry=0x7ffff772351f "num >= 0",
file=file <at> entry=0x7ffff7723515 "regexec.c", line=line <at> entry=1342,
    function=function <at> entry=0x7ffff77278a0 <__PRETTY_FUNCTION__.12590>
"pop_fail_stack") at assert.c:92
#3  0x00007ffff759e412 in __GI___assert_fail
(assertion=assertion <at> entry=0x7ffff772351f "num >= 0",
file=file <at> entry=0x7ffff7723515 "regexec.c", line=line <at> entry=1342,
function=function <at> entry=0x7ffff77278a0 <__PRETTY_FUNCTION__.12590>
"pop_fail_stack") at assert.c:101
#4  0x00007ffff758f3f8 in pop_fail_stack
(eps_via_nodes=0x7fffffffd5d0, regs=0x55555578b110, nregs=4,
pidx=<optimized out>, fs=<optimized out>) at regexec.c:1342
#5  0x00007ffff76650e8 in pop_fail_stack (eps_via_nodes=<optimized
out>, regs=<optimized out>, nregs=<optimized out>, pidx=<optimized
out>, fs=<optimized out>) at regexec.c:1427
#6  set_regs (preg=preg <at> entry=0x555555788cd0,
mctx=mctx <at> entry=0x7fffffffd770, nmatch=nmatch <at> entry=4,
pmatch=pmatch <at> entry=0x55555578b110, fl_backtrack=<optimized out>) at
regexec.c:1419
#7  0x00007ffff766e272 in re_search_internal
(preg=preg <at> entry=0x555555788cd0, string=string <at> entry=0x7fffffffdbe6
"\n", length=length <at> entry=0, start=<optimized out>, start <at> entry=0,
range=<optimized out>, range <at> entry=0, stop=stop <at> entry=0, nmatch=4,
pmatch=0x55555578b110,
    eflags=0) at regexec.c:846
#8  0x00007ffff766eb88 in re_search_stub (bufp=0x555555788cd0,
string=<optimized out>, length=<optimized out>, start=0,
range=<optimized out>, stop=<optimized out>, regs=0x5555557883a0,
ret_len=<optimized out>) at regexec.c:420
#9  0x00007ffff766f7e0 in __re_search (bufp=<optimized out>,
string=<optimized out>, length=<optimized out>, start=<optimized out>,
range=<optimized out>, regs=<optimized out>) at regexec.c:291
#10 0x0000555555558857 in EGexecute ()
#11 0x000055555555df08 in main ()


Best regards
Anatoly




Information forwarded to bug-grep <at> gnu.org:
bug#32806; Package grep. (Sat, 22 Sep 2018 21:24:02 GMT) Full text and rfc822 format available.

Message #8 received at 32806 <at> debbugs.gnu.org (full text, mbox):

From: Paul Eggert <eggert <at> cs.ucla.edu>
To: Anatoly Trosinenko <anatoly.trosinenko <at> gmail.com>, 32806 <at> debbugs.gnu.org
Subject: Re: bug#32806: An assertion is hit when processing "(|()()0)\2"
 extended regular expression
Date: Sat, 22 Sep 2018 14:23:41 -0700
Thanks for the test case. This appears to be the same as bug#22793 so 
I'll merge them.

https://debbugs.gnu.org/22793





Merged 22793 32806. Request was from Paul Eggert <eggert <at> cs.ucla.edu> to control <at> debbugs.gnu.org. (Sat, 22 Sep 2018 21:24:02 GMT) Full text and rfc822 format available.

Merged 22793 32806 34238. Request was from Paul Eggert <eggert <at> cs.ucla.edu> to control <at> debbugs.gnu.org. (Thu, 31 Jan 2019 03:23:02 GMT) Full text and rfc822 format available.

Merged 22793 32806 34238 42946. Request was from Paul Eggert <eggert <at> cs.ucla.edu> to control <at> debbugs.gnu.org. (Mon, 21 Sep 2020 19:52:02 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 209 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.