Crash Offsets
-
Found something again, in Common.dll at 0x000aa91a.
It happens when you try to buy a ship which contains an invalid item in its package. E.g the nickname of the engine does not exist.
I found another crash in alchemy.dll at 0x0001f3a6.
It happens when the <pairs>of an effect use numbers that do not exist in the <fx>part of the effect.Crash in Content.dll at 0x00055727:
This crash happens when an encounter is spawned that contains more permutation lines than formations</fx></pairs> -
Running into 0x00017f38 on server.dll and a bit stumped. It seems to be related to Lane Hacker spawns on trade lanes in Kepler as the server goes down very consistently there throwing out this offset in Event Viewer and I’ve not seen a single one after several hours of trying to reproduce this crash consistently.
Anyone run into anything like this before or have any ideas what exactly might be causing this?
-
I thought this too, but reverting to the vanilla loadouts.ini file didn’t fix the problem and the crash persisted.
However, with the mod off, a vanilla server runs just fine. Are there other files I should look in to identify what’s causing this?
EDIT: Just had the same crash approaching a tradelane outside Manhattan, vanilla loadouts.ini file (with the mod on) and all. Doesn’t seem to be Lane Hacker specific.
-
I’m pretty confident it’s a ship loadout - the crash occurs after [c]Loadout::Get[/c] (presumably returning [c]NULL[/c]), called when a ship is created ([c]int pub::SpaceObj::Create(UINT &,const pub::SpaceObj::ShipInfo &)[/c]). Perhaps there’s a typo in a ship? Nothing in the spew?
-
I think I had some issues once relating to a pilot somehow. Might want to get rid of all loadouts for all your encounters and see if the problem persists. If it does, look at your pilots.
If the problem goes away, start adding loadouts back in until the crashes resume.
-
As loadouts.ini is clean I can only assume its a typo in an encounter. Wouldn’t this cause output in flspew though?
I’ll take a bit of time to pull the mod apart and check for typos and report back.
-
Fixed this, but I have a new problem! The server app silently crashes on start (but only on my local machine) Offset is 0x00001c54 in flserver.exe. It doesn’t seem consistent either. Sometimes it starts, sometimes it crashes:
Faulting application name: FLServer.exe, version: 1.35.1254.11, time stamp: 0x3ecbb13e Faulting module name: jflp.dll, version: 1.2.0.3, time stamp: 0x5d9fe6dd Exception code: 0xc0000005 Fault offset: 0x00001c54 Faulting process ID: 0xec4 Faulting application start time: 0x01d5e0d19a65c16e Faulting application path: C:\Program Files (x86)\Microsoft Games\Freelancer\EXE\FLServer.exe Faulting module path: C:\Program Files (x86)\Microsoft Games\Freelancer\EXE\jflp.dll Report ID: 6e4291ec-560f-49ab-a349-6bf8a0fcee33 Faulting package full name: Faulting package-relative application ID:
-
I feel a bit silly here, but bizarrely this still occurs even when I comment jflp.dll out of dacom.ini! Feel like I’m missing something extremely obvious >.<
-
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.