[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: deadProxyError?



   From: Cameron Elliott <cam@indy.mvbms.com>
   Date: Mon, 6 Nov 1995 19:41:16 -0500 (EST)

   I am trying to write an HTTP server under Self, and am having a couple
   of problems.

   First, the Self VM is receiving a SIGPIPE when my application tries
   to write to a pipe that the other end has closed, and this 
   causes a stack dump, searching through the system it looks like
   the Self world doesn't have to much of an interface to the unix
   signals mechanism, so it looks like I'm going to have to issue a

   signal(SIGPIPE,DFL_IGN);

   or whatever the call is to ignore a signal, and then exec
   the Snapshot with my http server. (This is fine)

You can catch sigpipe -- signals are delivered synchronously through
the scheduler.  Look at the category `signals' in scheduler for
sigpipe.  By default the signal is caught and ignored, so the problem
you're having must be due to I/O failing on the closed pipe, not the
signal itself.

   The problems I having are:
   I keep getting deadProxyError, and I don't what this is.
   After playing with my application a while I keep losing the ability
   to connect to a well defined port.
   (Somehow something is running somewhere in the Self VM which is
   still holding onto the port.)
   And when I 'start' my application again, I get a 'EADDRINUSE' error,
   even though as far as I can tell, the unixFile is (dead).

   I don't have a clue what the solution to the deadProxyError is,
   and it seems the key to fixing the EADDRINUSE problem is to find out
   what is holding onto my well known port address, and release it.

Hmm, there isn't enough detail here for me to guess at what's
happening.  Proxies are explained in the VM reference manual (in the
section about calling foreign functions).  Are you basing the http
server on the `socketServer' implementation in the system?  That would
be a good place to start.  One thing I've observed with the socket
server is that if it crashes, the kernel still thinks the port is in
use for 1 minute after Self has been quit (presumably something is
timing out).

   And hints, clues, or experience is invited.

Sounds like a great project!  Keep us posted...

-Mario