Re: PQtrace doesn't work - Mailing list pgsql-general

From Bruce Momjian
Subject Re: PQtrace doesn't work
Date
Msg-id 200509230224.j8N2O2h21677@candle.pha.pa.us
Whole thread Raw
In response to PQtrace doesn't work  ("W. van den Akker" <listsrv@wilsoft.nl>)
Responses Re: PQtrace doesn't work
List pgsql-general
W. van den Akker wrote:
> Hello,
>
> I've send this message also on 29-1-2004 and have since no solution for
> this problem .. >:o .
> I have a little test program (see at the end of the message).
> The program crashes when PQTrace is called (instruction xxxx referenced
> memory at "0x00000010", the
> memory could not be written" (obvious ... ). I use the library
> libpqdll.lib and postgresql v8.0.1, but also happens
> in 7.4.9.
> Running under W2000 sp4, VC++ 6 SP5. If compiling under Linux then there
> is no problem. Obvious there is
> something wrong with the use under windows
>
> If I comment traceoption all works fine.

Looking at the code, the only thing I see done by PQtrace are some calls
to fprintf to that file descriptor, like this:

    fe-misc.c:  fprintf(conn->Pfdebug, libpq_gettext("To backend> Msg %c\n"),

Hard to imagine what would fail there, unless libpq_gettext() doesn't
work, but you are probably not use NLS, so it would be a noop:

    #define libpq_gettext(x) (x)

Can you send us a backtrace of the failure from VC++?  We don't have too
many internals guys using that setup, but the backtrace should suggest a
cause.

---------------------------------------------------------------------------


>
> Any ideas?
>
> gr,
>
> Willem.
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <libpq-fe.h>
> #include <winsock.h>
>
> void main ()
> {
>     int  nFields;
>     int     i, j;
>
>     PGconn    *conn;
>     PGresult *res;
>
>     char *pghost = "linux";
>     char *dbName = "some_db";
>
>     FILE *debug;
>
>     WSADATA  wsadata;
>     WSAStartup(0x0101, &wsadata);
>
>
>    conn = PQsetdbLogin (pghost, NULL, NULL, NULL, dbName, "user","");
>
>    if (PQstatus(conn) == CONNECTION_BAD)
>    {
>        printf ("Connection to database %s is failed\n", dbName);
>        printf ("%s", PQerrorMessage (conn));
>        PQfinish (conn);
>        exit (1);
>    }
>
>    debug = fopen ("trace.out", "w");
>  --->>  PQtrace (conn, debug);
>
>    res = PQexec (conn, "BEGIN");
>    if (!res || PQresultStatus (res) != PGRES_COMMAND_OK)
>    {
>        printf ("BEGIN command failed\n");
>        PQclear (res);
>        PQfinish (conn);
>        exit (1);
>    }
>
>    PQclear (res);
>
>    res = PQexec (conn, "DECLARE mycursor CURSOR FOR select sum(id) from
> relaties");
>    if (!res || PQresultStatus (res) != PGRES_COMMAND_OK)
>    {
>        printf ("DECLARE CURSOR command failed\n");
>        PQclear (res);
>        PQfinish (conn);
>        exit (1);
>    }
>
>    PQclear (res);
>    res = PQexec (conn, "FETCH ALL in mycursor");
>    if (!res || PQresultStatus (res) != PGRES_TUPLES_OK)
>    {
>        printf ("FETCH ALL command didn't return tuples properly\n");
>        PQclear (res);
>        PQfinish (conn);
>        exit (1);
>    }
>
>    nFields = PQnfields (res);
>    for (i = 0; i < nFields; i++)
>        printf ("%-15s", PQfname (res, i));
>
>    printf ("\n\n");
>
>    for (i = 0; i < PQntuples (res); i++)
>    {
>        for (j = 0; j < nFields; j++)
>            printf ("%-15s", PQgetvalue (res, i, j));
>        printf ("\n");
>    }
>
>    PQclear (res);
>
>    res = PQexec (conn, "CLOSE mycursor");
>    PQclear (res);
>
>    res = PQexec (conn, "COMMIT");
>    PQclear (res);
>      PQfinish (conn);
>
>    fclose (debug);
>
>    WSACleanup();
> }
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 1: if posting/reading through Usenet, please send an appropriate
>        subscribe-nomail command to majordomo@postgresql.org so that your
>        message can get through to the mailing list cleanly
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

pgsql-general by date:

Previous
From: vishal saberwal
Date:
Subject: Re: Getting the amount of overlap when using OVERLAPS
Next
From: Bruno Wolff III
Date:
Subject: Re: array_dims array_lower/upper distance