A non-existing entry causing a crash (???)

  • Something weird happens: Freelancer crashes, FLSpit says that some archetypes is missing, and the archetypes don't exist in the hash database (I'm using adoxa's Whatis).


    I don't think anyone can help me, but if it happened to someone you might have a solution.


    I could share the exported hash DB but since I couldn't find the archetypes, its no use...


    Please try to help me.

  • It showed 2 hash entries:


    Quote

    ERROR: ArchDB::Get(3101568705) failed
    ERROR: Failed to find projectile archetype for gun. Archetype is "0xb8de2ec1"


    none of them were found in the database.

  • Possible typo in the projectile entry for a recently edited weapon? So it's trying to use ammo that doesn't exist?


    Did you change any weapons recently, Obvious question I know, but...


    Like that Sherlock Holmes quote about eliminating the obvious, what ever is left , however improbable is the culprit.

    AestheticDemon


    Terror Trooper #666


    Give a man a fire and he's warm for a day...
    Set a man on fire and he's warm for the rest of his life...

  • For this I'll have to know whats the gun's (or at least projectyle archetype's) nickname, unless I'll have to go over lots of new/edited guns...


    Still it won't help, since theres also an ArchDB error. Just in case, I'll try to put the SDK over the original folder to see if maybe its in it.

  • Hmm, ok, I'm assuming your mod is an ini copy mod rather than a flmm scripted mod???????


    Which sdk are you using, 1.3, 1.4, 1.4 advanced, 1.5?


    Ok, deactivate the mod... clean fl install time, 1.1 patch, unofficial sdk patch of choice.


    Hard to know what to advise without knowing if its ini copy or scripted...


    Compromise...


    start copying the recent gun additions into a separate scripted flmm mod, check the spelling carefully as you go, DONT use the custom dll you made, use the script generate resource code, see if all the new guns work that way, if they do, then carefully re add them one at a time to a new ini copy mod, just for the guns, so only one ini to copy, the weapons ini, only one gun to check at a time, nothing actually using those guns, limit the possible areas of conflict, if you can get the game running with all the new guns added since it last worked, in place, then carefully cpy the tested code into the old mod after in place of the versions you have now, same for the custom dll, use new res numbers and temp names "my_new_gun_2b" in place of "my_new_gun", you can go back and edit the dll string later, first you need to get the res numbers working, never mind what they say, once all the new guns are working, with all the new res numbers, you can go back and kill the old numbers and reuse em for something else later.


    Sounds like a complete pain but, at this stage, tedious is the only way you'll fix this short of blind "hey there the nasty is" blind luck.


    If you ARE doing an ini copy mod, once you have a version of it that runs without crashing, take a backup, then activate it, then use a temp scripted mod to add new bits to it, a few at a time, means deactivating both parts every time you do an edit, then reactivating both parts, and ignoring those 'mod conflict ' messages, but... easier to find bugs in 2 or 3 new entries in a temp script if it goes runny, where the errors will be plain english typos than hunting through 20 odd new weaps with 20 odd new ammos all with hex res codes, and once a batch of updates check out, you can add them to the working copy of the ini mod.


    Slow, painfull, but for a one modder mod team, it beats the hell out of going blind staring at hundreds of lines of code over and over, trying to spot the error you made.


    Sorry Poly, for the bad tidings, but stick with it huh. You'll get there in the end.


    EDIT:


    Sudden thought...


    The entry might be there and ok, it MIGHT be a 'bracket' problem...


    missing closing bracket on a section header or something, does your text editor feature a bracket matching facility, like notetab light, or a 'nesting' counter' or whatever, to check that all opening brackets have a matching closing bracket?


    If fl cant find a closing bracket, it might not recognise the entries for two se0arate things as being separate, so the perfectly correct res id for the problem ammo is replaced by the id for the following item cos the header tag on the secind entry isnt being read, fl thinks there are two id res entries for the same ammo and only uses the second, so the first isnt found in the database. Just an off the top of the head thought., checjk this first, might save you a lot of time.

    AestheticDemon


    Terror Trooper #666


    Give a man a fire and he's warm for a day...
    Set a man on fire and he's warm for the rest of his life...

    Edited once, last by AestheticDemon ().

  • My Procedure of eliminating bugs like this:


    1) FLscan 1.3 - If bug is major this will find it
    2) looking for FlSpew.txt - There may be hash of problem(CRCtool or Whatis you can find out nickname), so use FL_Error_CheckerV1_005 to reduce errors
    3) Use FL_Error_CheckerV1_005
    4) Load backup(Make Backup of problematic file/s) - If is problem solved -> Compare both files function and problematic (by using PSPad, i use v4.5.3, with this you can find difference between both files -> find problem and solve it)


    Edit 1:


    Edit 2:

    When game crash it try to send error report. Error report have tree parts. 1) Part of code 2) FlSpew.txt 3) dxdia.txt


    ADD 1 Part of code


    Every program is pack of instruction for proccesor. Source code of every program is compiled into this pack of instruction. Language of instructions is called Assembler. Program in Assembler have many many lines, thousands of lines if is program more complicated like Freelancer is. It's hard to fix bug if you don't know where exactly problem is. In error report is link to part of code(part of instructions for proccesor) which cause crash. So programmer can search this part and find the problem and fix it. Freelancer is composed from some parts - Freelancer.exe, Flserver.exe, common.dll, content.dll, server.dll, alchemy.dll, ... etc. Error report shows what part(Modname) and line of problem(Offset). For example:


    ModName: common.dll
    Offset: 0005be63


    ModName: content.dll
    Offset: 0009566d


    ADD 2 FlSpew.txt


    In this file are listed errors and warnings.


    Example:


    E:\FL\Scratch\Source\Client\space\StarSys.cpp(716) : *** WARNING: Voice message 2351700488 is invalid for voice 3073825485
    C:\work\builds\dalibs\dalibs-build\build\Src\RendComp\VMesh\VMPartArch.cpp(697) : NOTICE:General: VMESH: couldnt find material 23386244


    ADD 3 dxdia.txt


    i never work with this, because i think it's proccesor work in time of crash; i really don't know what exactly it is and how i can use it.


    common.dll(by Adoxa)
    0005e010 - part of function Fuse::UnBurn, if that helps
    000af690 - INI_Reader constructor; problem with normal FLHook, I think (uses 1024 bytes of data, but 5480 bytes are required; plugin version uses 8192)
    000e3f9d - memory allocation failure
    000f24a0 - deliberate segfault (presumably a "this should never happen" scenario)


    server.dll(by Adoxa)
    000078d3 - called as part of pub::SpaceObj::Dock
    00014990 - also part of docking, and others (it's a function to swap the sign of a vector)
    0002c267 - seems to be another part of docking, and others
    0002c290 - same as above
    0002247f - ship tring to start cruiser engine but dont have it


    freelancer.exe(by Adoxa)
    00006100 - bad wireframe - Every vanilla object havw wireframe. It's


    content.dll
    000db0f1 - bad patrol
    0009100f - bad tradelane
    0009566d - bad tradelane(i think)

  • can you please give more detailed descriptions about the hex values and its function... i believe it is hard for the most readers to understand what e.g. "bad wireframe" means or
    a few more details would be cool


    you should probably try a different error checker
    i believe the latest version is 1.013

  • The problem was with a loadout.
    In this case, I say thanks to Sherlock Holmes' elimination method for helping me solve the problem.
    The Munition entry of a vanilla Junkers gun was somehow deleted.
    For those who wonder: I found it through disabling all the factions in the zone using " ; " leaving one faction at a time.


    Thanks for trying to help, and special thanks to Aesthetic Demon for mentioning it.

  • Glad to hear you got it sorted, Poly. So, no more talk of ditching the mod huh. Welcome back to the front lines...
    :D

    AestheticDemon


    Terror Trooper #666


    Give a man a fire and he's warm for a day...
    Set a man on fire and he's warm for the rest of his life...