Hi, the perl test which tests if writing to a broken pipe fails properly doesn't fail, as reported before. Under rpctrace, it did. Here the main code:
signal (SIGPIPE, foo); pipe (fds); close (fds[0]); /* sleep (1); */ err = write (fds[1], "hallo", 6); I think the reason might be that the write happens before the dead name notification for the other end of the pipe is processed! I have not verified this by monitoring what pflocal does, but this is the only reasonable explanation. The write() above succeeds. When I add a pause just before that (the sleep() above), the program works correctly, but raising the pipe signal. This is because close() is asynchronous on the Hurd. This was also an issue for SO_LINGER, might be an issue for record locking (depends on how we will implement it, I guess), and was also an issue for one other case where we need an error value from the server (I forgot what it was, Roland mentioned that in his reply to my SO_LINGER analysis). I am not sure if this particular test case is required to have the expected result under POSIX. But even if not, I think we need to tart to think about some synchronization with fileystem servers at close(). For example, couldn't we move the send right back to the filesystem server in close? The server could check deallocate it and check if it was the last one, and act accordingly (for record locks, it would not check, but just remove all locks for this file, again depending on how we implement that). Maybe something like that, I haven't thought it through yet. Thanks, Marcus _______________________________________________ Bug-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-hurd