| From: | Ilya Galdin <mymainwilliw(at)gmail(dot)com> |
|---|---|
| To: | pgsql-bugs(at)lists(dot)postgresql(dot)org |
| Subject: | [libpq] Segmentation fault when call PQfinish inside singletone pattern |
| Date: | 2019-07-02 12:56:49 |
| Message-ID: | CAG2ZDR79GgZqFFd=RHnmk=QuU9rHoCmzvPJxLgSoO1da53XizA@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | 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
| From | Date | Subject | |
|---|---|---|---|
| Next Message | David Rowley | 2019-07-02 13:13:25 | Re: GROUP BY and inheritance issue |
| Previous Message | David Rowley | 2019-07-02 12:55:35 | Re: BUG #15882: Select .... UNION ALL |