Since 1.29 (still present in the current build, DAYZ_1_30 define), a DayZDiag_x64 server throws a VM exception every time a player's inventory input or juncture packet is handled:
Reason: NULL pointer to instance
Class:
Function:
scripts/4_World/Systems/Inventory/DayZPlayerInventory.c:735
Reason: NULL pointer to instance
Class:
Function:
scripts/4_World/Systems/Inventory/DayZPlayerInventory.c:670
Each exception comes right after this message in the script log:
Module PluginInventoryDebug is not Registred in PluginManager.c!
GetPlugin() scripts/4_World/Plugins/PluginManager.c : 340
OnHandleStoredInputUserData() scripts/4_World/Systems/Inventory/DayZPlayerInventory.c : 735
Cause
PluginManager.Init() registers PluginInventoryDebug inside #ifdef DIAG_DEVELOPER, but through RegisterPluginDebug(). That function calls RegisterPlugin(..., reg_on_release = false).
With reg_on_release == false, RegisterPlugin() returns early when g_Game.IsDebug() is false. This is the case on the Diag server, so the plugin is never registered.
DayZPlayerInventory.OnHandleStoredJunctureData() (line 670) and OnHandleStoredInputUserData() (line 735) call, also under #ifdef DIAG_DEVELOPER:
PluginInventoryDebug.Cast(GetPlugin(PluginInventoryDebug)).IsOldProcessInputDataEnable()
with no null check, so they dereference null.
The registration condition (IsDebug()) and the usage condition (DIAG_DEVELOPER) don't match.
Environment
DayZDiag_x64, dedicated server, vanilla Chernarus
Launch params: -server -config=... -mission=... -profiles=... -port=2302 -doLogs -adminLog -netLog -filePatching -noPause -battleye=0 -newErrorsAreWarnings=1