World Crash - Abilities Vendor
Moderators: Community Managers, Developers
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
World Crash - Abilities Vendor
I don't think this was caused by my simply renaming the tables/columns, but if it is - sorry Using the current vgo_world.sql, go to Tursh Village as a heavy fighter and talk to the trainer right in the starting area. World crashes the moment you engage her.
Stack:
Crashed here:
Regardless if something I changed caused it, let's try and handle any world-endin exceptions a little better than a crash.
Edit: The first guy I tried was on IoD, and it works for my heavy fighter:
Stack:
Code: Select all
WorldServer.exe!DataStruct::SerializeStringWide(char * buf, int * offset) Line 979 C++
WorldServer.exe!DataStruct::Serialize(char * buf, int * offset) Line 739 C++
WorldServer.exe!DataStructArray::Serialize(char * buf, int * offset) Line 233 C++
> WorldServer.exe!DataStruct::Serialize(char * buf, int * offset) Line 745 C++
WorldServer.exe!PacketStruct::SerializeIntoBuffer() Line 711 C++
WorldServer.exe!SOEProtocolData::SetData(PacketStruct * packet_struct) Line 85 C++
WorldServer.exe!PacketStruct::Serialize() Line 724 C++
WorldServer.exe!ChunkServer::HandleClientTrainingBegin(const std::shared_ptr<Client> & client) Line 3446 C++
WorldServer.exe!ChunkServer::ProcessPackets() Line 408 C++
WorldServer.exe!ChunkPacketThread(void * data) Line 131 C++
WorldServer.exe!ThreadRun(void * arg) Line 77 C++
WorldServer.exe!_callthreadstart() Line 255 C
WorldServer.exe!_threadstart(void * ptd) Line 239 C
kernel32.dll!7574338a() Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!77329f72() Unknown
ntdll.dll!77329f45() Unknown
Code: Select all
client->QueuePacket(out_nontrainable_abilities->Serialize());Spawn ID: 1440017 Vendor ID: 8 Inventory ID: 8 Adventure Class: 52 Adventure Level Max: 50 <<== This one is broken!I think I didn't see this before, because I never had anything I could train (no whites, all reds) until this character. Maybe?
Edit: The first guy I tried was on IoD, and it works for my heavy fighter:
Spawn ID: 10017 Vendor ID: 7 Inventory ID: 7 Adventure Class: 52 Adventure Level Max: 10 <<== This one works!
Re: World Crash - Abilities Vendor
Just trained in tursh on my warrior all the abilities up to level 5
Edit: John is awesome as always and is totally my hero; this is a bug after all with the level 11+ lists
Edit: John is awesome as always and is totally my hero; this is a bug after all with the level 11+ lists
Last edited by John Adams on Fri Nov 21, 2014 9:39 pm, edited 1 time in total.
Reason: :)
Reason: :)
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - Abilities Vendor
After extensive trial and error, Xinux found 4 Abilities that were set to is_trained, when they should not be trainable (and btw, that's a terrible field name)
I will update vgo_world.sql before Public SVN push, but for devs, if you get this crash at a trainer, try this:
Faux/Volt, can we find a way to prevent world from crashing if training ability data is invalid? Like maybe identify why these abilities in a training list caused a crash at all... Data cannot be relied upon once code leaves our control, and our world cannot crash as a result.
I will update vgo_world.sql before Public SVN push, but for devs, if you get this crash at a trainer, try this:
Code: Select all
UPDATE `vgo_world`.`abilities` SET `is_trained`='0' WHERE `ability_name` LIKE 'Blood Oath%';
UPDATE `vgo_world`.`abilities` SET `is_trained`='0' WHERE `ability_name` LIKE 'Scaling Blessing of Vol%';Re: World Crash - Abilities Vendor
This is the fun part of bug testing. In my local environment, I have yet to find any trainer that doesn't run the script properly. I just tried the tursh heavy fighter instructor with a warrior and I had no problems. It did reveal another ability "Vampire Bite" that should not be trainable.
But, I'm confused on how the is_trained caused any crashing on your end? All it does is determine if a skill will be sent in the array to the trainer. It is functionally no different than any other ability and the client has no idea what is supposed to be trainable or not. Then again, I'm still operating off my incorrect schema, so I don't know if something changed in translation.
Xinux, did you find the source of John's crash?
But, I'm confused on how the is_trained caused any crashing on your end? All it does is determine if a skill will be sent in the array to the trainer. It is functionally no different than any other ability and the client has no idea what is supposed to be trainable or not. Then again, I'm still operating off my incorrect schema, so I don't know if something changed in translation.
Xinux, did you find the source of John's crash?
Re: World Crash - Abilities Vendor
I also changed those abilities internally and thought they were included in the last abilities.sql I sent. I went through and found all the mob learned abilities and included the scaling versions of the mass buffs.
And lastly, what do you want me to rename my "horrible" field too?
Edit: Removed abilities.sql after seeing your other post. I'll keep on eye on that other thread to see how you want me to submit updated tables to the dev team.
And lastly, what do you want me to rename my "horrible" field too?
Edit: Removed abilities.sql after seeing your other post. I'll keep on eye on that other thread to see how you want me to submit updated tables to the dev team.
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - Abilities Vendor
Faux, it may not be the `is_trained` field specifically, except that there might be some other piece of data in the massive array of Abilities data that is invalid in a trainer list (assuming). This is why I asked you and/or Volt to tell me what you discover if you encounter the same issue.
The "horrible" named field... let's look at this What does "is trained" tell you? It tells me either true or false, that this ability IS trained. Yes? Call me persnickity, but if that flag is supposed to tell me if the ability CAN be trained on a Trainer, I would name it `can_train` or `is_trainable`, etc.
Sorry to use the term, horrible Xinux is notorious for naming things the worst possible way he can just to make my skin itch so I assumed that was his doing (in the struct). I'll try to use more constructive terms to lambast you in the future
The "horrible" named field... let's look at this What does "is trained" tell you? It tells me either true or false, that this ability IS trained. Yes? Call me persnickity, but if that flag is supposed to tell me if the ability CAN be trained on a Trainer, I would name it `can_train` or `is_trainable`, etc.
Sorry to use the term, horrible Xinux is notorious for naming things the worst possible way he can just to make my skin itch so I assumed that was his doing (in the struct). I'll try to use more constructive terms to lambast you in the future
Re: World Crash - Abilities Vendor
Hah, that is a bit persnickity, since no ability will ever be marked trained in the master ability list . But I can switch it around to is_trainable tonight.
I'll look through the code to see if I can find anywhere that we might be missing an error check during the training process. Its definitely a bit frustrating, because I don't get the same crashes on my dev environment as you see on New Telon. It runs smooth as butter over here
Oh and I need to catch you on irc soon, tonight if you are available, because I want to hear more about using LUA for all combat like you mentioned for EQ2. The next step is going to be to start making abilities work.
I'll look through the code to see if I can find anywhere that we might be missing an error check during the training process. Its definitely a bit frustrating, because I don't get the same crashes on my dev environment as you see on New Telon. It runs smooth as butter over here
Oh and I need to catch you on irc soon, tonight if you are available, because I want to hear more about using LUA for all combat like you mentioned for EQ2. The next step is going to be to start making abilities work.
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - Abilities Vendor
[quote="Faux"]Hah, that is a bit persnickity, since no ability will ever be marked trained in the master ability list .[/quote]
So then it sounds like you see my point, eh? It's all about proper use of the King's English, my good man.
So then it sounds like you see my point, eh? It's all about proper use of the King's English, my good man.