BUG #18708: regex problem: (?:[^\d\D]){0} asserts with "lp->nouts == 0 && rp->nins == 0"
The Post Office <noreply@postgresql.org>
From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: dhyan@nataraj.su
Date: 2024-11-14T12:29:12Z
Lists: pgsql-bugs
The following bug has been logged on the website:
Bug reference: 18708
Logged by: Nikolay Shaplov (PostgresPro)
Email address: dhyan@nataraj.su
PostgreSQL version: 16.4
Operating system: Debian 12
Description:
Hi!
We've found a bug:
If you run
SELECT '' ~ '(?:[^\d\D]){0}';
it will assert with "lp->nouts == 0 && rp->nins == 0"
This behavior have been introduced in 2a0af7fe460 commit.
This bug have been found while fuzzing jsonpath_in function, and then
narrowed down to regex problem. Thanks to Andrey Bille for help with
narrowing sample down and finding commit that caused the problem.
Commits
-
Fix recently-exposed portability issue in regex optimization.
- df1a2633b11a 14.15 landed
- adb6dbc7f535 13.18 landed
- 6ab39c02747c 15.10 landed
-
Avoid assertion due to disconnected NFA sub-graphs in regex parsing.
- b69bdcee9c9c 18.0 landed
- b6312becc819 16.6 landed
- 5f28e6ba7fe1 17.2 landed
- 2bdd3b248924 14.15 landed
- 2496c3f6f1bf 15.10 landed
-
Fix recovery conflict SIGUSR1 handling.
- 0da096d78e1e 17.0 cited
-
Redesign interrupt/cancel API for regex engine.
- db4f21e4a34b 16.0 cited
-
Use MemoryContext API for regex memory management.
- bea3d7e3831f 16.0 cited
-
Invent "rainbow" arcs within the regex engine.
- 08c0d6ad65f7 14.0 cited