[libpq] Segmentation fault when call PQfinish inside singletone pattern
| От | Ilya Galdin | 
|---|---|
| Тема | [libpq] Segmentation fault when call PQfinish inside singletone pattern | 
| Дата | |
| Msg-id | CAG2ZDR79GgZqFFd=RHnmk=QuU9rHoCmzvPJxLgSoO1da53XizA@mail.gmail.com обсуждение исходный текст  | 
		
| Ответы | 
                	
            		Re: [libpq] Segmentation fault when call PQfinish inside singletone pattern
            		
            		 | 
		
| Список | pgsql-bugs | 
I'm create singletone class, and want to add inside PGconn object.
This class, in the past, will provide connections to DB.
// postgresql
#include <libpq-fe.h>
//==============================================================================
class TestST
{
public: static TestST& getInstance() {   static TestST test;   return test; } bool createConnection() {   mConn.reset( PQsetdbLogin("localhost", "5432", NULL, NULL,                            "test_db", "user_app",                            "passwd"),                &PQfinish); // [SIGSEGV when delete] passing a reference to the destroy function   return true; }
private: TestST() {
 }
private: std::shared_ptr<PGconn> mConn; // smart pointer to postgres connetion object
};
//==============================================================================
int main(int argc, char** argv)
{ TestST::getInstance().createConnection(); // create singletone and connection
 return 0;
}
//==============================================================================When singletone is deleted, function PQfinish calls signal Segmentation fault.
But If I move the initialization of mConn to the constructor - it's work. If I build and run on windows (MSVC) - it's work.
postgres version 9.6.9; OS - Debian 9; gcc version 6.3.0
Faithfully yours Ilya Galdin
В списке pgsql-bugs по дате отправления: