Possible way to solve frequently shown error 0xC0000005 - ACCESS_VIOLATION
I got this error almost all the time when I run Arma 3 (x64), it occurs every 5 to 20 minutes every time I start Arma 3, since Win 10 x64 version 14393 to version 17763. I've reinstalled my OS ,Drivers and VC/DX Redist for various versions but still not have it solved.
The error seems to be more likely to happen when I move close to a city, or combat inside a city or dense forests (Tanoa), or fly low and quickly through the ground (in Zeus Mode or Eden Editor). I also hosts several Dedicated Servers in China, and it seems to occur only on client side.
However, last year, when I got into the same problem, I changed Arma 3 's memory allocator to cma_x64.dll published on Armaholic, then the error never shows again. I've freshly reinstalled my OS recently and forgot to change the allocator, so when I launch the game I got into the same error again, after I changed it to cma_x64.dll, It stoped happen again.
This is why I'm pretty sure that the default allocator might be one of the reason of this error.
I have run a few tests, here's the results.
Memory Allocator | Lock Memory Pages Privilege (Group Policy) | Large Pages Support (Launcher) | Error Occurs |
default or provided in launcher | disabled | disabled | true |
default or provided in launcher | disabled | enabled | true, seems much more frequent |
default or provided in launcher | enabled | disabled | true |
default or provided in launcher | enabled | enabled | true |
cma_x64.dll | disabled | enabled | false |
cma_x64.dll | enabled | enabled | false |
cma_x64.dll | disabled | enabled | false |
cma_x64.dll | disabled | disabled | false |
I've provided the cma_x64.dll to some of the players in my community with the same problem (6 people). In the period of 2 months, two of them reported they can't have the game run with it, three of them reported that their errors never show again, and one person reported it occurs much less frenquently.
I suggest to evaluate the official provided Memory Allocators, and look for the difference compared to cma_x64.dll.
The link of cma_x64.dll (xtbbmalloc) is proviced here:
http://www.armaholic.com/page.php?id=31217
(Source codes included)
I use the x64 AVX2 version, with the parameters below:
[Default] # DebugBreak: # Only for debugging purpose. DebugBreak = 0 # UseLargePages: # If you set this to '1', xtbbmalloc will try to allocate large pages (2MiB) # instead of normal pages (4KiB) UseLargePages = 1 # ForceMaxWorkingSet: # Set this to '1' to force a working set size of 4GiB # This is experimental ForceMaxWorkingSet = 1 # SeLockMemoryPrivilege: # Set this to '1' if you set UseLargePages to '1' SeLockMemoryPrivilege = 1 # SeIncreaseWorkingSetPrivilege: # Set this to '1' if you set ForceMaxWorkingSet to '1' SeIncreaseWorkingSetPrivilege = 1 # HoldMemory: # Dont release free memory # Can improve performance in some cases HoldMemory = 1 # PreAllocBytes: # Pre allocate X bytes on startup. This can take a while... # This is experimental. You should keep it '0' PreAllocBytes = 0 # LockPages: # Locks the allocated pages into physical memory. # Cannot be used with UseLargePages # >>Could<< improve performance LockPages = 0
My crash report with default allocator is provided in Additional Information part.
The information of my platform:
Notebook: Lenovo ThinkPad S5 2nd Generation
CPU: Intel i7 7700HQ
Memory: 20GB (4+16)
Graphic: Nvidia 1050 Ti (Notebook) 2GB
OS: Windows 10 Enterprise x64 17763