xcandiottix Posted January 17, 2023 Posted January 17, 2023 (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 January 17, 2023 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
xcandiottix Posted January 20, 2023 Author Posted January 20, 2023 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
Recommended Posts