Re: Segmentation Fault - Mailing list pgsql-interfaces

From Frankie Lam
Subject Re: Segmentation Fault
Date
Msg-id b6gutt$18tj$1@news.hub.org
Whole thread Raw
In response to Segmentation Fault  ("Frankie Lam" <frankie@ucr.com.hk>)
Responses Re: Segmentation Fault
List pgsql-interfaces
Oh, I'm so sorry....
I've made a stupid mistake... and this mistake is at the cost of 3 days
work.
The segmentation fault is totally irrelevant to the time functions in
previous thread.

Buggy Code Fragment FYI
--8<------------------------
..
..  len =strlen(PQgetvalue(res, 0, i)) * 2 + 1;  // <=========  printf("***********length=%d\n", len);  tmp2 = (char *)
calloc(sizeof(char),len);  strcat(p2, "'");
 
  PQescapeString(tmp2, PQgetvalue(res, 0, i), len); // <========= this
line,  // PQescapeString won't stop at '\0', so it will go out  // of range of the returning value by PQgetvalue().
  strcat(p2, tmp2);  strcat(p2, "', ");  free(tmp2);  tmp2 = NULL;
..
..
---------->8--------------

Here I have one more question, is there any debugging tools other than GDB?
I'm not quite used to it, debugging segmentation fault is really a pain. :-(

Thx,
Frankie Lam

"Frankie Lam" <frankie@ucr.com.hk> wrote in message
news:b6gku9$2llu$1@news.hub.org...
> Hi,
>
> I want to ask what does the error message mean by
> "0x40023abb in resetPQExpBuffer () from /usr/local/pgsql/lib/libpq.so.3"?
> I got this message using GDB to trace the program.
> (Segmentation fault occurswhen run the program directly.)
>
> I reviewed the program many times, and found this is only to happen when
> I call the `ctime()'  or `time()' in a program function.
>
> code fragment FYI
> --8<------------------------
> // `res = PQexec(conn, sql)' here..
> ...
> ...
>   }
>   else if (!strcmp(PQfname(res, i), SYNCTIME_FIELD_NAME))
>   {
> //   puts("7");
>    //char chP[30];
>    printf("timer=%ld\n", time(timer)); // <====== without this line, the
> program works
> //   printf("%s", ctime(time(NULL)));
> //   printf("%s", asctime(localtime(&timer)));
>    sprintf(tmp, "'1999-12-11 09:50:58'::timestamp, ");
>    strcat(p2, tmp);
>   }
>   else if (!strcmp(PQfname(res, i), SERVERID_FIELD_NAME))
>   {
>    puts("8");
>    sprintf(tmp, "'%s'", PQgetvalue(res, 0, i));
>    strcat(p2, tmp);
>   }
>  }
> ...
> ...
> freeing resources here
> ---------->8--------------
>
> Thank you very much.
>
> Frankie Lam.
>
>



pgsql-interfaces by date:

Previous
From: "Jose Luis LG"
Date:
Subject: unsubscribe
Next
From: Christoph Haller
Date:
Subject: Re: Segmentation Fault