Crossfire Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: broken pipes



>>>>[From Tyler Van Gorder]
    
    hmmm, Mark you said that this problem had been fixed? I seem to still
    be getting broken pipes when in server mode a person is coming in...and 
    another person is entering an exit.
    

yeah, pipe problems are ikcy. presuming that it's related to just the
plain old
"display connection lost " problem...

I fixed the problem with soda's server a long time ago, in crossedit 0.5
or something. I submitted the patches to frank but obviously they didn't
get used.

I have stopped working on actual code now, so I think the changes might
have disappeared in the latest upgrade that soda folks did, presuming
they abandonded the old code.

As far as I remember, you have to fiddle with the part about
XIOErrorHandler. Xt is simply NOT happy about using multiple displays, a
reason which makes me support client/server very strongly.

The problem being that for some stupid reason, when a display connection
dies, a SIGPIPE signal is sent to the client.
The status quo of handling it at the time was using setjmp. It was making
the wrong calls to continue the program, so I cleaning it up as best I
could, but it was very messy, and not 100% stable, since the setjmp was
not in a good place.
(the stack nesting, etc, was bad bad bad)

The following is the product of a mind without enough sleep.. beware...
 On reflection, there might be some gain to putting in a setjmp at another
 cleaner position, and having the Xerrorhandler send a USR1, to have
 another handler jump to the better place...

 Oh wait, now I remember the problem.

 The mucho grande problem:
    Xt expects the Xerror signal handler NEVER TO RETURN. If it does, the
    program dies!!!

 Philip