Postgres libpq调用PQfinish崩溃

时间:2016-02-09 16:22:11

标签: c# postgresql interop

[DllImport("libpq", EntryPoint = "PQfinish", CallingConvention = CallingConvention.Cdecl)]
    internal static extern void PQfinish(IntPtr connection);
    private static void Close(IntPtr connection)
    {
        PQfinish(connection);
    }

在尝试关闭与postgreSQL数据库的连接时,我有这个iterop代码从我的asp.net dot net core调用PQfinish。

由于未知原因,它可能会工作一次,然后崩溃并使整个网站停止工作。

我可以打开连接,执行查询,检索结果,没有任何问题。只调用PQfinish总是崩溃。

PostgreSQL 9.5 x64

1 个答案:

答案 0 :(得分:0)

我们的libpq包装器在c ++中遇到了类似的问题。

看起来它在PQfinish调用上崩溃了,但这是因为我们在使用PQclear后对结果进行了回复(因此释放了PGresult)。

稍后我们想要使用PGresult,应用程序崩溃了。

我们的解决方案是在使用PQclear释放它之前返回从PGresult复制的字符串。

检查你是否做了类似的事情。