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.
>
>
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 |