[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 по дате отправления: