Jump to content
  • 0

Strange Problem With Loading Clans/clan Wars


Question

Posted

Hi,

 

on some machines I encounter this problem:

 

06/17/2016 04:36:05.828, [NO ERROR] JobType: 6 Duration: 30/30sec  
06/17/2016 04:36:05.828, Problem occurred in Loading Declared War
06/17/2016 04:36:35.827, [NO ERROR] JobType: 8 Duration: 30/30sec  
06/17/2016 04:36:35.827, Problem occurred in Loading Pledge [1]
06/17/2016 04:36:35.829, Problem occurred in Loading Pledge [2]
 
Tried to analyze what's wrong and I think it's related somehow to some IO threads, that don't execute as expected (it seems like there's some thing that prevents packets coming from cached to be processed). For time reasons, I stopped with this and wrote simple workaround involving some function hooking, mutexes and conditional variables, so all those operations run in threads which are fine and "bad" threads only wait on conditional variable until "alternative" thread finishes its work. So now everything loads fine:
 
06/15/2016 00:05:18.083, [NO ERROR] JobType: 6 Duration: 0/30sec  
06/15/2016 00:05:18.124, [NO ERROR] JobType: 8 Duration: 0/600sec  
 
Does anyone encounter the same problem? Did anyone come with a better solution (or at least better analysis)?
 

4 answers to this question

Recommended Posts

  • 0
Posted (edited)

DB errors if i remember correctly  - that makes cached go hicky hicky once sending packets to l2server upon startup.

Verify ALL fields have correct data in the value-types their declared for said pledges in ALL pledge tables.

 

Nothing to do with internal network\memory.

 

...but i can only check over a week from now so.

Edited by mcbigmac
  • 0
Posted

Hi,

 

I see no error in logs :( Are there any "silent" errors that don't show up in error log?

It's really strange because when I run the code in other thread, it runs fine:


void __cdecl Server::CPledgeInitPledge()
{
	for (;;) {
		Sleep(100);
		ScopedLock lock(pledgeInitCS);
		if (pledgeInitialized) {
			break;
		}
	}
	reinterpret_cast<void(*)()>(0x5F4EAC)();
}

void __cdecl Server::CDominionInitDominion()
{
	reinterpret_cast<void(*)()>(0x5EA29C)();
	reinterpret_cast<void(*)()>(0x7D831C)();
	ScopedLock lock(pledgeInitCS);
	pledgeInitialized = true;
}

...

WriteInstructionCall(0x6B24B9, reinterpret_cast<UINT32>(CDominionInitDominion));
WriteInstructionCall(0x6915D3, reinterpret_cast<UINT32>(CPledgeInitPledge));
NOPMemory(0x7D853E, 5);

and no errors are shown in L2Server...

 

Maybe it has something to do with running in virtual machine (but it does in both VirtualBox and KVM-QEMU)

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...