Description:
When I try to call mysql_init() several times in my program it finishes with 
segmentation fault.
This happens in different places of my program but always in mysql_init(). 
This is the gdb output:

#0  0x007ba6ae in malloc_consolidate () from /lib/tls/libc.so.6
#1  0x007b9e6a in _int_malloc () from /lib/tls/libc.so.6
#2  0x007b925d in malloc () from /lib/tls/libc.so.6
#3  0x001716ae in my_malloc () from /usr/local/lib/mysql/libmysqlclient.so.12
#4  0x0016c648 in mysql_init () from /usr/local/lib/mysql/libmysqlclient.so.12
#5  0x0804dee2 in myconnect () at databaseFunctions.c:14
#6  0x0804dfc0 in give_geneValue_with_key (table=0x8051fe8 \"selfRoot_shell\", 
id=9463)
    at databaseFunctions.c:37
#7  0x08049a27 in selfProfiler () at library.c:232
#8  0x0804952c in negativeSelection () at library.c:176
#9  0x0804a92d in negativeSelectionSentinel () at library.c:420
#10 0x0804edad in communicator (arg=0x755d00) at communicator.c:60
#11 0x08048cdf in main () at primary.c:169


Here are the functions I use.
The first function is only to make a connection to database:

MYSQL* myconnect()
{
   MYSQL *my_connection=malloc(sizeof(MYSQL *)); 
my_connection=mysql_init (NULL);

if(mysql_real_connect (my_connection, \"130.225.16.5\", \"ala\", \"alaSdb\", 
\"ala\", 0, NULL, 0))
  {
     return my_connection;
   }
   else
   {
     fprintf (stderr, \"Connection failed !!!\\n\");
     if (mysql_errno (my_connection))
     {
                        fprintf (stderr, \"Connection error %d: %s\\n\", 
mysql_errno (my_connection), mysql_error (my_connection));
                        return NULL;
                }
        }
        return NULL;
}

This function and a couple of others similar are to withdraw some data from 
database. All of them use myconnection() function;

char* give_geneValue_with_key(char *table,int id)
{

  MYSQL* my_connection=myconnect();
  MYSQL_RES *result=malloc(sizeof(MYSQL_RES*));
  MYSQL_ROW row;
  char temp[10000];
     sprintf(temp,\"SELECT geneValue FROM  %s where id=\'%d\'\",table,id);
      
     if(mysql_real_query (my_connection,temp,strlen(temp))) return \"0\";
     if(!(result=mysql_store_result(my_connection))) return \"0\";
     row=mysql_fetch_row(result);
     mysql_free_result(result);
     mysql_close(my_connection);
     return row[0];
}

If you have any ideas what can be a problem, please let me know.
Alina Binkowska

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to