This is a discussion on BUG #1467: fe_connect doesn't handle EINTR right within the pgsql Bugs forums, part of the PostgreSQL category; --> The following bug has been logged online: Bug reference: 1467 Logged by: Florian Hars Email address: hars@bik-gmbh.de PostgreSQL version: ...
| |||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| The following bug has been logged online: Bug reference: 1467 Logged by: Florian Hars Email address: hars@bik-gmbh.de PostgreSQL version: 8.0.1 Operating system: All Description: fe_connect doesn't handle EINTR right Details: The file pgsql/src/interfaces/libpq/fe-connect.c contains the code fragment retry_connect: if (connect(conn->sock, addr_cur->ai_addr, addr_cur->ai_addrlen) < 0) { if (SOCK_ERRNO == EINTR) /* Interrupted system call - just try again */ goto retry_connect; } This is not in accordance with a strict legalistic reading of the POSIX spec, according to which connect is not restartable so that you have to use select or poll after connect returned with EINTR. See http://www.eleves.ens.fr:8080/home/m...nect-intr.html for the ugly details, your code should work on Linux, but not on Solaris or (Free|Open)BSD. ---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster |
| ||||
| I think this has been corrected in 8.1. --------------------------------------------------------------------------- Florian Hars wrote: > > The following bug has been logged online: > > Bug reference: 1467 > Logged by: Florian Hars > Email address: hars@bik-gmbh.de > PostgreSQL version: 8.0.1 > Operating system: All > Description: fe_connect doesn't handle EINTR right > Details: > > The file pgsql/src/interfaces/libpq/fe-connect.c contains the code fragment > > retry_connect: > if (connect(conn->sock, addr_cur->ai_addr, > addr_cur->ai_addrlen) < 0) > { > if (SOCK_ERRNO == EINTR) > /* Interrupted system call - just try again */ > goto retry_connect; > } > > This is not in accordance with a strict legalistic reading of the POSIX > spec, according to which connect is not restartable so that you have to use > select or poll after connect returned with EINTR. > > See > http://www.eleves.ens.fr:8080/home/m...nect-intr.html > for the ugly details, your code should work on Linux, but not on Solaris or > (Free|Open)BSD. > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq |