New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Runtime Issue]: Multiplayer crash after round completion #217
Comments
Update on this: |
Is this related to #213 where a new |
@DescentMax does this still occur? |
Will need to test this. Sorry just saw my email on this. I need to get folks to test this. Piccu Edition does not crash on the Fury set at least. I gotta see about main v1.5 |
I am not sure if it's linked, but on Windows 11, the game will crash multiple times on startup in dedicated mode. The white console pops up, you see I have traced this, painstakingly since there are no debugging symbols to assist in dedicated mode. In // do io init stuff
io_info.obj = Descent;
io_info.use_lo_res_time = (bool)(FindArg("-lorestimer") != 0);
io_info.joy_emulation = (bool)((FindArg("-alternatejoy") == 0) && (FindArg("-directinput") == 0));
io_info.key_emulation = (bool)(FindArg("-slowkey")!=0); //WIN95: DirectInput is flaky for some keys.
INIT_MESSAGE("Starting DDIO Initialization.");
if (!ddio_Init(&io_info)) {
INIT_MESSAGE("I/O initialization failed.");
Error("I/O initialization failed.");
} else {
INIT_MESSAGE("I/O initialized.");
} The final message I get before a crash is bool ddio_Init(ddio_init_info *init_info) {
static bool first_time = true;
bool res;
ASSERT(!DDIO_initialized);
if (first_time) {
atexit(ddio_Close);
}
mprintf((0, "DDIO system initializing...\n"));
res = ddio_InternalInit(init_info);
if (res) {
if (first_time) { // initialize once and only once.
timer_Init(0, init_info->use_lo_res_time);
}
if (!ddio_KeyInit(init_info)) {
Error("Failed to initialize keyboard system.");
}
ddio_MouseInit();
}
first_time = false;
DDIO_initialized = true;
joy_Init(init_info->joy_emulation);
return res;
} I tried commenting out the assertion to try and force it, but that proved to not be the problem. Therefore, we can check the actual initialization bool ddio_InternalInit(ddio_init_info *init_info) {
oeWin32Application *obj = (oeWin32Application *)init_info->obj;
LPDIRECTINPUT lpdi;
HRESULT dires;
ASSERT(!DDIO_init);
// Initialize DirectInput subsystem
mprintf((0, "DI system initializing.\n"));
// Try to open DirectX 5.00
dires = DirectInputCreate((HINSTANCE)obj->m_hInstance, DIRECTINPUT_VERSION, &lpdi, NULL);
// Deal with error opening DX5
if (dires != DI_OK) {
// If running NT, try DirectX 3.0
if (obj->NT()) {
dires = DirectInputCreate((HINSTANCE)obj->m_hInstance, 0x0300, &lpdi, NULL);
if (dires != DI_OK) {
Error("Unable to DirectInput system (Requires at least DirectX 3.0 For NT) [DirectInput:%x]\n", dires);
}
} else { // Not running NT, so error out
// Couldn't open DirectX, so print error
Error("Unable to DirectInput system (Requires at least DirectX 5.0) [DirectInput:%x]\n", dires);
}
}
DInputData.app = obj;
DInputData.lpdi = lpdi;
DInputData.hwnd = (HWND)obj->m_hWnd;
DDIO_init = 1;
return 1;
} This will need a refactor for modern systems eventually. The solution, for now, is to use Windows 95 compatibility mode. By doing so I am able to start the server consistently. HOWEVER, this does not resolve the initial problem, which is a crash on end of round or server shutdown. |
The servers I host are running windows server 2022 just for your info |
Build Version
v1.5 Stable Milestone
Operating System Environment
CPU Environment
Game Modes Affected
Game Environment
Anarchy on The Core
Description
Played a round of Anarchy on the Core. Myself, DAK, and CCFireball were using the latest build of v1.5 Stable Milestone as of 4.27.2024. The server and clients crashed after round completion. Server was on Windows. Gameplay also on Windows
Regression Status
Unsure on Commit number
Steps to Reproduce
Complete Anarchy round on MP
The text was updated successfully, but these errors were encountered: