I tried installing a recent version of hotboot on a SMAUG 1.4a stock code. It worked, but it seems that whenever someone is creating or logging on, and it should kick them off, it crashes the MUD with a segmentation fault. Here's my backtrace:
#0 0x0809dd87 in do_hotboot (ch=Cannot access memory at address 0xbfffe010
) at comm.c:4420
Cannot access memory at address 0xbfffe008
I'm not Samson (I'd say thats potentially an advantage but someone will prolly thump me or worse *iwhis*
), but I'll have a go anyway....
Firstly the backtrace isn't complete, I can't believe do_hotboot is the only stack item (if it is, something REALLY smashed the stack up), there should at least be calls below to game_loop among other things (although if not compiled with the right debug flags you can lack certain information..), but anywho..
The variable ch, appears to be invalid, be this through where the character was booted from the game as you said it should, or it was in the process of doing so and it never invalidated/removed the pointer from a list correctly. Either this or it was never initalised correctly and its hovering around randomly in memory and when you attempt to access it you get a wierd part of memory way outta your stack space and it goes boom
During the process of logging on/creating a character you exist as a descriptor up until a proper char_data is allocated and assigned, all I can think of at this point with the info you provided is that the pointers in the descriptor_data for those newer connections are not initalised to NULL correctly, and thus when it tries to access them it goes boom. While not having read the hotboot code (yet), most copyover/hotboot solutions work by filtering along the descriptor list and saving off the char_data info referred to by them, thus if a descriptor doesn't have a character it can't be restored.. if its not setup correctly, then this could screw everything up and crash it.
Firstly I'd recommend checking that during login/creation the descriptor_data is initalised correctly, there is usually a character field or similar inside the descriptor_data that MUST be set to NULL when the descriptor_data struct is created for use, failure to do so can result in the prog crashing like this.
Barring that, I'll go read the hotboot code, unless Samson gets back and provides a better and more complete answer