Hey,
I'm working on rev 412. In fonline.h I wanted to expand SCORES_MAX from 50 to 70. The compiler obviously attached me to
STATIC_ASSERT( offsetof( Critter, RefCounter ) == 9388 );
STATIC_ASSERT( offsetof( Client, LanguageMsg ) == 9548 );
STATIC_ASSERT( offsetof( Npc, Reserved ) == 9408 );
I increased the values for comparison by 80 (bcs 20 additional indexes x 4 bytes for int or uint types of data), that is:
STATIC_ASSERT( offsetof( Critter, RefCounter ) == 9468 );
STATIC_ASSERT( offsetof( Client, LanguageMsg ) == 9628 );
STATIC_ASSERT( offsetof( Npc, Reserved ) == 9488 );
DLLs were compiled without any problems, but the server itself, when generating the first location, crashed with message:
Utils.dll@Critter_ClearExtEvents : This nullptr
Of course, I looked there, and in fact, if the critter will be wrong, then something like this is supposed to happen.
EXPORT void Critter_ClearExtEvents(Critter* cr)
{
if( cr->IsNotValid )
{
LOG_ERROR("This nullptr.");
return;
}
for(int i=0;i<CRITTER_EVENT_EXT_MAX;i++)
*GetEventPtr(cr,i) = 0;
}
Only what does this have to do with STATIC_ASSERT itself? Did I count something wrong?
Dump from server crash:
Application
Name FOnlineServer
Version 0520
OS 6.1.7601 (Service Pack 1)
Timestamp 2018.03.01 20:59:51
Exception
Code EXCEPTION_ACCESS_VIOLATION
Address 0x5DBE173B
Flags 0x0
Info Attempted to read to an 0x00000044
Thread 'Main' (4988, current)
parameters, getParam_MaxAp + 27, parameters.cpp (278)
FOnlineServer, unsigned __int64 __cdecl CallCDeclFunction32(unsigned int const *,unsigned int,unsigned int) + 35
FOnlineServer, bool __cdecl Script::RunPrepared(void) + 609
FOnlineServer, public: int __thiscall Critter::GetParam(unsigned int) + 91
FOnlineServer, public: static int __cdecl FOServer::SScriptFunc::DataVal_Index(class Critter * &,unsigned int) + 246
FOnlineServer, unsigned __int64 __cdecl CallCDeclFunctionObjFirst(void const *,unsigned long const *,int,void (__cdecl*)(void)) + 38
FOnlineServer, unsigned __int64 __cdecl CallSystemFunctionNative(class asCContext *,class asCScriptFunction *,void *,unsigned long *,void *,unsigned __int64 &) + 858
FOnlineServer, int __cdecl CallSystemFunction(int,class asCContext *,void *) + 294
FOnlineServer, public: void __thiscall asCContext::ExecuteNext(void) + 2325
FOnlineServer, public: virtual int __thiscall asCContext::Execute(void) + 521
FOnlineServer, bool __cdecl Script::RunPrepared(void) + 217
FOnlineServer, public: class Npc * __thiscall CritterManager::CreateNpc(unsigned short,unsigned int,int *,unsigned int,int *,char const *,class Map *,unsigned short,unsigned short,unsigned char,bool) + 800
FOnlineServer, public: bool __thiscall Map::Generate(void) + 700
FOnlineServer, public: class Location * __thiscall MapManager::CreateLocation(unsigned short,unsigned short,unsigned short,unsigned int) + 570
FOnlineServer, public: bool __thiscall MapManager::GenerateWorld(char const *,int) + 447
FOnlineServer, public: static bool __cdecl FOServer::NewWorld(void) + 27
FOnlineServer, public: static bool __cdecl FOServer::InitReal(void) + 1084
FOnlineServer, public: static bool __cdecl FOServer::Init(void) + 22
FOnlineServer, void __cdecl GameLoopThread(void *) + 10
FOnlineServer, void * __cdecl ThreadBeginExecution(void *) + 44
FOnlineServer, _ptw32_threadStart@4 + 97
FOnlineServer, __endthreadex + 58
FOnlineServer, __endthreadex + 196
kernel32, BaseThreadInitThunk + 18
ntdll, RtlInitializeExceptionChain + 99
ntdll, RtlInitializeExceptionChain + 54
Thread 'GUI' (2532)
ntdll, NtWaitForMultipleObjects + 21
kernel32, WaitForMultipleObjectsEx + 142
USER32, PeekMessageW + 688
USER32, MsgWaitForMultipleObjects + 31
FOnlineServer, int __cdecl fl_wait(double) + 665
FOnlineServer, public: static double __cdecl Fl::wait(double) + 23
FOnlineServer, public: static int __cdecl Fl::wait(void) + 33
FOnlineServer, _main + 1169
FOnlineServer, _WinMain@16 + 402
FOnlineServer, __tan_default + 552
kernel32, BaseThreadInitThunk + 18
ntdll, RtlInitializeExceptionChain + 99
ntdll, RtlInitializeExceptionChain + 54
Thread 'GUIUpdate' (4156)
ntdll, NtDelayExecution + 21
KERNELBASE, Sleep + 15
FOnlineServer, public: static void __cdecl Thread::Sleep(unsigned int) + 13
FOnlineServer, void __cdecl GUIUpdate(void *) + 17
FOnlineServer, void * __cdecl ThreadBeginExecution(void *) + 44
FOnlineServer, _ptw32_threadStart@4 + 97
FOnlineServer, __endthreadex + 58
FOnlineServer, __endthreadex + 196
kernel32, BaseThreadInitThunk + 18
ntdll, RtlInitializeExceptionChain + 99
ntdll, RtlInitializeExceptionChain + 54
Thread 'ScriptTimeout' (1056)
ntdll, NtDelayExecution + 21
KERNELBASE, Sleep + 15
FOnlineServer, public: static void __cdecl Thread::Sleep(unsigned int) + 13
FOnlineServer, void __cdecl RunTimeout(void *) + 963
FOnlineServer, void * __cdecl ThreadBeginExecution(void *) + 44
FOnlineServer, _ptw32_threadStart@4 + 97
FOnlineServer, __endthreadex + 58
FOnlineServer, __endthreadex + 196
kernel32, BaseThreadInitThunk + 18
ntdll, RtlInitializeExceptionChain + 99
ntdll, RtlInitializeExceptionChain + 54
Thread 'Unknown' (5768)
ntdll, NtWaitForMultipleObjects + 21
kernel32, BaseThreadInitThunk + 18
ntdll, RtlInitializeExceptionChain + 99
ntdll, RtlInitializeExceptionChain + 54
Loaded modules
G:\fonlinedev\fonline_sdk\FAT_serverbeforeshutdown20170714_wosaves_fixed_FPS_2\Server412_2\FOnlineServer.exe (00400000)
C:\Windows\SysWOW64\ntdll.dll (77790000)
C:\Windows\syswow64\kernel32.dll (770C0000)
C:\Windows\syswow64\KERNELBASE.dll (75230000)
C:\Windows\syswow64\USER32.dll (75590000)
C:\Windows\syswow64\GDI32.dll (75100000)
C:\Windows\syswow64\LPK.dll (76EE0000)
C:\Windows\syswow64\USP10.dll (75190000)
C:\Windows\syswow64\msvcrt.dll (758D0000)
C:\Windows\syswow64\ADVAPI32.dll (754E0000)
C:\Windows\SysWOW64\sechost.dll (76920000)
C:\Windows\syswow64\RPCRT4.dll (76BB0000)
C:\Windows\syswow64\SspiCli.dll (75030000)
C:\Windows\syswow64\CRYPTBASE.dll (75020000)
C:\Windows\syswow64\WS2_32.dll (76F00000)
C:\Windows\syswow64\NSI.dll (76EF0000)
C:\Windows\system32\dbghelp.dll (73790000)
C:\Windows\syswow64\PSAPI.DLL (750E0000)
C:\Windows\system32\WINMM.dll (71C90000)
C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7601.18837_none_ec86b8d6858ec0bc\COMCTL32.dll (71BE0000)
C:\Windows\syswow64\SHELL32.dll (759E0000)
C:\Windows\syswow64\SHLWAPI.dll (75980000)
C:\Windows\syswow64\ole32.dll (75380000)
C:\Windows\system32\IMM32.DLL (752E0000)
C:\Windows\syswow64\MSCTF.dll (76950000)
C:\Windows\syswow64\CLBCatQ.DLL (77300000)
C:\Windows\syswow64\OLEAUT32.dll (76CA0000)
C:\Windows\system32\msimtf.dll (5DC30000)
C:\Windows\system32\VERSION.dll (74F50000)
G:\fonlinedev\fonline_sdk\FAT_serverbeforeshutdown20170714_wosaves_fixed_FPS_2\Server412_2\scripts\parameters.dll (5DBE0000)
G:\fonlinedev\fonline_sdk\FAT_serverbeforeshutdown20170714_wosaves_fixed_FPS_2\Server412_2\scripts\backend.dll (5DB20000)
G:\fonlinedev\fonline_sdk\FAT_serverbeforeshutdown20170714_wosaves_fixed_FPS_2\Server412_2\LIBMYSQL.dll (10000000)
C:\Windows\system32\WSOCK32.dll (71C80000)
C:\Windows\system32\NLAapi.dll (73A20000)
C:\Windows\system32\napinsp.dll (73A10000)
C:\Windows\system32\pnrpnsp.dll (739B0000)
C:\Windows\System32\mswsock.dll (71B40000)
C:\Windows\system32\DNSAPI.dll (71720000)
C:\Windows\System32\winrnr.dll (739F0000)
C:\Windows\system32\rasadhlp.dll (71AE0000)
C:\Windows\System32\wshtcpip.dll (71B30000)
C:\Windows\system32\IPHLPAPI.DLL (72540000)
C:\Windows\system32\WINNSI.DLL (72530000)
C:\Windows\System32\fwpuclnt.dll (71390000)
G:\fonlinedev\fonline_sdk\FAT_serverbeforeshutdown20170714_wosaves_fixed_FPS_2\Server412_2\scripts\utils.dll (5DAD0000)
G:\fonlinedev\fonline_sdk\FAT_serverbeforeshutdown20170714_wosaves_fixed_FPS_2\Server412_2\scripts\check_look.dll (5DA80000)
G:\fonlinedev\fonline_sdk\FAT_serverbeforeshutdown20170714_wosaves_fixed_FPS_2\Server412_2\scripts\online_stats.dll (5DA30000)
Thank you for help
rem