World Crash - Reload NPCs
Moderators: Community Managers, Developers
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
World Crash - Reload NPCs
Stack
Code:
"arg" is empty
Console:
[quote]13:54:43.981 D Command Player 'Cyrcle' used command '.reload:npcs' (31)[/quote]
Code: Select all
WorldServer.exe!cmpBYTE(const void * lhs, const void * rhs) Line 76 C
WorldServer.exe!memcmp(const void * lhs, const void * rhs, unsigned int siz) Line 255 C
> WorldServer.exe!CommandProcess::CommandReloadNPCs(std::shared_ptr<Client> & client, Separator * sep, unsigned char command_index, bool world_client) Line 1270 C++
WorldServer.exe!CommandProcess::Process(std::shared_ptr<Client> & client, Separator * sep, unsigned char command_index, bool world_client) Line 237 C++
WorldServer.exe!ChunkServer::HandleChatSay(std::shared_ptr<Client> & client, PacketStruct * packet_struct) Line 918 C++
WorldServer.exe!ChunkServer::ProcessPackets() Line 337 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
if ((memcmp(arg,"all", 3)==0)) {Console:
[quote]13:54:43.981 D Command Player 'Cyrcle' used command '.reload:npcs' (31)[/quote]
Re: World Crash - Reload NPCs
I did a .repop npcs, it didnt do anything so i did it again and then it worked then tried .reload npcs and I broke it
I am on a roll today.
Edit: This was in an attempt to restore an NPC (Deadly Striker) I did a .spawn remove at location -2118, -49791, 1653 in chunk Khal. Oops.
I am on a roll today.
Edit: This was in an attempt to restore an NPC (Deadly Striker) I did a .spawn remove at location -2118, -49791, 1653 in chunk Khal. Oops.
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - Reload NPCs
There is minimal logging (client and console) at the moment. What likely happened was your first "reload" wasn't finished, and maybe a 2nd one started (Lokked?) or if it is blocked, the .reload is not blocked by an active .repop. All stuff we have to smooth out, so no worries crashing the world. I'm hanging out at the console today actually, I'll be back in a few hours. If you crash it again, it'll have to keep til I get back.
Re: World Crash - Reload NPCs
I think I keep crashing it too. Playing with the .summon command a lot and sometimes it works, sometimes not, sometimes I CTD or char select after a few. Could be a symptom of some other issue though since it was crashing before all that.
Haiku is easy -
But sometimes it makes no sense.
Refridgerator.
But sometimes it makes no sense.
Refridgerator.
Re: World Crash - Reload NPCs
This is fixed in recent Revs. I'd brought to our attention the problem with using memcmp. This should all be resolved since a couple revs ago.
The proper comparison is strcmp, and the <= command_index + 1 should be > command_index + 1.
The proper comparison is strcmp, and the <= command_index + 1 should be > command_index + 1.
Re: World Crash - Reload NPCs
Yeah, I'm about 99% sure I broke the server again with the same method.
Used a .reload spawns command, waited around 3 minutes and tried another command (don't remember which) and client closed & server crashed.
There is no indication of when any of the .reload commands start (to tell if the command went through) or end (to tell when it is okay to run another command), so maybe that could be added later? Meanwhile, I'll be sure not to use any .reload commands.
Used a .reload spawns command, waited around 3 minutes and tried another command (don't remember which) and client closed & server crashed.
There is no indication of when any of the .reload commands start (to tell if the command went through) or end (to tell when it is okay to run another command), so maybe that could be added later? Meanwhile, I'll be sure not to use any .reload commands.
Re: World Crash - Reload NPCs
There actually is :p. It just never makes it there because it crashes while the string you've submitted (the .reload spawns command) is being parsed.
At some point there was a change made to the parsing method that never actually worked. It just needs to be updated on NT.
John, when you update, Rev 843 will have the most recent changes, including this issue.
Also, I know this is convoluted right now, but if you want to see changes in spawn locations and what you've removed, etc, use .reload entries (it does take a while). This is responsible for the actual placement of the NPCs. I will be making changes to this so it loads faster, but currently it takes around 30 seconds to complete. There are indicators of what stage it's at sent to your chat window, however.
Re: Summon. It is just for fun at this point. It does not write changes to the database. As soon as you .repop, the spawn will be back to where it originated. .summon won't crash the server. If it's crashing your client, I'd chalk that up to the same issue as all the other current CTD issues, and that's some networking flaw in either our system or the VGClient.
At some point there was a change made to the parsing method that never actually worked. It just needs to be updated on NT.
John, when you update, Rev 843 will have the most recent changes, including this issue.
Also, I know this is convoluted right now, but if you want to see changes in spawn locations and what you've removed, etc, use .reload entries (it does take a while). This is responsible for the actual placement of the NPCs. I will be making changes to this so it loads faster, but currently it takes around 30 seconds to complete. There are indicators of what stage it's at sent to your chat window, however.
Re: Summon. It is just for fun at this point. It does not write changes to the database. As soon as you .repop, the spawn will be back to where it originated. .summon won't crash the server. If it's crashing your client, I'd chalk that up to the same issue as all the other current CTD issues, and that's some networking flaw in either our system or the VGClient.
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - Reload NPCs
Lokked, this was Rev 839.
I'd like all the confusing .reload and .repop options consolidated into a single command. .repop just repops the chunk, period. and .reload spawns does the entire list as if from startup. I know you were trying to only do 1 chunks data, but honestly I do not trust that. I'd like the list completely refreshed on .reload
Having so many options only leads to confusion, and I want simplicity everywhere we can (unless there is some technical reason we cannot?) Thanks.
I'd like all the confusing .reload and .repop options consolidated into a single command. .repop just repops the chunk, period. and .reload spawns does the entire list as if from startup. I know you were trying to only do 1 chunks data, but honestly I do not trust that. I'd like the list completely refreshed on .reload
Having so many options only leads to confusion, and I want simplicity everywhere we can (unless there is some technical reason we cannot?) Thanks.
Re: World Crash - Reload NPCs
I'll remove the sub commands for repoping and reloading. There's no technical reason against this.
memcmp should be strcmp, as in current revs, to mitigate the crash experienced in the OP.
memcmp should be strcmp, as in current revs, to mitigate the crash experienced in the OP.
- John Adams
- Retired
- Posts: 4582
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - Reload NPCs
Btw, didn't mean that to sound so bossy It was the "entries" one that got me. Honestly, I'd rather .reload spawns do everything, entire list, globally... but that's just me being a purist. I'm okay with how you have .reload spawns working now, which I think only reloads spawn data from my current chunk into the master list, then repops the chunk.
The (technical) reason I do not want these commands tied to a chunk_id only is because I plan to have "common" spawn objects that span multiple chunks (someday - eg, not 6,000 Ra001Blah_FingerPost01 that are >exactly< the same 6,000 times) and thus .reload spawns-only-in-my-chunk will not work. This is why I wanted to flush/load the entire list like we're starting the world over.
The (technical) reason I do not want these commands tied to a chunk_id only is because I plan to have "common" spawn objects that span multiple chunks (someday - eg, not 6,000 Ra001Blah_FingerPost01 that are >exactly< the same 6,000 times) and thus .reload spawns-only-in-my-chunk will not work. This is why I wanted to flush/load the entire list like we're starting the world over.