Crash Offsets
-
jflp.dll isn’t defined in dacomsrv.ini either! I’ve mostly left that alone and the only non-vanilla dll files defined in there are FLHook and your excellent Ammo Limit plugin.
-
FLHook starts loading, but flserver seems to crash while it’s trying to load the name cache. What’s really confusing about this is it’s very inconsistent. I just had to start flserver 4 times to try and get it to crash!
It’s got to be something on my system. It’s not the end of the world as the server runs and starts just fine on our vps. It makes local testing a bit of a pain, but I was mostly just a bit concerned I’d introduced something that’s going to cause more problems down the line.
-
The crash is when JFLP removes the “Used Hostile Pick Assistance” message - flserver.exe isn’t as big as freelancer.exe, so that memory doesn’t exist. If jflp.dll is always being loaded and flserver.exe isn’t always crashing, then it must be overwriting something that gets allocated; the alternative is that jflp.dll isn’t always being loaded.
-
That’s very odd! We’ve not made any adjustments to flserver at all bar a version number change. jflp.exe isn’t being called in the server console as far as I can see.
A bit of an aside, How, in 2019 are you building jflp.dll with VC6? I want to play around with it a bit and see if I can understand it better, but I cannot for the life of me get it to build in Visual Studio. It seems to very consistently give me a line about there being too few arguments for call on line 319 so I assume I’m missing something important.
-
Got it compiling, thanks!
New puzzle on this fault. If I physically remove jflp.dll from the EXE folder before I start the server client, I get this:
Faulting application name: FLServer.exe, version: 1.35.1254.11, time stamp: 0x3ecbb13e Faulting module name: AmmoLimit.dll, version: 1.0.0.1, time stamp: 0x52830b5b Exception code: 0xc0000005 Fault offset: 0x000013cb Faulting process ID: 0x133c Faulting application start time: 0x01d5e2414c11f657 Faulting application path: C:\Program Files (x86)\Microsoft Games\Freelancer\EXE\FLServer.exe Faulting module path: C:\Program Files (x86)\Microsoft Games\Freelancer\EXE\AmmoLimit.dll Report ID: 73b6b356-0539-4259-a3e6-1edad36ee994 Faulting package full name: Faulting package-relative application ID:
However, if I remove both, the application still faults, citing jflp as the issue. Any ideas?
EDIT: commenting out flhook.dll actually seems to stop the crash. Have to assume this means it’s something hook-related, which is probably out of the scope of this thread.
EDIT2: Leaving ammolimit.dll in still crashes the server! Console gets a line off about how it can’t load the dll and is ignoring it, then a few seconds later, the application faults again. -
If you’ve deleted EXE\jflp.dll, but that’s still crashing, then it must be loaded from somewhere else; if removing flhook.dll stops the crash, then at a guess it’s in EXE\flhook_plugins.
AmmoLimit has a simple check to detect if it’s running on the server or the client - it tests if the client memory exists. Apparently it sometimes exists on your server, too, so it’s incorrectly making the client patches. If you’d like it to be a bit more robust, change:
if (ProtectX( ADDR_LIMIT1, 6 )) { ```to:
if (GetModuleHandle(“freelancer.exe”))
{
ProtectX( ADDR_LIMIT1, 6 ); -
I managed to catch the AmmoLimit.dll error on the console when FLHook crashed as well, so it looks like this might be the root cause.
When attempting to compile AmmoLimit from source, VS doesn’t seem to be able to find Common.lib. Is this the library used for compiling your tools listed on your website, or something more generic? Sorry if these questions are very obvious, C++ is very new to me and I’m only just really stepping into this stuff.
-
It’s generated as part of the build process, via the makefile. I think newer compilers need to explicitly install that (look for something with “make” in the name), then on the command line type [c]nmake /nologo[/c]. I’m not sure if you could import the makefile, generating a solution.
-
Nmake did it, thanks Adoxa! This seems to have (touch wood) fixed my crash-on startup problem. However, I now have a new issue. flserver consistently crashes with offset 0x00001c54 in jflp.dll again whenever I exit to the menu or character select screen and is doing it whether or not flhook.dll is present in dacomsrv.ini. At least it’s consistent this time!
Any ideas? I am completely at a loss figuring out what is causing flserver to behave in this way.
-
Hello it’s me again!
Never got to the bottom of the odd jflp offset, but it doesn’t seem to happen on the server or anyone else’s machine so it’s not a big worry for the moment. However, we’ve got another rather odd problem:
When players on the server enter (almost any) pirate bar, the server crashes with a fault in content.dll with no console output:
Faulting application name: FLServer.exe, version: 1.35.1254.11, time stamp: 0x3ecbb13e Faulting module name: Content.dll, version: 1.0.1254.11, time stamp: 0x3ecbb142 Exception code: 0xc0000005 Fault offset: 0x000f7c2f Faulting process id: 0x228c Faulting application start time: 0x01d5eb5b9a73ff11 Faulting application path: C:\Freelancer\EXE\FLServer.exe Faulting module path: C:\Freelancer\dlls\bin\Content.dll Report Id: ef1eba63-3da5-41f7-b5ad-2784fb0efded Faulting package full name: Faulting package-relative application ID:
Any ideas? It’s definitely not diff2money.ini, loadouts.ini or mbases.ini causing the problem as far as we can tell, and we’ve otherwise not changed anything in relation to factions, bars or bases at all.
Edit: The same bars crash to desktop in SP as well, with no spew output.
-
I can’t test this for a couple of hours, but we have an entry for:
[Commodity] nickname = commodity_bounty_voucher ids_name = 524505 ids_info = 524506 units_per_container = 1 pod_appearance = cargopod_blue loot_appearance = lootcrate_blue decay_per_second = 0 volume = 0 hit_pts = 250
in st_equip.ini and a goods.ini entry for it. They’re in NPC cargoholds right now (and don’t seem to drop, but perhaps that’s another issue)
Could this be doing it?
-
Removing reference to the new commodity doesn’t seem to fix the crash. When you say commodities for jobs, do you mean the stuff that npcs drop as mission objectives to capture/destroy or something else?
-
So I’ve isolated this to rmlootprops.ini. We removed some entries (as various guns are not being used anymore and we don’t want them to drop)
I’m not entirely sure what’s causing it to crash, but it seems if certain things are made unavailable (notably if I change the faction to a placeholder one) the bar crashes the game/server. I guess I’ll adjust drop rates using the lootable flag rather than using this file.