mbbsemu / MBBSEmu

The MajorBBS Emulation Project is an Open Source, Cross-Platform emulator for easily running The MajorBBS & Worldgroup Modules
https://www.mbbsemu.com
MIT License
133 stars 14 forks source link

(LOGCAS) Casino does NOT like the graceful shutdown #32

Closed tuday2 closed 4 years ago

tuday2 commented 4 years ago

Hit CTRL-C in Windows 2019 Server running MBBSEmu -- Mutants! & T-LORD shutdown correctly, Casino threw this error:

2020-08-19 22:34:41.4263 Info MBBSEmu.HostProcess.MbbsHost.b__18_0 Calling shutdown routine on module LOGCAS Unhandled exception. System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter 'Unable to locate FFFF:00C1') at MBBSEmu.Memory.MemoryCore.GetWord(UInt16 segment, UInt16 offset) at MBBSEmu.CPU.CpuCore.GetOperandValueUInt16(OpKind opKind, EnumOperandType operandType) at MBBSEmu.CPU.CpuCore.Tick() at MBBSEmu.HostProcess.ExecutionUnits.ExecutionUnit.Execute(IntPtr16 entryPoint, UInt16 channelNumber, Boolean simulateCallFar, Boolean bypassState, Queue1 initialStackValues, UInt16 initialStackPointer) at MBBSEmu.Module.MbbsModule.Execute(IntPtr16 entryPoint, UInt16 channelNumber, Boolean simulateCallFar, Boolean bypassSetState, Queue1 initialStackValues, UInt16 initialStackPointer) at MBBSEmu.HostProcess.MbbsHost.CallModuleRoutine(String routine, Action`1 preRunCallback, UInt16 channel) at MBBSEmu.HostProcess.MbbsHost.Shutdown() at MBBSEmu.HostProcess.MbbsHost.WorkerThread() at System.Threading.ThreadHelper.ThreadStart_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location where exception was thrown --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ThreadHelper.ThreadStart()

enusbaum commented 4 years ago

Casino is checking MAJORBBS.193 (int errcod;) and evaluating if it's 0 or not.

image

Best I can tell at the moment, if it's zero it closes the open MSG file and BTV file and moves on.

To address this issue, the property MAJORBBS.193 (int errcod;) needs to be implemented which always returns 0