Re: Postgresql 8.3 beta crash

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: Postgresql 8.3 beta crash
Дата
Msg-id 4728AE87.3020005@enterprisedb.com
обсуждение исходный текст
Ответ на Postgresql 8.3 beta crash  (Sheikh Amjad <sheikhamjad@gmail.com>)
Ответы Re: Postgresql 8.3 beta crash  (Heikki Linnakangas <heikki@enterprisedb.com>)
Список pgsql-hackers
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

В списке pgsql-hackers по дате отправления:

Предыдущее
От: jaimelima@al.uap.edu.ar
Дата:
Сообщение:
Следующее
От: Michael Glaesemann
Дата:
Сообщение: Re: