invalid regexp crashes the server on windows or 9.3

From: Marc Mamin <M(dot)Mamin(at)intershop(dot)de>
To: "'pgsql-hackers(at)postgresql(dot)org'" <pgsql-hackers(at)postgresql(dot)org>
Subject: invalid regexp crashes the server on windows or 9.3
Date: 2013-09-25 07:33:02
Message-ID: B6F6FD62F2624C4C9916AC0175D56D880CE20F8A@jenmbs01.ad.intershop.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

This regexp call freezes with almost 100% CPU usage, so I guess it creates an infinite loop.

With Postgres 9.1 on Linux, I can kill the backend cleanly and get following message:

cic_db=# select regexp_matches ('aa bb aa ba baa x','(^((?!aa)))+','gx');
ERROR: invalid regular expression: nfa has too many states

on Windows and Postgres 9.3, I used the terminate icon from pgAdmin,
which resulted in a FATAL error, killed all other processes and finally stopped the server.

I guesss this is a windows issue, but we do not have a Postgres 9.3 installation on Linux yet, so that I can't test it.

here the log entries from widows 9.3:

2013-09-25 09:02:40 CEST LOG: Serverprozess (PID 5952) wurde durch Ausnahme 0xC00000FD beendet
2013-09-25 09:02:40 CEST DETAIL: Der fehlgeschlagene Prozess führte aus: select regexp_matches ('aa bb aa ba baa x','(^((?!aa)))+','gx')
2013-09-25 09:02:40 CEST TIPP: Sehen Sie die Beschreibung des Hexadezimalwerts in der C-Include-Datei "ntstatus.h" nach.
2013-09-25 09:02:40 CEST LOG: aktive Serverprozesse werden abgebrochen
2013-09-25 09:02:40 CEST WARNUNG: breche Verbindung ab wegen Absturz eines anderen Serverprozesses
2013-09-25 09:02:40 CEST DETAIL: Der Postmaster hat diesen Serverprozess angewiesen, die aktuelle Transaktion zurückzurollen und die Sitzung zu beenden, weil ein anderer Serverprozess abnormal beendet wurde und möglicherweise das Shared Memory verfälscht hat.
2013-09-25 09:02:40 CEST TIPP: In einem Moment sollten Sie wieder mit der Datenbank verbinden und Ihren Befehl wiederholen können.
2013-09-25 09:02:40 CEST WARNUNG: breche Verbindung ab wegen Absturz eines anderen Serverprozesses
2013-09-25 09:02:40 CEST DETAIL: Der Postmaster hat diesen Serverprozess angewiesen, die aktuelle Transaktion zurückzurollen und die Sitzung zu beenden, weil ein anderer Serverprozess abnormal beendet wurde und möglicherweise das Shared Memory verfälscht hat.
2013-09-25 09:02:40 CEST TIPP: In einem Moment sollten Sie wieder mit der Datenbank verbinden und Ihren Befehl wiederholen können.
2013-09-25 09:02:40 CEST LOG: alle Serverprozesse beendet; initialisiere neu
2013-09-25 09:02:50 CEST FATAL: bereits bestehender Shared-Memory-Block wird noch benutzt
2013-09-25 09:02:50 CEST TIPP: Prüfen Sie, ob irgendwelche alten Serverprozesse noch laufen und beenden Sie diese.

translated:
exception 0xC00000FD stopped PID ,
check ntstatus.h for the description of the hexadecimal value

regards,

Marc Mamin

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Amit Kapila 2013-09-25 07:47:35 Re: Minmax indexes
Previous Message Amit Khandekar 2013-09-25 07:19:55 Re: pg_dump/restore encoding woes