BUG #5348: Postgres crashes with index on xpath_string

Started by Thomas Kellererabout 16 years ago5 messagesbugs
Jump to latest
#1Thomas Kellerer
thomas@kellerer.name

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)

#2Bruce Momjian
bruce@momjian.us
In reply to: Thomas Kellerer (#1)
Re: BUG #5348: Postgres crashes with index on xpath_string

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. +
#3Thomas Kellerer
bestellung@kellerer.name
In reply to: Bruce Momjian (#2)
Re: BUG #5348: Postgres crashes with index on xpath_string

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:

Show quoted text

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

#4Robert Haas
robertmhaas@gmail.com
In reply to: Thomas Kellerer (#3)
Re: BUG #5348: Postgres crashes with index on xpath_string

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

#5Bruce Momjian
bruce@momjian.us
In reply to: Robert Haas (#4)
Re: BUG #5348: Postgres crashes with index on xpath_string

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