Thread: BUG #5348: Postgres crashes with index on xpath_string
The following bug has been logged online: Bug reference: 5348 Logged by: Thomas Kellerer Email address: thomas@kellerer.name PostgreSQL version: 8.4.2 Operating system: Windows XP Description: Postgres crashes with index on xpath_string Details: With the contrib module xml2 (pgxml.sql) installed, run the following script: create table t1 (id integer, xml_data xml); insert into t1 (id, xml_data) values (1, '<attributes><attribute name="attr_1">Some Value</attribute></attributes>'); create index idx_xpath on t1 ( xpath_string ('/attributes/attribute[@name="attr_1"]/text()', xml_data::text)); This will crash the backend. The entry in the logfile is: 2010-02-27 17:21:28 CET STATEMENT: create index idx_xpath on t1 ( xpath_value ('/attributes/attribute[@name="attr_1"]/text()', xml_data::text)) 2010-02-27 17:21:55 CET LOG: server process (PID 2544) was terminated by exception 0xC0000005 2010-02-27 17:21:55 CET HINT: See C include file "ntstatus.h" for a description of the hexadecimal value. 2010-02-27 17:21:55 CET LOG: terminating any other active server processes 2010-02-27 17:21:55 CET LOG: all server processes terminated; reinitializing When restarting the server, the following messages are written to the logfile: 2010-02-27 17:22:05 CET FATAL: pre-existing shared memory block is still in use 2010-02-27 17:22:05 CET HINT: Check if there are any old server processes still running, and terminate them. 2010-02-27 17:22:22 CET LOG: database system was interrupted; last known up at 2010-02-27 16:22:32 CET 2010-02-27 17:22:22 CET LOG: database system was not properly shut down; automatic recovery in progress 2010-02-27 17:22:22 CET LOG: redo starts at 3/B77FAB28 2010-02-27 17:22:22 CET LOG: unexpected pageaddr 3/95850000 in log file 3, segment 183, offset 8716288 2010-02-27 17:22:22 CET LOG: redo done at 3/B784F758 2010-02-27 17:22:22 CET LOG: last completed transaction was at log time 2010-02-27 17:21:20.382+01 2010-02-27 17:22:23 CET FATAL: the database system is starting up 2010-02-27 17:22:23 CET LOG: database system is ready to accept connections 2010-02-27 17:22:24 CET LOG: autovacuum launcher started When the following index is created, things seem to work (at least the backend is not crashing) create index idx_xpath on t1 ( xpath_string ('/attributes/attribute[@name="attr_1"]', xml_data::text)) (note the missing text() in the xpath)
Yes, we have received a few reports about this and are working on a fix. --------------------------------------------------------------------------- Thomas Kellerer wrote: > > The following bug has been logged online: > > Bug reference: 5348 > Logged by: Thomas Kellerer > Email address: thomas@kellerer.name > PostgreSQL version: 8.4.2 > Operating system: Windows XP > Description: Postgres crashes with index on xpath_string > Details: > > With the contrib module xml2 (pgxml.sql) installed, run the following > script: > > create table t1 (id integer, xml_data xml); > insert into t1 (id, xml_data) > values > (1, '<attributes><attribute name="attr_1">Some > Value</attribute></attributes>'); > > create index idx_xpath on t1 ( xpath_string > ('/attributes/attribute[@name="attr_1"]/text()', xml_data::text)); > > This will crash the backend. > > The entry in the logfile is: > > 2010-02-27 17:21:28 CET STATEMENT: create index idx_xpath on t1 ( > xpath_value ('/attributes/attribute[@name="attr_1"]/text()', > xml_data::text)) > 2010-02-27 17:21:55 CET LOG: server process (PID 2544) was terminated by > exception 0xC0000005 > 2010-02-27 17:21:55 CET HINT: See C include file "ntstatus.h" for a > description of the hexadecimal value. > 2010-02-27 17:21:55 CET LOG: terminating any other active server processes > 2010-02-27 17:21:55 CET LOG: all server processes terminated; > reinitializing > > > When restarting the server, the following messages are written to the > logfile: > > > 2010-02-27 17:22:05 CET FATAL: pre-existing shared memory block is still in > use > 2010-02-27 17:22:05 CET HINT: Check if there are any old server processes > still running, and terminate them. > 2010-02-27 17:22:22 CET LOG: database system was interrupted; last known up > at 2010-02-27 16:22:32 CET > 2010-02-27 17:22:22 CET LOG: database system was not properly shut down; > automatic recovery in progress > 2010-02-27 17:22:22 CET LOG: redo starts at 3/B77FAB28 > 2010-02-27 17:22:22 CET LOG: unexpected pageaddr 3/95850000 in log file 3, > segment 183, offset 8716288 > 2010-02-27 17:22:22 CET LOG: redo done at 3/B784F758 > 2010-02-27 17:22:22 CET LOG: last completed transaction was at log time > 2010-02-27 17:21:20.382+01 > 2010-02-27 17:22:23 CET FATAL: the database system is starting up > 2010-02-27 17:22:23 CET LOG: database system is ready to accept > connections > 2010-02-27 17:22:24 CET LOG: autovacuum launcher started > > > When the following index is created, things seem to work (at least the > backend is not crashing) > > create index idx_xpath on t1 ( xpath_string > ('/attributes/attribute[@name="attr_1"]', xml_data::text)) > > (note the missing text() in the xpath) > > -- > Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-bugs -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com PG East: http://www.enterprisedb.com/community/nav-pg-east-2010.do + If your life is a hard drive, Christ can be your backup. +
Thanks for the feedback. Is the problem specific to 8.4.2 or to the Windows platform (or both)? Regards Thomas Bruce Momjian, 27.02.2010 18:42: > > Yes, we have received a few reports about this and are working on a fix. > > --------------------------------------------------------------------------- > > Thomas Kellerer wrote: >> >> The following bug has been logged online: >> >> Bug reference: 5348 >> Logged by: Thomas Kellerer >> Email address: thomas@kellerer.name >> PostgreSQL version: 8.4.2 >> Operating system: Windows XP >> Description: Postgres crashes with index on xpath_string >> Details: >> >> With the contrib module xml2 (pgxml.sql) installed, run the following >> script: >> >> create table t1 (id integer, xml_data xml); >> insert into t1 (id, xml_data) >> values >> (1, '<attributes><attribute name="attr_1">Some >> Value</attribute></attributes>'); >> >> create index idx_xpath on t1 ( xpath_string >> ('/attributes/attribute[@name="attr_1"]/text()', xml_data::text)); >> >> This will crash the backend. >> >> The entry in the logfile is: >> >> 2010-02-27 17:21:28 CET STATEMENT: create index idx_xpath on t1 ( >> xpath_value ('/attributes/attribute[@name="attr_1"]/text()', >> xml_data::text)) >> 2010-02-27 17:21:55 CET LOG: server process (PID 2544) was terminated by >> exception 0xC0000005 >> 2010-02-27 17:21:55 CET HINT: See C include file "ntstatus.h" for a >> description of the hexadecimal value. >> 2010-02-27 17:21:55 CET LOG: terminating any other active server processes >> 2010-02-27 17:21:55 CET LOG: all server processes terminated; >> reinitializing >> >> >> When restarting the server, the following messages are written to the >> logfile: >> >> >> 2010-02-27 17:22:05 CET FATAL: pre-existing shared memory block is still in >> use >> 2010-02-27 17:22:05 CET HINT: Check if there are any old server processes >> still running, and terminate them. >> 2010-02-27 17:22:22 CET LOG: database system was interrupted; last known up >> at 2010-02-27 16:22:32 CET >> 2010-02-27 17:22:22 CET LOG: database system was not properly shut down; >> automatic recovery in progress >> 2010-02-27 17:22:22 CET LOG: redo starts at 3/B77FAB28 >> 2010-02-27 17:22:22 CET LOG: unexpected pageaddr 3/95850000 in log file 3, >> segment 183, offset 8716288 >> 2010-02-27 17:22:22 CET LOG: redo done at 3/B784F758 >> 2010-02-27 17:22:22 CET LOG: last completed transaction was at log time >> 2010-02-27 17:21:20.382+01 >> 2010-02-27 17:22:23 CET FATAL: the database system is starting up >> 2010-02-27 17:22:23 CET LOG: database system is ready to accept >> connections >> 2010-02-27 17:22:24 CET LOG: autovacuum launcher started >> >> >> When the following index is created, things seem to work (at least the >> backend is not crashing) >> >> create index idx_xpath on t1 ( xpath_string >> ('/attributes/attribute[@name="attr_1"]', xml_data::text)) >> >> (note the missing text() in the xpath) >> >> -- >> Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgsql-bugs >
On Fri, Mar 5, 2010 at 3:52 AM, Thomas Kellerer <bestellung@kellerer.name> wrote: > Thanks for the feedback. > > Is the problem specific to 8.4.2 or to the Windows platform (or both)? Neither, actually. ...Robert
Robert Haas wrote: > On Fri, Mar 5, 2010 at 3:52 AM, Thomas Kellerer > <bestellung@kellerer.name> wrote: > > Thanks for the feedback. > > > > Is the problem specific to 8.4.2 or to the Windows platform (or both)? > > Neither, actually. The fix will be in the next minor Postgres release. Keep an eye out for it when it is announced. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com PG East: http://www.enterprisedb.com/community/nav-pg-east-2010.do