Assert triggered during RE_compile_and_cache - Mailing list pgsql-hackers

From Mark Dilger
Subject Assert triggered during RE_compile_and_cache
Date
Msg-id 0203588E-E609-43AF-9F4F-902854231EE7@enterprisedb.com
Whole thread Raw
Responses Re: Assert triggered during RE_compile_and_cache  (Mark Dilger <mark.dilger@enterprisedb.com>)
List pgsql-hackers
Tom,

while testing your patch in [1], I stumbled upon the following assert in master, without your patch applied:

+select 'vyrlvyrlwvqko' ~ '(?:(?:((.))))((\2)\1.){0,0}?';
+server closed the connection unexpectedly
+   This probably means the server terminated abnormally
+   before or while processing the request.
+connection to server was lost


The assert itself dates back to a commit of yours from 2003.  I don't think you did anything wrong here, but I wonder
ifyou might understand the code better than anyone else? 

The relevant bit of the stack trace is:

    frame #3: 0x00000001020eff7d postgres`ExceptionalCondition(conditionName=<unavailable>, errorType=<unavailable>,
fileName=<unavailable>,lineNumber=<unavailable>) at assert.c:69:2 [opt] 
    frame #4: 0x0000000101e2c682 postgres`delsub(nfa=0x00007fc7e8407360, lp=0x00007fc7e8831010, rp=0x00007fc7e8827328)
atregc_nfa.c:1265:2 [opt] 
    frame #5: 0x0000000101e28dd8 postgres`parsebranch [inlined] parseqatom(v=<unavailable>, stopper=101, type=112,
lp=<unavailable>,rp=0x00007fc7e8827328, top=<unavailable>) at regcomp.c:1084:3 [opt] 
    frame #6: 0x0000000101e27de9 postgres`parsebranch(v=0x00007ffeee0a80b8, stopper=101, type=<unavailable>,
left=<unavailable>,right=<unavailable>, partial=<unavailable>) at regcomp.c:759 [opt] 
    frame #7: 0x0000000101e29719 postgres`parsebranch [inlined] parseqatom(v=<unavailable>, stopper=101, type=112,
lp=<unavailable>,rp=0x00007fc7e8827328, top=<unavailable>) at regcomp.c:1282:23 [opt] 
    frame #8: 0x0000000101e29639 postgres`parsebranch(v=0x00007ffeee0a80b8, stopper=101, type=<unavailable>,
left=<unavailable>,right=<unavailable>, partial=<unavailable>) at regcomp.c:759 [opt] 
    frame #9: 0x0000000101e2457b postgres`parse(v=0x00007ffeee0a80b8, stopper=101, type=112, init=0x00007fc7e8827280,
final=0x00007fc7e88272b8)at regcomp.c:691:12 [opt] 
    frame #10: 0x0000000101e234d2 postgres`pg_regcomp(re=0x00007ffeee0a8208, string=<unavailable>, len=<unavailable>,
flags=<unavailable>,collation=<unavailable>) at regcomp.c:418:12 [opt] 
    frame #11: 0x0000000101f75790 postgres`RE_compile_and_cache(text_re=<unavailable>, cflags=<unavailable>,
collation=100)at regexp.c:186:19 [opt] 
    frame #12: 0x0000000101f75b90 postgres`textregexeq [inlined] RE_compile_and_execute(text_re=<unavailable>,
dat=<unavailable>,dat_len=13, cflags=3, collation=<unavailable>, nmatch=0, pmatch=<unavailable>) at regexp.c:351:7
[opt]

[1] https://www.postgresql.org/message-id/2219936.1628115334%40sss.pgh.pa.us

—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company






pgsql-hackers by date:

Previous
From: Andrew Dunstan
Date:
Subject: Re: very long record lines in expanded psql output
Next
From: Mark Dilger
Date:
Subject: Re: Assert triggered during RE_compile_and_cache