[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  (Robert Haas <robertmhaas@gmail.com>)
Список 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 по дате отправления:

Предыдущее
От: David Rowley
Дата:
Сообщение: Re: BUG #15882: Select .... UNION ALL
Следующее
От: David Rowley
Дата:
Сообщение: Re: GROUP BY and inheritance issue