Received: from localhost (postgresql.org [64.49.215.8]) by postgresql.org (Postfix) with ESMTP id 466E347589A for ; Sat, 17 Aug 2002 00:39:50 -0400 (EDT) Received: from fep1.cogeco.net (smtp.cogeco.net [216.221.81.25]) by postgresql.org (Postfix) with ESMTP id C0618475872 for ; Sat, 17 Aug 2002 00:39:49 -0400 (EDT) Received: from cogeco.ca (d150-168-167.home.cgocable.net [24.150.168.167]) by fep1.cogeco.net (Postfix) with ESMTP id C77AE59F1 for ; Sat, 17 Aug 2002 00:39:53 -0400 (EDT) Message-ID: <3D5DD399.7090200@cogeco.ca> Date: Sat, 17 Aug 2002 00:39:53 -0400 From: "Warren W. Gay VE3WWG" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.0rc2) Gecko/20020618 Netscape/7.0b1 X-Accept-Language: en-us, en MIME-Version: 1.0 To: PostgreSQL mailing list Subject: libpq bug handling signals Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Scanned: by AMaViS new-20020517 X-Archive-Number: 200208/55 X-Sequence-Number: 3017 I am experiencing problems with lo_write() (mostly), WRT to life after a signal has been handled. Socket I/O (read(2) for example) will return -1 and have errno = EINTR if it was blocked reading, and a signal was handled successfully while it was blocked. It appears that lo_write() should do something similar, but doesn't in practice ... If I clear errno=0 and then perform lo_write()s during which time a signal is received and handled, lo_write() will return -1 indicating an error. However, upon checking the errno vallue, it indicates that no error has occurred (errno=0). However, if I set errno=EINTR prior to calling lo_write() each time, the same -1 is returned (after a signal) but now the errno = EINTR (as I had originally expected it should have been). It appears that EINTR processing is not correct or is incomplete in the libpq code. I have experienced similar weirdness in the operation of lo_lseek(). Do I need to subsequently submit this as a bug somewhere? Thanks, Warren. -- Warren W. Gay VE3WWG http://home.cogeco.ca/~ve3wwg