Page 2 of 5

Re: World Bugs and Crashes List

Posted: Sat Aug 02, 2014 3:22 pm
by John Adams
Character Create no longer works with last commit. Initially I thought it was the new heartbeat code that was causing account_id to get whacked, but I think I chased it down to theFoof lowering the UDP_TIMEOUT value from 40000 to 10000. I put it back to 40000 and I can sit at Char Select forever without seeing the heartbeat timeouts. Thus, my account_id value never gets set back to 0.


With this value at 10000, both login and world are spammed with logs about disconnecting and reconnecting (see other post) and account_id gets reset to 0. Character create is impossible with account_id 0. Under these new conditions though, when I start up a client and very quickly create a new toon, account_id = 1 and my character is created as expected.


This is a case where changing "Common" code for world causes ill effects in Login. Although Foof will have a perfectly logical explanation why this is not the case and all my research is incorrect

Re: World Bugs and Crashes List

Posted: Sun Aug 03, 2014 1:40 pm
by John Adams
Think I might have figured out what's up with the /who issue - which may not even be /who at all.

[quote][13:29] <~john> ok, i am on Windows, Did /who all a couple times before xinux logged in. Now that he has disconnected, /who all makes no echo to world or console. I think we found the bug.
[13:30] <~john> i think it's in Foof's disconnecting client theory too. because when Xinux logged off, my client disconnected.
[13:30] <~john> though I am still in-game

[13:35] <~john> spam inc
[13:35] <~john> 13:23:49.673 I UDP Client from 24.253.67.18 set to disconnect : Timeout
[13:35] <~john> 13:23:49.673 I UDP Client from 24.253.67.18 has been removed
[13:35] <~john> 13:24:07.868 I UDP Client from 68.98.218.5 set to disconnect : Timeout
[13:35] <~john> 13:24:07.868 I UDP Client from 68.98.218.5 has been removed
[13:35] <~john> 13:24:08.065 I UDP Client from 24.253.67.18 set to disconnect : Timeout
[13:35] <~john> 13:24:08.065 I UDP Client from 24.253.67.18 has been removed
[13:35] <~john> 13:24:08.093 I Chunk Starting chunk shutdown timer for Isle of Dawn.
[13:35] <~john> 13:24:32.690 I UDP New client connected from 68.98.218.5
[13:36] <~john> this was Xinux quitting. 20s later, my client claims to quit too, but it didn't. then Xinux quits, again? No, he was already gone.
[13:36] <~john> his chunk then schedules shutdown.
[13:36] <~john> and finally, my client "new" again? No. that is probably the problem, not /who at all.
[13:38] <~john> posting that to the Foof Please Fix This Shit topic

[/quote]



Edit: Just reproduced it 100%. I was in, did a dozen /who all's, then Xinux logged in, I did more, the >>second<< his disconnect hit the console, /who all stopped working.

Re: World Bugs and Crashes List

Posted: Sun Aug 03, 2014 1:49 pm
by John Adams
Also reproduced another bug that was puzzling me, also caused by this disconnect.
13:41:28.388 I UDP      New client connected from 68.98.218.5
13:44:45.309 D Command  Player .rift to chunk ID 1
13:44:45.309 I Net      Couldn't find client by account id in Net::SendClientChunkInfo
I think getting disconnected above is causing all other functionality to stop working. What I cannot explain is why when HandleWhoRequest is commented out, none of these problems (at all) exist.

Re: World Bugs and Crashes List

Posted: Sun Aug 03, 2014 5:07 pm
by John Adams
Crash just standing there, after I was disconnected when a player logged off, others joined, something threw this assert.

Code: Select all

>	WorldServer.exe!std::_Debug_message(const wchar_t * message, const wchar_t * file, unsigned int line) Line 15	C++
 	WorldServer.exe!std::_Debug_pointer<char>(const char * _First, const wchar_t * _File, unsigned int _Line) Line 612	C++
 	WorldServer.exe!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::assign(const char * _Ptr) Line 1143	C++
 	WorldServer.exe!ControlBitStreamData::ReadData(BitStreamReader & reader) Line 192	C++
 	WorldServer.exe!BitStreamPacket::ReadPacket(SOEProtocolData & data) Line 283	C++
 	WorldServer.exe!ChunkServer::HandlePacketType1(std::shared_ptr<Client> & client, SOEProtocolData * data) Line 374	C++
 	WorldServer.exe!ChunkServer::ProcessPackets() Line 270	C++
 	WorldServer.exe!ChunkPacketThread(void * data) Line 112	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!7593338a()	Unknown
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
 	ntdll.dll!77b09f72()	Unknown
 	ntdll.dll!77b09f45()	Unknown
Console:
[quote]16:49:13.989 I UDP New client connected from 217.72.216.98
16:50:07.621 I Chunk Received zone request!
16:50:07.621 I Chunk New zone (-17, -9)
16:50:07.621 D Chunk Starting chunk 'Stranglewater Shore' (54)
16:50:07.635 I Unreal Loading Unreal data from the database.
16:50:07.635 D NPC Loading NPCs
16:50:07.720 D NPC Loaded 19 NPCs.
16:50:07.776 D Object Loaded 0 Objects.
16:50:12.676 I Chunk Starting chunk shutdown timer for Stranglewater Shore.
16:54:20.503 I UDP Client from 217.72.216.98 set to disconnect : Timeout
16:54:20.503 I UDP Client from 217.72.216.98 has been removed
16:54:40.720 I UDP Client from 217.72.216.98 set to disconnect : Timeout
16:54:40.720 I UDP Client from 217.72.216.98 has been removed
16:54:45.803 I Chunk Starting chunk shutdown timer for Fathesi Steppe.
16:55:12.676 I Chunk Shutdown timer expired. Shutting down Stranglewater Shore.
16:59:45.839 I Chunk Shutdown timer expired. Shutting down Fathesi Steppe.
[/quote]


Not /who related. it is commented out.

Re: World Bugs and Crashes List

Posted: Sun Aug 03, 2014 6:10 pm
by John Adams
Crash:

Code: Select all

>	WorldServer.exe!ChunkServer::SendSayMessageToNearbyClients(std::shared_ptr<UnrealActor> sender, const char * msg) Line 1375	C++
 	WorldServer.exe!ChunkServer::HandleChatSay(std::shared_ptr<Client> & client, PacketStruct * packet_struct) Line 617	C++
 	WorldServer.exe!ChunkServer::ProcessPackets() Line 286	C++
 	WorldServer.exe!ChunkPacketThread(void * data) Line 112	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!7593338a()	Unknown
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
 	ntdll.dll!77b09f72()	Unknown
 	ntdll.dll!77b09f45()	Unknown

Code: Select all

void ChunkServer::SendSayMessageToNearbyClients(shared_ptr<UnrealActor> sender, const char* msg){    if (!sender->IsPawn())        return; 
I think I can fix this one by checking "sender" first.

Code: Select all

    if (!sender || !sender->IsPawn())        return;

Re: World Bugs and Crashes List

Posted: Sun Aug 03, 2014 7:14 pm
by Xinux
You can manually crash the server by typing enough characters into chat and sending it. If you put enough characters into chat to cause the client to split the packet from SOE protocol 09 to 0D the server does not know how to handle it and crashes.

Ok added the handle in for it which has stopped the crashing but the packet still need's to be handled properly.

Re: World Bugs and Crashes List

Posted: Sun Aug 03, 2014 7:24 pm
by John Adams
Another oddity just happened. I started my client and sat at Login for 15+ minutes, completely forgetting I launched it. I only noticed because Login mentioned removing my IP out of the corner of my eye. I was able to Play though, got tossed under the world and restarted the client.

Attempting to enter the world after that resulted in "Waiting on data from..." and that's it. Forced a restart.

Re: World Bugs and Crashes List

Posted: Mon Aug 04, 2014 9:31 am
by theFoof
Fragmented packets are handled now and I think the crash when reading the control bit stream should be fixed. Yes, adding !sender should fix that other crash as well.

I wasn't able to reproduce the bug with a disconnecting client causing another to disconnect when I tried 2 clients locally, but I have a hunch it may be socket related. Might need somebody to try and hop on my server with my later to see if we can get that to happen. (The client appearing to drop twice is normal though, remember that there's a world and chunk connection)

Re: World Bugs and Crashes List

Posted: Mon Aug 04, 2014 9:38 am
by John Adams
Yeah I tried to repro with 2 clients locally too but I think it's like you said about confusion with IPs. Maybe.

Btw, off-topic slightly, linux won't compile. atomic<> Assuming I need a new include.

Re: World Bugs and Crashes List

Posted: Mon Aug 04, 2014 9:49 am
by theFoof
[quote="John Adams"]Yeah I tried to repro with 2 clients locally too but I think it's like you said about confusion with IPs. Maybe.

Btw, off-topic slightly, linux won't compile. atomic<> Assuming I need a new include.[/quote]

Huh, that's weird. It's included in common/Util.h which should be included in most files. But yes, adding #include <atomic> should fix it.