Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348

    [C/POSTGRESQL] Segfault PQfinish

    Ciao a tutti!

    Ho una piccola curiosita' da chiedervi, nella realizzazione di un programma demone, che accede ogni 30 minuti al DB sviluppato in POSTGRE e' piu' efficiente aprire e chiudere la connessione ogni volta oppure tenerla aperta e quando si e' deciso di killare il demone allora la connessione viene chiusa??

    Poi ho notato che ogni tanto mi da questo errore di malloc:

    codice:
    test_prova(3946,0xa0749720) malloc:*** error for object ....: Non-aligned pointer beging freed 
    etc etc
    Pero' mi lascia un po' stranito perche' mi sembra di avere scritto giusto(almeno credere).
    Comunque sia questo e' il codice:
    codice:
    PGconn * connect_db(param_conn  * param ){
    
        char *conninfo[100];
      
    	PGconn * conn;
    
    
    	sprintf(conninfo,"host=%s port=%s dbname=%s user=%s password=%s",param->host,param->port,param->dbname,param->user,param->passwd);
        conn = PQconnectdb(conninfo);
        if (PQstatus(conn) != CONNECTION_OK)
        {
            fprintf(stderr, "Connection to database failed: %s",
             PQerrorMessage(conn));
           	 exit_nicely(conn);
        }
       
    
    return conn;
    }//connect_db
    
    
    
    
    int handle_db(){
    
    	PGconn * conn;
    
    	conn =connect_db(param ); 
    
            PQfinish(conn);
    handle_db viene eseguito per i test ogni minuto .
    Il segfault avviene in PQfinish.

    Ma non saprei proprio il perche'..

  2. #2

    Re: [C/POSTGRESQL] Segfault PQfinish

    Originariamente inviato da nomida

    codice:
        char *conninfo[100];
    sostituisci con:
    Codice PHP:
        char conninfo[100]; 
    la PQconnectdb vuole infatti un puntatore a carattere, non un puntatatore di un puntatore a carattere. Strano che il compilatore non ti segnali almeno un warning. Con gcc, con il tuo codice, ottengo infatti:
    codice:
    warning: passing argument 1 of 'PQconnectdb' from incompatible pointer type
    Dato che ci sei incrementa 100 ad almeno 512..

    ;-)

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    348
    uh fi........... mi sono dimenticato di togliere il puntatore!!
    eh molto probabilmente mi da warning ma compila un po di file.

    grazie mille

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.