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.

Reply via email to