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

Reply via email to