[net.wanted.sources] restarting core images

tom@puff.UUCP (Tom Christiansen) (04/04/86)

OS:   BSD4.3 UNIX w/ Sun NFS
CPU:  MicroVax II WorkStations, Vax 7[58]0's

Does anyone out there have any experience with restarting core images as
generated either by the core() function out of sys/kern_sig.c or by the
gcore program?   The end goal is to be able to checkpoint a process for
eventual restarting, possibly but not necessariily on a different machine.  
I see two major difficulties: retaining open files and restoring all 
three segments.

I think I can deal with retaining open files, providing we're talking
about a real file, rather that a socket or a device: just record where
the current r/w pointer is, seek to the start of the file and write it
somewhere, like core.pid.fd0, core.pid.fd1, etc.  Then when you want
restart the core image, open these files and seek to the correct
point.  This way you don't even have to know the names of the files.
Anyone think of any reason that would require knowledge of the file
names themselves?

I know how rogue saves things; it just writes out its entire data
segment, does an sbrk() of the write size on restart, and just writes
the old data segment there.  But how do you restore the old stack?
Could you use the same trick but instead of sbrk(), just call a
recursive function until you stack is big enough?


Thanks,
tom

-- 
Thomas Scott Christiansen, Project Assistant
Computer Systems Lab
Department of Computer Sciences
University of Wisconsin, Madison

UUCP: ...!{harvard,ihnp4,seismo,topaz}!uwvax!tom
ARPA: tom@{rsch,crys,limburger,puff,gumby,pokey,devo}.wisc.edu