3 ms·
That was an amusing post to see pop up here, as I believe I came up with the "copyover" name when I copied Melvin Smith (aka "Fusion") idea about "hot reboot" f
by Erwin 2y ago
That was an amusing post to see pop up here, as I believe I came up with the "copyover" name when I copied Melvin Smith (aka "Fusion") idea about "hot reboot" from his "MUD++" code base to the popular Diku-based MERC/Envy etc. bases -- that was 2000 or probably earlier. Whether Melvin originally got the idea from somewhere else I don't know.
That version just used exec, and closed all files but network descriptors already logged in, the mapping of fds -> login names was saved in a file. When the new copy started up, it would log the users on existing file descriptors. Today, using explicit file descriptor passing (so you don't accidentally keep files open) or a long-running proxy would be preferable.
Back then C/C++ were often used by the developers, and we were at best CS students. There were surprisingly few segmentation faults, but I remember a few mysterious memory corruptions...
- Multicomp 2y agoOnly on HN. Thanks for sharing!
- jonmarkgo 2y ago99% sure I used your copyover snippet when we first added it to our MUD like 25 years ago
- johnbellone 2y agoI definitely used his copy over snippet when implementing it.
- em-bee 2y ago2000 or probably earlier according to the patches in the source posted on your website the main work was done 1996-1997 ;-) i am actually surprised that this didn't happen earlier, given that Diku itself was inspired by LPMuds which could do live code update already in the early 90s. of course the motivation for Diku was to produce something more stable than LPMud, so maybe they didn't think that live updates were a good idea in the first place. (that said, i don't remember LPMuds being unstable myself, but i only played from about 1992 at which time it may have improved)
- tdeck 2y agoThis kind of reminds me of a story I heard about how they passed around raw function pointers between servers as an RPC mechanism at Yahoo back in the day. They'd disabled ASLR to make that possible. I guess there were few enough segmentation faults :).
- _jackdk_ 2y agoSo the original versions were even simpler than I knew! I'd like to add this detail to the article. How would you like to be credited?