Jump to content

F10 Map Vectors Cause DCS to go "Not Responding" / No Crash Dump


Recommended Posts

Posted (edited)

Hello,

I have multiple dynamic map marks being added, removed or moved during the course of a 4 hour server session on my multiplayer server. It seems that when I have my F10 map marks file active, the server will randomly crash every other session, sometimes 1 hour in and sometimes 3.5 hours in. 

When the crash happens the DCS Beta Server application simply goes to "Not Responding". The log file stops at whatever random thing was going on in the server but does not point to the F10 map object functions specifically. 

However, when I deactivate the file the server runs flawlessly session after session.

Now, I am sure one could say I've written bad code, but it will work and then randomly not work and whatever isn't working is not blatant in the logs. 

Therefore, I think something is going on under the hood of the DCS core code and a concern is that since this doesn't trigger a DCS crash dump, no one is aware this issue is happening except me.
 

I think, if I had to guess, that the issue might be an issue with the unique ID of the map marks. Specifically, there is no idea what ID to start the map marks with and how this ID interplays with other ID systems in the DCS table.

Basically, if I start my map marks at ID #1, does that create a DCS Table specifically for Map Marks? If so, great, but my mission file also has a set of static map marks. So, are those number starting with #1 and my dynamic map marks override statics? I don't know.

But to avoid this, I start my dynamic map marks around ID 2,000. Is it possible that the static map marks start at ID 1, then I later create dynamic map mark 2,000 ... and an hour into the mission I've created map mark 10,000 and now DCS locks up trying to loop through a gapped table between 1 and 10,000? just making something up here.

Or, is it possible that the map marks cross over with DCS object table IDs? Such as what if there is a plane or a tank with DCS object ID 2000 .. and then I create map mark 2,000 ... does that lock it up?

Anyway, I need to use IDs because I move the map marks around and or change their color. In my mission file, there are no units, everything is added dynamically so I need a dynamic solution.

I think an excellent fix would be if, when creating a map mark, it returns the dynamically created ID rather than me defining IDs which would be SO much easier. For example, consider what I am doing now:

local id = 2000
local table mapObjects = {}
function createMark()
  --Do stuff to set up the color and shape of the mark
  local markID = id + 1
  mapObjects["frontLine"] = {}
  mapObjects["frontLine"] = markID
  trigger.action.textToAll(coalition, markID, centerPoint, color, etc) 
end

function moveMark(name)
	--Let's move the front line
	--set up code stuff
	local frontLineID = mapObjects[name]
	trigger.action.setMarkupPosition(frontLineID, position)
end

As I add more stuff, I'm hoping I don't get an ID collision with who knows what as I am not sure if my IDs are unique or if I am sharing an ID pool with DCS also. So therefore, what if I can let DCS dynamically ID it for me but RETURN the ID like so:

local table mapObjects = {}
function createMark()
  	--Do stuff to set up the color and shape of the mark
  	local DCS_DYNAMIC_ID = trigger.action.textToAll(coalition, centerPoint, color, etc)
	mapObjects["frontLine"] = {}
  	mapObjects["frontLine"] = DCS_DYNAMIC_ID --sometyhing like 1002345 or whatever
end

function moveMark(name)
	--Let's move the front line
	--set up code stuff
	local DCS_DYNAMIC_ID = mapObjects[name]
	trigger.action.setMarkupPosition(DCS_DYNAMIC_ID, position)
end

In this case I'll always have an ID that is in or around the same IDs but not duplicated or overlapping with anything else.

As an aside, this was even harder to do back before the addition of being able to move and update existing marks. Before I also had to delete objects before I could move them and then assign a whole new ID. However, that system, after a few DCS patches, stopped working and also causing the game to hang. Therefore, I think I must be pushing this system to its breaking point and I think it would be good to solve. But I am very appreciative of the move/update system as it reduced the code overhead greatly.

Thanks

Edited by xcandiottix

I created and maintain Operation Candyland, a DCS Open Beta server. Since 2019, Operation Candyland has been one of the best persistent campaigns running on DCS. Featuring ALL modern US and Russian Air, Ground, and Sea forces dynamically controlled by a standalone AI controller. At any given time, there are over 500 units on the map without any lag or desync due to the standalone nature of the system. Experience one of the best multiday campaign experiences in DCS either solo or with a group of other pilots. Both new and veteran DCS pilots will find Operation Candyland a refreshing challenge where no two campaigns are ever the same. Challenge yourself by reaching the top of a custom scoreboard which grades you based on your sortie performance and experience a custom F10 fog of war system which reveals units based on your coalition's current level of command and control. Rescue downed friendly pilots or captured downed enemy pilots in order to extract valuable intel to progress the mission. Learn more at: https://discord.gg/operation-candyland

Posted

After my most recent DCS "Not Responding" event I decided to export a windows crash dump. Hopefully someone more knowledgeable than I can make some sense of this.

*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************


KEY_VALUES_STRING: 1

    Key  : Analysis.CPU.mSec
    Value: 952

    Key  : Analysis.DebugAnalysisManager
    Value: Create

    Key  : Analysis.Elapsed.mSec
    Value: 5904

    Key  : Analysis.IO.Other.Mb
    Value: 28

    Key  : Analysis.IO.Read.Mb
    Value: 1

    Key  : Analysis.IO.Write.Mb
    Value: 127

    Key  : Analysis.Init.CPU.mSec
    Value: 312

    Key  : Analysis.Init.Elapsed.mSec
    Value: 47417

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 151

    Key  : Timeline.OS.Boot.DeltaSec
    Value: 17287

    Key  : Timeline.Process.Start.DeltaSec
    Value: 11839

    Key  : WER.OS.Branch
    Value: vb_release

    Key  : WER.OS.Timestamp
    Value: 2019-12-06T14:06:00Z

    Key  : WER.OS.Version
    Value: 10.0.19041.1

    Key  : WER.Process.Version
    Value: 2.8.1.34667


FILE_IN_CAB:  DCS.DMP

NTGLOBALFLAG:  0

PROCESS_BAM_CURRENT_THROTTLED: 0

PROCESS_BAM_PREVIOUS_THROTTLED: 0

APPLICATION_VERIFIER_FLAGS:  0

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 0000000000000000
   ExceptionCode: 80000003 (Break instruction exception)
  ExceptionFlags: 00000000
NumberParameters: 0

FAULTING_THREAD:  00002abc

PROCESS_NAME:  DCS.exe

ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION}  Breakpoint  A breakpoint has been reached.

EXCEPTION_CODE_STR:  80000003

STACK_TEXT:  
00000083`9b7fdaf0 00007ff7`eb2e1d7b     : 00007ff7`3d3a2e90 000001d6`3e5a0000 00007ff7`ead60000 000001d6`35a5a020 : DCS!SW+0x103bef
00000083`9b7ff0e0 00007ff7`eb27f7ef     : 000001d0`3f9c10cd 000001d6`43aa0d14 00000000`00000000 00000000`00000000 : DCS!SW+0x14215b
00000083`9b7ff260 00007ffa`039d39e5     : 41660b20`20000000 00000000`00000000 00000000`00000000 00000000`00000000 : DCS!SW+0xdfbcf
00000083`9b7ff2a0 00007ffa`039d3efd     : 00000000`00000000 000001d6`33bff1b8 00000000`00000000 00007ffa`3d4326cc : World!wSimTrace::CommandsTraceDiscreteIsOn+0x4b5
00000083`9b7ff3c0 00007ff7`eb571951     : 00007ff7`eb59a4a0 00007ff7`eb59a4a0 000001d0`cafa8c00 000001d0`cafa8c00 : World!wSimCalendar::DoActionsUntil+0x1fd
00000083`9b7ff410 00007ff7`eb5716ae     : 00007ff7`eb59a4a0 000001d0`cafa8c70 000001d0`cafa8c70 00000000`ffffffff : DCS!SW+0x3d1d31
00000083`9b7ff470 00007ff7`eb5920b9     : 00007ff7`eb59a4a0 00000000`ffffffff 000001d0`cafa8c70 00000000`ffffffff : DCS!SW+0x3d1a8e
00000083`9b7ff4a0 00007ff7`eb5516f4     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`ffffffff : DCS!SW+0x3f2499
00000083`9b7ff4f0 00007ff7`eb5525c4     : 00000000`00000000 00000000`00000000 00000000`ffffffff 000001d0`cb4cec50 : DCS!SW+0x3b1ad4
00000083`9b7ff520 00007ff7`ecfd561a     : 000001d0`cb4cec50 00000000`00000000 00000000`ffffffff 00000000`00000000 : DCS!SW+0x3b29a4
00000083`9b7ff560 00007ff7`eb93fba2     : 00000000`0000000a 00000000`00000000 00000000`00000000 00000000`00000000 : DCS!AmdPowerXpressRequestHighPerformance+0xf48616
00000083`9b7ffd20 00007ffa`59237614     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : DCS!SW+0x79ff82
00000083`9b7ffd60 00007ffa`5af026a1     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : kernel32!BaseThreadInitThunk+0x14
00000083`9b7ffd90 00000000`00000000     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21


STACK_COMMAND:  ~0s; .ecxr ; kb

SYMBOL_NAME:  dcs+103bef

MODULE_NAME: DCS

IMAGE_NAME:  DCS.exe

FAILURE_BUCKET_ID:  BREAKPOINT_80000003_DCS.exe!Unknown

OS_VERSION:  10.0.19041.1

BUILDLAB_STR:  vb_release

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

IMAGE_VERSION:  2.8.1.34667

FAILURE_ID_HASH:  {6c8c440b-eaea-0435-9fd3-d1c4f6008018}

Followup:     MachineOwner
---------

 

I created and maintain Operation Candyland, a DCS Open Beta server. Since 2019, Operation Candyland has been one of the best persistent campaigns running on DCS. Featuring ALL modern US and Russian Air, Ground, and Sea forces dynamically controlled by a standalone AI controller. At any given time, there are over 500 units on the map without any lag or desync due to the standalone nature of the system. Experience one of the best multiday campaign experiences in DCS either solo or with a group of other pilots. Both new and veteran DCS pilots will find Operation Candyland a refreshing challenge where no two campaigns are ever the same. Challenge yourself by reaching the top of a custom scoreboard which grades you based on your sortie performance and experience a custom F10 fog of war system which reveals units based on your coalition's current level of command and control. Rescue downed friendly pilots or captured downed enemy pilots in order to extract valuable intel to progress the mission. Learn more at: https://discord.gg/operation-candyland

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...