Intermittent hang in SQLConnect (ODBC, PostgreSQL 15, Windows) - Mailing list pgsql-general

From shashi B savarn
Subject Intermittent hang in SQLConnect (ODBC, PostgreSQL 15, Windows)
Date
Msg-id CA+4uE8JyjKfGuZP2c_XDtxdd6O65q+RHDJRr5=Q6UOHcRLErVg@mail.gmail.com
Whole thread
List pgsql-general

Hi all,

We are encountering an intermittent issue where our Windows-based application hangs indefinitely during SQLConnect when connecting to a PostgreSQL server via ODBC.

Environment

  • PostgreSQL version:  15.0.15.25315
  • ODBC driver: psqlODBC 16.00.0007
  • Connection type: ODBC using certificate-based authentication
  • Deployment: Application and PostgreSQL server both run on the same machine (localhost)

Application Behavior

  • The application maintains:
    • Some long-lived persistent connections
    • A few short-lived connections (3–4) that are opened/closed periodically
  • Connection pooling is enabled (we also tested with pooling disabled and reduced timeouts—no change)

Configuration

  • Connection timeout is explicitly set before calling SQLConnect
  • TCP keepalive parameters are configured
  • Both settings are visible in PostgreSQL ODBC trace logs

Issue Description

On a subset of systems, intermittently (roughly once a week, sometimes more frequently), the SQLConnect call:

  • Hangs indefinitely
  • Does not return or timeout

Observations / Troubleshooting

  • Initially suspected Microsoft Defender or network filtering:
    • Added PostgreSQL data directory to exclusions → no improvement
    • No network filtering/firewall issues observed
  • Adjusted connection pooling and timeout values → no impact

Call Stack During Hang

mswsock!WSPStartup
mswsock!WSPStartup
ws2_32!select
libpq!PQsocketPoll
libpq!PQsocketPoll
libpq!PQgetResult
psqlodbc35w!Ordinal94
psqlodbc35w!Ordinal94
psqlodbc35w!Ordinal94
psqlodbc35w!SQLConnectW
odbc32!SQLConnectW
odbc32!ODBCSetTryWaitValue
comsvcs!DispManGetContext
comsvcs!DispManGetContext
odbc32!SQLDriverConnectW
odbc32!SQLDriverConnectW
odbc32!SQLFreeStmt
odbc32!SQLConnectW
odbc32!SQLConnect

From the stack, it appears the hang occurs in:

  • libpq!PQsocketPoll / PQgetResult, which eventually blocks in
  • ws2_32!select

This suggests the thread is waiting on a socket event during connection establishment (possibly SSL/certificate handshake or server response).

Questions

  • Has anyone experienced similar behavior with PostgreSQL 15 and psqlODBC on Windows?
  • Are there known issues where SQLConnect can block indefinitely despite configured timeouts?
  • Could this be related to libpq socket polling behavior or SSL/cert authentication edge cases?

Any insights or suggestions for further diagnostics would be greatly appreciated.

Thanks in advance.

pgsql-general by date:

Previous
From: Matthias Apitz
Date:
Subject: PostgreSQL server with SSL
Next
From: Joan Frey
Date:
Subject: Re: PostgreSQL server with SSL