I have a very simple program (below) only marginally adapted from the example 
here:
  http://libdbi.sourceforge.net/docs/programmers-guide/quickstart-code.html

which works, but when run through valgrind produces an enormous number of 
errors.
The program in its entirety is below. It makes a connection to pgsql, does no
queries, and immediately shuts the connection.

I'm not so much worried about the alleged memory leaks but the 85 instances of
"Conditional jump or move depends on uninitialised value(s)". I don't
know if this is a real problem, but even if not the challenge here
is that /any/ query via dbi is now tainted as uninitialised, so it's impossible
to see 'real' errors.

I've not attached a full valgrind dump as it's enormous. However, you can see
the first two below.

Any ideas?

My platform is stock Ubuntu 14.04:

libdbd-pgsql:amd64 0.9.0-2ubuntu2
libdbi1:amd64 0.9.0-1
libdbi-dev 0.9.0-1

-- 
Alex Bligh




#include <stdio.h>
#include <stdlib.h>
#include <dbi/dbi.h>
#include <string.h>

/*
 * test.c
 *
 * compile with:
 *   gcc -Wall -o test test.c -ldbi
 *
 * Run with:
 *   ./test USERNAME PASSWORD [DBNAME]
 *
 */

int
main (int argc, char **argv)
{
  dbi_conn conn = NULL;
  dbi_inst conn_instance;

  if (argc < 3)
    {
      fprintf (stderr, "Syntax: test USERNAME PASSWORD [DBNAME]\n");
      exit (1);
    }

  /* return if already started */
  if (conn)
    return 0;

  /* should be unnecessary */
  memset (&conn_instance, 0, sizeof (conn_instance));

  dbi_initialize_r (NULL, &conn_instance);
  conn = dbi_conn_new_r ("pgsql", conn_instance);

  dbi_conn_set_option (conn, "host", "127.0.0.1");
  dbi_conn_set_option (conn, "username", argv[1]);
  dbi_conn_set_option (conn, "password", argv[2]);
  if (argv[3])
    dbi_conn_set_option (conn, "dbname", argv[3]);
  dbi_conn_set_option (conn, "encoding", "UTF-8");

  if (dbi_conn_connect (conn) < 0)
    {
      fprintf (stderr, "CONN error: cannot connect\n");
      exit (1);
    }

  dbi_conn_close (conn);
  dbi_shutdown_r (conn_instance);

  fprintf (stderr, "CONN test passed\n");

  exit (0);
}




==28748== Memcheck, a memory error detector
==28748== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==28748== Using Valgrind-3.10.0.SVN and LibVEX; rerun with -h for copyright info
==28748== Command: ./test tigerlily 6LXKKJV1QsbR38Hw tigerlily
==28748== Parent PID: 39449
==28748==
==28748== Conditional jump or move depends on uninitialised value(s)
==28748==    at 0x5E77048: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==28748==    by 0x5E6DA22: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==28748==    by 0x5E6B053: ??? (in /lib/x86_64-linux-gnu/libssl.so.1.0.0)
==28748==    by 0x5C3A936: ??? (in /usr/lib/libpq.so.5.6)
==28748==    by 0x5C316B6: ??? (in /usr/lib/libpq.so.5.6)
==28748==    by 0x5C2AA34: PQconnectPoll (in /usr/lib/libpq.so.5.6)
==28748==    by 0x5C2BB8D: ??? (in /usr/lib/libpq.so.5.6)
==28748==    by 0x5C2C496: PQconnectdb (in /usr/lib/libpq.so.5.6)
==28748==    by 0x5A16EA9: _dbd_real_connect (in 
/usr/lib/x86_64-linux-gnu/dbd/libdbdpgsql.so)
==28748==    by 0x4E3C7BE: dbi_conn_connect (in 
/usr/lib/x86_64-linux-gnu/libdbi.so.1.1.0)
==28748==    by 0x400A2C: main (in 
/home/amb/extility/git/superproject-3.1/extility-vncforwarder/vncforwarder/test)
==28748==
==28748== Conditional jump or move depends on uninitialised value(s)
==28748==    at 0x5C2ACEF: PQconnectPoll (in /usr/lib/libpq.so.5.6)
==28748==    by 0x5C2BB8D: ??? (in /usr/lib/libpq.so.5.6)
==28748==    by 0x5C2C496: PQconnectdb (in /usr/lib/libpq.so.5.6)
==28748==    by 0x5A16EA9: _dbd_real_connect (in 
/usr/lib/x86_64-linux-gnu/dbd/libdbdpgsql.so)
==28748==    by 0x4E3C7BE: dbi_conn_connect (in 
/usr/lib/x86_64-linux-gnu/libdbi.so.1.1.0)
==28748==    by 0x400A2C: main (in 
/home/amb/extility/git/superproject-3.1/extility-vncforwarder/vncforwarder/test)
(and on and on and on)


------------------------------------------------------------------------------
_______________________________________________
libdbi-users mailing list
libdbi-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libdbi-users

Reply via email to