Re: Segmentation Fault

From: "Frankie Lam" <frankie(at)ucr(dot)com(dot)hk>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: Segmentation Fault
Date: 2003-04-03 09:31:16
Message-ID: b6gutt$18tj$1@news.hub.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)ucr(dot)com(dot)hk> wrote in message
news:b6gku9$2llu$1(at)news(dot)hub(dot)org(dot)(dot)(dot)
> 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.
>
>

In response to

Responses

Browse pgsql-interfaces by date

  From Date Subject
Next Message Christoph Haller 2003-04-03 11:23:33 Re: Segmentation Fault
Previous Message Jose Luis LG 2003-04-03 09:28:17 unsubscribe