Sheikh Amjad wrote:
Following test case is crashing the postgresql-8.3-beta
create schema st;
CREATE TABLE ST.STUDENT(
STUDENT_ID VARCHAR2(10),
NAME VARCHAR(50) NOT NULL,
NIC CHAR(11),
DOB DATE NOT NULL,
GENDER CHAR(1) NOT NULL,
MAR_STAT CHAR(1) NOT NULL,
NATION VARCHAR2(15),
FNAME VARCHAR2(50) NOT NULL,
GNAME VARCHAR2(50),
ADDRESS VARCHAR2(100) NOT NULL,
POS_CODE VARCHAR2(8),
PER_TEL VARCHAR2(15),
VARCHAR2? That smells like Oracle...
I was able to reproduce this after replacing those VARCHAR2's with
VARCHAR. I added some debugging elog's (attached), and it looks like
libxml2 is trying xml_pfree a pointer we never gave it in any of the
alloc functions. Log attached, last xml_pfree crashes and it's the first
time 853c180 is mentioned.
I guess the next step is to narrow it down to a self-contained test case
and send a bug report to libxml people.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
Index: src/backend/utils/adt/xml.c
===================================================================
RCS file: /home/hlinnaka/pgcvsrepository/pgsql/src/backend/utils/adt/xml.c,v
retrieving revision 1.49
diff -c -r1.49 xml.c
*** src/backend/utils/adt/xml.c 13 Oct 2007 20:46:47 -0000 1.49
--- src/backend/utils/adt/xml.c 31 Oct 2007 16:22:16 -0000
***************
*** 1209,1228 ****
static void *
xml_palloc(size_t size)
{
! return palloc(size);
}
static void *
xml_repalloc(void *ptr, size_t size)
{
! return repalloc(ptr, size);
}
static void
xml_pfree(void *ptr)
{
pfree(ptr);
}
--- 1209,1238 ----
static void *
xml_palloc(size_t size)
{
! void *ptr;
!
! ptr = palloc(size);
! elog(LOG, "xml_palloc(%d) = %x", size, ptr);
! return ptr;
}
static void *
xml_repalloc(void *ptr, size_t size)
{
! void *ptr_new;
!
! ptr_new = repalloc(ptr, size);
! elog(LOG, "xml_repalloc(%x, %d) = %x", ptr, size, ptr_new);
!
! return ptr_new;
}
static void
xml_pfree(void *ptr)
{
+ elog(LOG, "xml_pfree(%x)", ptr);
pfree(ptr);
}
***************
*** 1230,1236 ****
static char *
xml_pstrdup(const char *string)
{
! return pstrdup(string);
}
--- 1240,1253 ----
static char *
xml_pstrdup(const char *string)
{
! char *str;
!
!
! str = pstrdup(string);
!
! elog(LOG, "xml_pstrdup(%x) = %x", string, str);
!
! return str;
}
LOG: database system was shut down at 2007-10-31 16:23:45 GMT
LOG: autovacuum launcher started
LOG: database system is ready to accept connections
LOG: xml_palloc(200) = 8558714
LOG: xml_pstrdup(bff98e78) = 8558820
LOG: xml_palloc(20) = 8558834
LOG: xml_pstrdup(bff98e78) = 8558860
LOG: xml_palloc(20) = 855887c
LOG: xml_pstrdup(bff98e78) = 85588a8
LOG: xml_palloc(20) = 85588c4
LOG: xml_pstrdup(bff98e78) = 85588f0
LOG: xml_palloc(20) = 8558904
LOG: xml_pstrdup(bff98e78) = 8558930
LOG: xml_palloc(20) = 855894c
LOG: xml_pstrdup(bff98e78) = 8558978
LOG: xml_palloc(20) = 855898c
LOG: xml_pstrdup(bff98e78) = 85589b8
LOG: xml_palloc(20) = 85589d4
LOG: xml_pstrdup(bff98e78) = 8558a00
LOG: xml_palloc(20) = 8558a14
LOG: xml_palloc(440) = 8558a40
LOG: xml_palloc(28) = 8558c4c
LOG: xml_palloc(2048) = 8558c78
LOG: xml_palloc(128) = 8559484
LOG: xml_palloc(20) = 8559510
LOG: xml_palloc(40) = 855953c
LOG: xml_palloc(40) = 8559588
LOG: xml_palloc(40) = 85595d4
LOG: xml_palloc(88) = 8559620
LOG: xml_palloc(4) = 85596ac
LOG: xml_palloc(440) = 85596c0
LOG: xml_palloc(28) = 85598cc
LOG: xml_palloc(2048) = 85598f8
LOG: xml_palloc(128) = 855a104
LOG: xml_palloc(20) = 855a190
LOG: xml_palloc(40) = 855a1bc
LOG: xml_palloc(40) = 855a208
LOG: xml_palloc(40) = 855a254
LOG: xml_palloc(36) = 855a2a0
LOG: xml_palloc(16) = 855a2ec
LOG: xml_palloc(8194) = 855a6d4
LOG: xml_palloc(60) = 855a308
LOG: xml_palloc(88) = 855a354
LOG: xml_palloc(4) = 855a3e0
LOG: xml_palloc(60) = 855a3f4
LOG: xml_palloc(11) = 855a440
LOG: xml_palloc(24) = 855a45c
LOG: xml_palloc(37) = 855a488
LOG: xml_palloc(4) = 855a4d4
LOG: xml_palloc(1024) = 855c6fc
LOG: xml_palloc(16) = 855cb08
LOG: xml_palloc(60) = 855cb24
LOG: xml_palloc(15) = 855cb70
LOG: xml_pfree(855a6d4)
LOG: xml_pfree(855a2ec)
LOG: xml_pfree(855a2a0)
LOG: xml_pfree(855a308)
LOG: xml_pfree(855a254)
LOG: xml_pfree(855a208)
LOG: xml_pfree(855a1bc)
LOG: xml_pfree(855a190)
LOG: xml_pfree(855a104)
LOG: xml_pfree(855cb08)
LOG: xml_pfree(85598f8)
LOG: xml_pfree(855c6fc)
LOG: xml_pfree(85598cc)
LOG: xml_pfree(85596c0)
LOG: xml_pfree(855cb70)
LOG: xml_pfree(855cb24)
LOG: xml_pfree(855a440)
LOG: xml_pfree(855a3f4)
LOG: xml_pfree(855a3e0)
LOG: xml_pfree(855a354)
LOG: xml_palloc(6) = 855a3e0
LOG: xml_pfree(85595d4)
LOG: xml_pfree(8559588)
LOG: xml_pfree(855953c)
LOG: xml_pfree(8559510)
LOG: xml_pfree(8559484)
LOG: xml_pfree(8558c78)
LOG: xml_pfree(8558c4c)
LOG: xml_pfree(8558a40)
LOG: xml_pfree(8558a00)
LOG: xml_pfree(8558a14)
LOG: xml_pfree(85589b8)
LOG: xml_pfree(85589d4)
LOG: xml_pfree(8558978)
LOG: xml_pfree(855898c)
LOG: xml_pfree(8558930)
LOG: xml_pfree(855894c)
LOG: xml_pfree(85588f0)
LOG: xml_pfree(8558904)
LOG: xml_pfree(85588a8)
LOG: xml_pfree(85588c4)
LOG: xml_pfree(8558860)
LOG: xml_pfree(855887c)
LOG: xml_pfree(8558820)
LOG: xml_pfree(8558834)
LOG: xml_pfree(8558714)
LOG: xml_pfree(855a488)
LOG: xml_pfree(855a4d4)
LOG: xml_pfree(855a45c)
LOG: xml_pfree(855a3e0)
LOG: xml_pfree(8559620)
LOG: xml_pfree(853c180)
LOG: server process (PID 13473) was terminated by signal 11: Segmentation fault
LOG: terminating any other active server processes
LOG: all server processes terminated; reinitializing
LOG: database system was interrupted; last known up at 2007-10-31 16:23:55 GMT
LOG: database system was not properly shut down; automatic recovery in progress
LOG: record with zero length at 0/70DE00
LOG: redo is not required
LOG: autovacuum launcher started
LOG: database system is ready to accept connections
---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster