Re: [RELEASE] [CODE] [LONG] Guilds Code Info.

From: Patrick Dughi (dughi@IMAXX.NET)
Date: 04/29/98


>
> ObCircle: Has anyone done anything like catching SIGSEGVs, writing a
> copyover file (assuring certain integrity first), and rebooting that
> way?  No lost connections.  This is a simplified version of using
> mprotect to ensure safe saves when segment violations happen, and
> would be a fairly easy first-step.
>
        I believe that would be problematic, since any crash errors being
created would by their very nature, require very _very_ indepth integrity
checking, and the chance that you'd have to blank out entire pieces of
data (say, the third member in a linked list, or the player saved_data
structure...) which would end up - I'd suspect - causing even more trouble
- specially if said data is saved.. you'd have the symptoms of the crash,
even if you fixed the crash in the first place.

        Even just doing basic signal catching usually ruins a good part of
the gdb core output (using abort(), or sending a SIG_TERM (depending on
how POSIX-oriented you are i'd guess).  Its very hard to insure that you
don't backup over the frame that holds useful information.  If you're that
woried about the connections, I'd say fork a seperate process containing
the socket/descriptor data, and have that be the mainstay. Should the mud
die, reboot it, and restore only the descriptors, re-load all the
saved-type data... deal with the fact that its a normal crash, you just
didn't have to log back in, its don'e for you automatically.

                                                PjD


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST