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
126 stars 14 forks source link

[DIALCHAT] DialChat - Saving settings in DialChat causes crash due to missing ordinal 224 (FSDFXT) #41

Open dlightman311 opened 3 years ago

dlightman311 commented 3 years ago

Enter DialChat, execute /set command, change a value and save.

Unhandled exception. System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter 'Unknown Exported Function Ordinal in MAJORBBS: 244') at MBBSEmu.HostProcess.ExportedModules.Majorbbs.Invoke(UInt16 ordinal, Boolean offsetsOnly) at MBBSEmu.HostProcess.ExecutionUnits.ExecutionUnit.ExternalFunctionDelegate(UInt16 ordinal, UInt16 functionOrdinal) 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.HostRoutines.FsdRoutines.ExitingFullScreenDisplay(SessionBase session) at MBBSEmu.HostProcess.HostRoutines.FsdRoutines.ProcessSessionState(SessionBase session, Dictionary`2 modules) 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.ThreadHelper.ThreadStart()

enusbaum commented 3 years ago

Ordinal MAJORBBS.244 is FSDFXT

char *stg=fsdfxt(int fldno, char *buffer, int maxlen);

From what I can tell, DialChat uses this method to take a specific field from the FSD and save it to the specified buffer.

image

ftoledo commented 2 years ago

I confirm this issue with different crash log:

2021-10-24 21:19:37.4416 Info MBBSEmu.HostProcess.MbbsHost.WorkerThread Added Session 127.0.0.1:33347 to channel 1
2021-10-24 21:20:33.4234 Debug MBBSEmu.HostProcess.ExportedModules.ExportedModuleBase.FormatPrintf (DIALCHAT) Empty Formatter (vsprintf:False)
2021-10-24 21:20:33.4234 Debug MBBSEmu.HostProcess.ExportedModules.ExportedModuleBase.FormatPrintf (DIALCHAT) Empty Formatter (vsprintf:False)
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
   at MBBSEmu.HostProcess.Fsd.FsdUtility.<>c.<BuildAnswerString>b__7_0(FsdFieldSpec field)
   at System.Linq.Enumerable.Sum[TSource](IEnumerable`1 source, Func`2 selector)
   at MBBSEmu.HostProcess.Fsd.FsdUtility.BuildAnswerString(FsdStatus fsdStatus)
   at MBBSEmu.HostProcess.HostRoutines.FsdRoutines.FieldVerificationRoutine(SessionBase session, FsdStatus fieldStatus)
   at MBBSEmu.HostProcess.HostRoutines.FsdRoutines.ValidateField(SessionBase session, FsdStatus fsdStatus)
   at MBBSEmu.HostProcess.HostRoutines.FsdRoutines.InFullScreenDisplay(SessionBase session)
   at MBBSEmu.HostProcess.HostRoutines.FsdRoutines.ProcessSessionState(SessionBase session, Dictionary`2 modules)
   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 ---
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
Abortado