Open Enverex opened 3 years ago
Hmm from the log snippet it just looks like potentially faulty LogiX, but it's hard to say anything without context. It shouldn't cause crash by itself though, raycasts do not modify the simulation data. I'd need to see the whole log.
Does this happen in a particular world? Anything that can be reproduced on a regular client?
I can't say what triggered it as I wasn't there at the time, I doubt the person that triggered it realised they did either. The worlds the server was hosting hadn't been changed so unless it's something incredibly obscure, I don't believe it would have been one of the worlds itself (otherwise I would expect it to have happened more often).
I reported this mainly due to the severity (complete hardlock of the Neos headless software leaving it in a zombie state) despite how unfortunately vague the report itself is, just in case something useful could be gleaned from the logs.
Logs sent as requested.
Looks like a bunch of invalid values made it to the acceleration structures used by the new dynamic bone collision query system. I've added guards in 2021.9.2.676 to prevent this which should fix it. Thanks for report! Let me know if the issue persists.
Not sure if this is the same thing but the resulting behaviour was the same, the headless became unresponsive.
4:41:14 PM.043 Exception running asynchronous task:
System.AggregateException: One or more errors occurred. (Object reference not set to an instance of an object) ---> System.NullReferenceException: Object reference not set to an instance of an object
at BepuUtilities.Collections.QuickSort.Sort[TKey,TComparer] (TKey& keys, System.Int32 l, System.Int32 r, TComparer& comparer) <0x4368bfd0 + 0x003b9> in <9b84f04af68846b0bf7215c07b3361e5>:0
at BepuPhysics.Trees.Tree.FindPartitionForAxis (BepuUtilities.BoundingBox* boundingBoxes, BepuUtilities.BoundingBox* aMerged, System.Single* centroids, System.Int32* indexMap, System.Int32 count, System.Int32& splitIndex, System.Single& cost, BepuUtilities.BoundingBox& a, BepuUtilities.BoundingBox& b, System.Int32& leafCountA, System.Int32& leafCountB) <0x4368b9f0 + 0x00072> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.FindPartition (BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count, System.Int32& splitIndex, BepuUtilities.BoundingBox& a, BepuUtilities.BoundingBox& b, System.Int32& leafCountA, System.Int32& leafCountB) <0x4368b340 + 0x00194> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.SplitLeavesIntoChildren (BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count, System.Int32 nodeIndex) <0x4368af80 + 0x000a6> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.CreateSweepBuilderNode (System.Int32 parentIndex, System.Int32 indexInParent, BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count) <0x4368acc0 + 0x00075> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.SweepBuild (BepuUtilities.Memory.BufferPool pool, BepuUtilities.Memory.Buffer`1[T] leafBounds) <0x43689ca0 + 0x0057b> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Collidables.Mesh..ctor (BepuUtilities.Memory.Buffer`1[T] triangles, System.Numerics.Vector3& scale, BepuUtilities.Memory.BufferPool pool) <0x43689730 + 0x0029c> in <f1c97308329249378dafd71e68e14cb9>:0
at CodeX.BepuMeshHelper.ComputeMeshCollider (BaseX.MeshX meshx, System.Boolean dualSided, BepuUtilities.Memory.BufferPool bufferPool, System.Object bufferLock, System.Action meshDataExtracted, BepuPhysics.Collidables.Mesh& mesh) <0x436817c0 + 0x0013d> in <368a2654c3714372b779a48d890211a7>:0
at FrooxEngine.MeshColliderData.BuildData () [0x000c1] in <d79cbb467f0147628a85804f9bdaa366>:0
at FrooxEngine.MeshPhysicsData`1[D].<EnsureUpToDate>b__30_0 () [0x000f3] in <d79cbb467f0147628a85804f9bdaa366>:0
--- End of inner exception stack trace ---
---> (Inner Exception #0) System.NullReferenceException: Object reference not set to an instance of an object
at BepuUtilities.Collections.QuickSort.Sort[TKey,TComparer] (TKey& keys, System.Int32 l, System.Int32 r, TComparer& comparer) <0x4368bfd0 + 0x003b9> in <9b84f04af68846b0bf7215c07b3361e5>:0
at BepuPhysics.Trees.Tree.FindPartitionForAxis (BepuUtilities.BoundingBox* boundingBoxes, BepuUtilities.BoundingBox* aMerged, System.Single* centroids, System.Int32* indexMap, System.Int32 count, System.Int32& splitIndex, System.Single& cost, BepuUtilities.BoundingBox& a, BepuUtilities.BoundingBox& b, System.Int32& leafCountA, System.Int32& leafCountB) <0x4368b9f0 + 0x00072> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.FindPartition (BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count, System.Int32& splitIndex, BepuUtilities.BoundingBox& a, BepuUtilities.BoundingBox& b, System.Int32& leafCountA, System.Int32& leafCountB) <0x4368b340 + 0x00194> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.SplitLeavesIntoChildren (BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count, System.Int32 nodeIndex) <0x4368af80 + 0x000a6> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.CreateSweepBuilderNode (System.Int32 parentIndex, System.Int32 indexInParent, BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count) <0x4368acc0 + 0x00075> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.SweepBuild (BepuUtilities.Memory.BufferPool pool, BepuUtilities.Memory.Buffer`1[T] leafBounds) <0x43689ca0 + 0x0057b> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Collidables.Mesh..ctor (BepuUtilities.Memory.Buffer`1[T] triangles, System.Numerics.Vector3& scale, BepuUtilities.Memory.BufferPool pool) <0x43689730 + 0x0029c> in <f1c97308329249378dafd71e68e14cb9>:0
at CodeX.BepuMeshHelper.ComputeMeshCollider (BaseX.MeshX meshx, System.Boolean dualSided, BepuUtilities.Memory.BufferPool bufferPool, System.Object bufferLock, System.Action meshDataExtracted, BepuPhysics.Collidables.Mesh& mesh) <0x436817c0 + 0x0013d> in <368a2654c3714372b779a48d890211a7>:0
at FrooxEngine.MeshColliderData.BuildData () [0x000c1] in <d79cbb467f0147628a85804f9bdaa366>:0
at FrooxEngine.MeshPhysicsData`1[D].<EnsureUpToDate>b__30_0 () [0x000f3] in <d79cbb467f0147628a85804f9bdaa366>:0 <---
at void BaseX.UniLog.Error(string message, bool stackTrace)
at void FrooxEngine.CoroutineManager.CheckExceptions(Task task)
at void System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() in /home/ben/build/mono-git/src/mono/external/corert/src/System.Private.CoreLib/src/System/Threading/Tasks/TaskContinuation.cs:line 48
at void System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() in /home/ben/build/mono-git/src/mono/external/corert/src/System.Private.CoreLib/src/System/Threading/Tasks/Task.cs:line 2334
at bool System.Threading.ThreadPoolWorkQueue.Dispatch() in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/threadpool.cs:line 785
at bool System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/threadpool.cs:line 1261
4:41:14 PM.098 Exception running asynchronous task:
System.AggregateException: One or more errors occurred. (Object reference not set to an instance of an object) ---> System.NullReferenceException: Object reference not set to an instance of an object
at BepuUtilities.Collections.QuickSort.Sort[TKey,TComparer] (TKey& keys, System.Int32 l, System.Int32 r, TComparer& comparer) <0x4368bfd0 + 0x0006f> in <9b84f04af68846b0bf7215c07b3361e5>:0
at BepuPhysics.Trees.Tree.FindPartitionForAxis (BepuUtilities.BoundingBox* boundingBoxes, BepuUtilities.BoundingBox* aMerged, System.Single* centroids, System.Int32* indexMap, System.Int32 count, System.Int32& splitIndex, System.Single& cost, BepuUtilities.BoundingBox& a, BepuUtilities.BoundingBox& b, System.Int32& leafCountA, System.Int32& leafCountB) <0x4368b9f0 + 0x00072> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.FindPartition (BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count, System.Int32& splitIndex, BepuUtilities.BoundingBox& a, BepuUtilities.BoundingBox& b, System.Int32& leafCountA, System.Int32& leafCountB) <0x4368b340 + 0x00194> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.SplitLeavesIntoChildren (BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count, System.Int32 nodeIndex) <0x4368af80 + 0x000a6> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.CreateSweepBuilderNode (System.Int32 parentIndex, System.Int32 indexInParent, BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count) <0x4368acc0 + 0x00075> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.SweepBuild (BepuUtilities.Memory.BufferPool pool, BepuUtilities.Memory.Buffer`1[T] leafBounds) <0x43689ca0 + 0x0057b> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Collidables.Mesh..ctor (BepuUtilities.Memory.Buffer`1[T] triangles, System.Numerics.Vector3& scale, BepuUtilities.Memory.BufferPool pool) <0x43689730 + 0x0029c> in <f1c97308329249378dafd71e68e14cb9>:0
at CodeX.BepuMeshHelper.ComputeMeshCollider (BaseX.MeshX meshx, System.Boolean dualSided, BepuUtilities.Memory.BufferPool bufferPool, System.Object bufferLock, System.Action meshDataExtracted, BepuPhysics.Collidables.Mesh& mesh) <0x436817c0 + 0x0013d> in <368a2654c3714372b779a48d890211a7>:0
at FrooxEngine.MeshColliderData.BuildData () [0x000c1] in <d79cbb467f0147628a85804f9bdaa366>:0
at FrooxEngine.MeshPhysicsData`1[D].<EnsureUpToDate>b__30_0 () [0x000f3] in <d79cbb467f0147628a85804f9bdaa366>:0
--- End of inner exception stack trace ---
---> (Inner Exception #0) System.NullReferenceException: Object reference not set to an instance of an object
at BepuUtilities.Collections.QuickSort.Sort[TKey,TComparer] (TKey& keys, System.Int32 l, System.Int32 r, TComparer& comparer) <0x4368bfd0 + 0x0006f> in <9b84f04af68846b0bf7215c07b3361e5>:0
at BepuPhysics.Trees.Tree.FindPartitionForAxis (BepuUtilities.BoundingBox* boundingBoxes, BepuUtilities.BoundingBox* aMerged, System.Single* centroids, System.Int32* indexMap, System.Int32 count, System.Int32& splitIndex, System.Single& cost, BepuUtilities.BoundingBox& a, BepuUtilities.BoundingBox& b, System.Int32& leafCountA, System.Int32& leafCountB) <0x4368b9f0 + 0x00072> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.FindPartition (BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count, System.Int32& splitIndex, BepuUtilities.BoundingBox& a, BepuUtilities.BoundingBox& b, System.Int32& leafCountA, System.Int32& leafCountB) <0x4368b340 + 0x00194> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.SplitLeavesIntoChildren (BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count, System.Int32 nodeIndex) <0x4368af80 + 0x000a6> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.CreateSweepBuilderNode (System.Int32 parentIndex, System.Int32 indexInParent, BepuPhysics.Trees.Tree+SweepResources& leaves, System.Int32 start, System.Int32 count) <0x4368acc0 + 0x00075> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.SweepBuild (BepuUtilities.Memory.BufferPool pool, BepuUtilities.Memory.Buffer`1[T] leafBounds) <0x43689ca0 + 0x0057b> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Collidables.Mesh..ctor (BepuUtilities.Memory.Buffer`1[T] triangles, System.Numerics.Vector3& scale, BepuUtilities.Memory.BufferPool pool) <0x43689730 + 0x0029c> in <f1c97308329249378dafd71e68e14cb9>:0
at CodeX.BepuMeshHelper.ComputeMeshCollider (BaseX.MeshX meshx, System.Boolean dualSided, BepuUtilities.Memory.BufferPool bufferPool, System.Object bufferLock, System.Action meshDataExtracted, BepuPhysics.Collidables.Mesh& mesh) <0x436817c0 + 0x0013d> in <368a2654c3714372b779a48d890211a7>:0
at FrooxEngine.MeshColliderData.BuildData () [0x000c1] in <d79cbb467f0147628a85804f9bdaa366>:0
at FrooxEngine.MeshPhysicsData`1[D].<EnsureUpToDate>b__30_0 () [0x000f3] in <d79cbb467f0147628a85804f9bdaa366>:0 <---
at void BaseX.UniLog.Error(string message, bool stackTrace)
at void FrooxEngine.CoroutineManager.CheckExceptions(Task task)
at void System.Threading.Tasks.ContinuationTaskFromTask.InnerInvoke() in /home/ben/build/mono-git/src/mono/external/corert/src/System.Private.CoreLib/src/System/Threading/Tasks/TaskContinuation.cs:line 48
at void System.Threading.Tasks.Task.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() in /home/ben/build/mono-git/src/mono/external/corert/src/System.Private.CoreLib/src/System/Threading/Tasks/Task.cs:line 2334
at bool System.Threading.ThreadPoolWorkQueue.Dispatch() in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/threadpool.cs:line 785
at bool System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/threadpool.cs:line 1261
4:41:15 PM.211 MaxUsers set to 40. LastModifyingUser:
at void BaseX.UniLog.Log(string message, bool stackTrace)
at void FrooxEngine.WorldConfiguration.FieldChanged(IChangeable obj)
at void FrooxEngine.SyncElement.SyncElementChanged(IChangeable member)
at void FrooxEngine.SyncField<int>.ValueChanged()
at bool FrooxEngine.SyncField<int>.InternalSetValue(in int value, bool sync, bool change)
at void FrooxEngine.SyncField<int>.set_Value(int value)
at void FrooxEngine.Sync<int>.set_Value(int value)
at void FrooxEngine.World.set_MaxUsers(int value)+() => { }
at void FrooxEngine.World.RunSynchronousActions()
at void FrooxEngine.World.NextRefreshStage()
at bool FrooxEngine.World.Refresh()
at void FrooxEngine.WorldManager.UpdateStep(double maxMilliseconds)
at bool FrooxEngine.WorldManager.RunUpdateLoop(double maxMilliseconds)
at void FrooxEngine.Engine.UpdateStep(double maxMilliseconds)
at void FrooxEngine.Engine.RunUpdateLoop(double maxMilliseconds)
at void NeosHeadless.Program.UpdateLoop()
at void System.Threading.ThreadHelper.ThreadStart_Context(object state) in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:line 71
at void System.Threading.ThreadHelper.ThreadStart() in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:line 109
4:41:15 PM.212 WorldDescription set to . LastModifyingUser:
at void BaseX.UniLog.Log(string message, bool stackTrace)
at void FrooxEngine.WorldConfiguration.FieldChanged(IChangeable obj)
at void FrooxEngine.SyncElement.SyncElementChanged(IChangeable member)
at void FrooxEngine.SyncField<string>.ValueChanged()
at bool FrooxEngine.SyncField<string>.InternalSetValue(in string value, bool sync, bool change)
at void FrooxEngine.SyncField<string>.set_Value(string value)
at void FrooxEngine.Sync<string>.set_Value(string value)
at void FrooxEngine.World.set_Description(string value)+() => { }
at void FrooxEngine.World.RunSynchronousActions()
at void FrooxEngine.World.NextRefreshStage()
at bool FrooxEngine.World.Refresh()
at void FrooxEngine.WorldManager.UpdateStep(double maxMilliseconds)
at bool FrooxEngine.WorldManager.RunUpdateLoop(double maxMilliseconds)
at void FrooxEngine.Engine.UpdateStep(double maxMilliseconds)
at void FrooxEngine.Engine.RunUpdateLoop(double maxMilliseconds)
at void NeosHeadless.Program.UpdateLoop()
at void System.Threading.ThreadHelper.ThreadStart_Context(object state) in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:line 71
at void System.Threading.ThreadHelper.ThreadStart() in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:line 109
4:41:16 PM.088 World running...
6:35:58 PM.473 Exception in background job:
System.NullReferenceException: Object reference not set to an instance of an object
at BepuUtilities.Collections.QuickList`1[T].Resize (System.Int32 newSize, BepuUtilities.Memory.IUnmanagedMemoryPool pool) <0x44193110 + 0x0004b> in <9b84f04af68846b0bf7215c07b3361e5>:0
at BepuPhysics.Trees.Tree.RefitAndMark (System.Int32 leafCountThreshold, BepuUtilities.Collections.QuickList`1[System.Int32]& refinementCandidates, BepuUtilities.Memory.BufferPool pool) <0x44e566a0 + 0x00112> in <f1c97308329249378dafd71e68e14cb9>:0
at BepuPhysics.Trees.Tree.RefitAndRefine (BepuUtilities.Memory.BufferPool pool, System.Int32 frameIndex, System.Single refineAggressivenessScale, System.Single cacheOptimizeAggressivenessScale) <0x4189cfc0 + 0x00177> in <f1c97308329249378dafd71e68e14cb9>:0
at FrooxEngine.BoundingBoxTree.RefitAndRefine () <0x423669a0 + 0x0003f> in <d79cbb467f0147628a85804f9bdaa366>:0
at FrooxEngine.DynamicBoneChainManager.UpdateAccelerationStructures () <0x42365e80 + 0x002be> in <d79cbb467f0147628a85804f9bdaa366>:0
at BaseX.WorkProcessor.ProcessQueue (BaseX.WorkProcessor+ThreadWorker worker, System.Collections.Concurrent.ConcurrentQueue`1[T] queue) [0x00009] in <77881a2cfe8f46e6b06b559ee82b4ed3>:0
Full log - https://neos.xnode.org/tmp/gh2914-2.log
The headless is pretty much unusable at this point, it's dying within a few hours of being brought online each time.
Latest full log example - https://neos.xnode.org/tmp/gh2914-3.log
Did you notice this happening due to a particular world? Or any of them? I can add a bit of extra diagnostics and see if we can narrow it down some, but if you can tell which world it's happening in, that can help.
I believe it was users in the world, not the worlds themselves triggering it so I couldn't see anywhere in particular. You've just pushed a few dynamic bone crash fixes though so I'll see if the issue disappears now and report back.
Hmm... Give it a test with the latest 2021.9.3.1281 and see if that makes a difference. It might've been the dynamic bones perhaps, but I'm not sure at this point. If it still occurs, I'll add more diagnostics.
Unfortunately still seems to be happening. Full log - https://neos.xnode.org/tmp/gh2914-4.log
I found an issue in a very dense mesh, it seems like it was trying to compute a collider for it and that might've caused some corruption. I pushed a fix in 2021.9.4.468.
Please give that a try and see if the issue is still there.
What version of Mono are you using by the way though? The stack traces are a bit bizarre and don't actually match the Neos code. Are you using something like LLVM or alternate JIT?
It looks like Mono got switched to using LLVM at some point, which should apparently be faster, but I'm guessing it's tripping something up in Neos and that's causing problems?
Also could you tell from the logs where that collider was? There shouldn't be anything in any of my worlds that is anywhere near that high poly.
I'm not sure how stable the LLVM JIT is, it might not be generating correct code in some cases and that might be causing issues.
Don't know where the collider was, it was some kind of terrain that looked like a cave or sea floor. I'd have to search around. It was about ~14M triangles, it was tripping up on the dual sided version of the collider.
I can't find much information on the Mono LLVM JIT being incomplete or unstable so I'm interested to know if it's triggering things in Neos that need to be fixed, or if it's something that needs to be reported back to Mono upstream. Apparently LLVM JIT should give a substantial performance boost to Mono so it would be beneficial for it to work if at all possible.
Me and Matty spent an hour or so going around all the maps that the headless hosts trying to find that problematic mesh but there's nothing even remotely close. The closest thing is a ~500,000 poly terrain in one map, but that's a fraction of the number and was already set to front only so if you do ever manage to find what it is (or can provide me with the ID) it would be appreciated as I'd obviously like to get rid of it or at least figure out why it exists.
Usually compiler bugs like that are very subtle and devious and you won't too much on them online. Best thing is to check if that's actually source of problems - run for a while with LLVM JIT and then with regular JIT and see if problems disappear.
For diagnosing issues like this, can you use regular JIT please? With the LLVM I can't match up the stack trace to the actual code, which makes finding the cause significantly more difficult.
I switched back to non-LLVM after my last comment and the headless hasn't become unresponsive again since.
I can switch to LLVM on the fly so if you'd like me to test anything with that specifically going forward, please let me know.
Ah good to know! If you could switch to LLVM for a bit that could help, we could confirm if it was source of the issues or if we actually fixed the issue.
Tried it again with LLVM, joined one of the worlds and Mono core dumped (no output from Neos this time).
=================================================================
Native Crash Reporting
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
/home/steam/NeosVR/runNeos.sh: line 11: 1491947 Aborted (core dumped) mono --llvm Neos.exe
So nothing particularly useful there. Normally it's not so abrupt and at least allows Neos itself to crash.
Looks like I spoke to soon. Headless became unresponsive after about 2 days. Neos was still running, but wasn't returning a new shell or responding to carriage returns. Nothing had been output to the terminal since a world had restarted though there's a suspicious listing of NaNs.
Same terminal output in text format:
User Joined Blueberry Smoothie Club. Username: EnverexBot, UserID: U-EnverexBot, MachineID: 3eqxf_36huqlpjlpqvqlza
User Spawn Blueberry Smoothie Club. Username: EnverexBot, UserID: U-EnverexBot, MachineID: 3eqxf_36huqlpjlpqvqlza
Default Host Role: Admin
Exception trying to load video URL https://youtube.com/watch?v=QIOn6JyOG-I from video service:
System.IO.FileNotFoundException: youtube-dl not found!
at NYoutubeDL.Services.PreparationService.SetupPrepare (NYoutubeDL.YoutubeDL ydl) [0x000de] in <11f13f42977d43ebb3f898315a1fa2fd>:0
at NYoutubeDL.Services.InfoService.GetDownloadInfoAsync (NYoutubeDL.YoutubeDL ydl, System.Threading.CancellationToken cancellationToken) [0x000d8] in <11f13f42977d43ebb3f898315a1fa2fd>:0
at NYoutubeDL.Services.InfoService.GetDownloadInfoAsync (NYoutubeDL.YoutubeDL ydl, System.String url, System.Threading.CancellationToken cancellationToken) [0x00077] in <11f13f42977d43ebb3f898315a1fa2fd>:0
at NYoutubeDL.YoutubeDL.GetDownloadInfoAsync (System.String url) [0x000dd] in <11f13f42977d43ebb3f898315a1fa2fd>:0
at FrooxEngine.VideoTextureProvider.LoadFromVideoServiceIntern (System.Uri url, System.Threading.CancellationToken cancellationToken) [0x000f0] in <f3a38dec6c394bcfb804878c7c0b7a9f>:0
at FrooxEngine.VideoTextureProvider.LoadFromVideoService (System.Uri url, System.Threading.CancellationToken cancellationToken) [0x0007d] in <f3a38dec6c394bcfb804878c7c0b7a9f>:0
at void BaseX.UniLog.Error(string message, bool stackTrace)
at async Task FrooxEngine.VideoTextureProvider.LoadFromVideoService(Uri url, CancellationToken cancellationToken)
at void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<<LoadFromVideoService>d__68>(ref <LoadFromVideoService>d__68 stateMachine) in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:line 304
at Task FrooxEngine.VideoTextureProvider.LoadFromVideoService(Uri url, CancellationToken cancellationToken)
at void FrooxEngine.VideoTextureProvider+<>c__DisplayClass62_0+<<UpdateAsset>b__0>d.MoveNext()
at void System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<<<UpdateAsset>b__0>d>(ref <<UpdateAsset>b__0>d stateMachine) in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/runtime/compilerservices/AsyncMethodBuilder.cs:line 304
at void FrooxEngine.VideoTextureProvider.UpdateAsset()+() => { } [0]
at Task FrooxEngine.CoroutineManager.StartTask(Func<Task> task, IUpdatable updatable)
at Task FrooxEngine.Worker.StartTask(Func<Task> task)
at void FrooxEngine.VideoTextureProvider.UpdateAsset()
at void FrooxEngine.AssetProvider<FrooxEngine.VideoTexture>.RefreshAssetState()
at void FrooxEngine.AssetProvider<FrooxEngine.VideoTexture>.OnChanges()
at void FrooxEngine.ComponentBase<FrooxEngine.Component>.InternalRunApplyChanges(int updateIndex)
at void FrooxEngine.UpdateManager.ProcessChange(IUpdatable updatable)
at bool FrooxEngine.UpdateManager.RunQueue<IUpdatable>(Queue<IUpdatable> queue, Action<IUpdatable> action)
at bool FrooxEngine.UpdateManager.RunChangeApplications()
at bool FrooxEngine.World.RefreshStep()
at bool FrooxEngine.World.Refresh()
at void FrooxEngine.WorldManager.UpdateStep(double maxMilliseconds)
at bool FrooxEngine.WorldManager.RunUpdateLoop(double maxMilliseconds)
at void FrooxEngine.Engine.UpdateStep(double maxMilliseconds)
at void FrooxEngine.Engine.RunUpdateLoop(double maxMilliseconds)
at void NeosHeadless.Program.UpdateLoop()
at void System.Threading.ThreadHelper.ThreadStart_Context(object state) in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:line 71
at void System.Threading.ThreadHelper.ThreadStart() in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:line 109
Invalid bounds: Center: [NaN; NaN; 0] Size: [NaN; NaN; 0] -- Min: [NaN; NaN; 0] Max: [NaN; NaN; 0], owner: Element: ID315FF, Type: FrooxEngine.LocalMeshProvider, World: Blueberry Smoothie Club, IsRemoved: False, IsDestroyed: False, IsDisposed: False, Enabled: True
Element: ID2F1FF, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Chunk, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID2D7FF, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Chunk, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID1E82100, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Canvas, T: [0; 0; 0], R: [-1.135147E-14; 1.080599E-09; 1.023103E-14; 1], S: [0.001; 0.001; 0.001], ActiveSelf: True, IsDestroyed: False
Element: ID1E71E00, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: RawUI, T: [0; 1000; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID1B30500, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Playlist 2.1, T: [-11.07566; 3.570425; 42.78163], R: [3.731029E-08; 0.05904979; -4.845483E-08; 0.9982551], S: [0.3242003; 0.334227; 0.3342269], ActiveSelf: True, IsDestroyed: False
Element: ID544F00, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: World Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID2100, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID0, Type: FrooxEngine.World, World: Blueberry Smoothie Club, IsRemoved: False
, URL:
Members on: FrooxEngine.LocalMeshProvider - ID315FF
persistent - FrooxEngine.Sync`1[System.Boolean] - ID315FF: True
UpdateOrder - FrooxEngine.Sync`1[System.Int32] - ID315FF: 0
Enabled - FrooxEngine.Sync`1[System.Boolean] - ID315FF: True
HighPriorityIntegration - FrooxEngine.Sync`1[System.Boolean] - ID315FF: False
Invalid bounds: Center: [960; NaN; 0] Size: [1920; NaN; 0] -- Min: [0; NaN; 0] Max: [1920; NaN; 0], owner: Element: ID2FCFF, Type: FrooxEngine.LocalMeshProvider, World: Blueberry Smoothie Club, IsRemoved: False, IsDestroyed: False, IsDisposed: False, Enabled: True
Element: ID2F1FF, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Chunk, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID2D7FF, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Chunk, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID1E82100, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Canvas, T: [0; 0; 0], R: [-1.135147E-14; 1.080599E-09; 1.023103E-14; 1], S: [0.001; 0.001; 0.001], ActiveSelf: True, IsDestroyed: False
Element: ID1E71E00, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: RawUI, T: [0; 1000; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID1B30500, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Playlist 2.1, T: [-11.07566; 3.570425; 42.78163], R: [3.731029E-08; 0.05904979; -4.845483E-08; 0.9982551], S: [0.3242003; 0.334227; 0.3342269], ActiveSelf: True, IsDestroyed: False
Element: ID544F00, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: World Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID2100, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID0, Type: FrooxEngine.World, World: Blueberry Smoothie Club, IsRemoved: False
, URL:
Members on: FrooxEngine.LocalMeshProvider - ID2FCFF
persistent - FrooxEngine.Sync`1[System.Boolean] - ID2FCFF: True
UpdateOrder - FrooxEngine.Sync`1[System.Int32] - ID2FCFF: 0
Enabled - FrooxEngine.Sync`1[System.Boolean] - ID2FCFF: True
HighPriorityIntegration - FrooxEngine.Sync`1[System.Boolean] - ID2FCFF: False
Invalid bounds: Center: [960; NaN; 0] Size: [1920; NaN; 0] -- Min: [0; NaN; 0] Max: [1920; NaN; 0], owner: Element: ID2E2FF, Type: FrooxEngine.LocalMeshProvider, World: Blueberry Smoothie Club, IsRemoved: False, IsDestroyed: False, IsDisposed: False, Enabled: True
Element: ID2D7FF, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Chunk, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID1E82100, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Canvas, T: [0; 0; 0], R: [-1.135147E-14; 1.080599E-09; 1.023103E-14; 1], S: [0.001; 0.001; 0.001], ActiveSelf: True, IsDestroyed: False
Element: ID1E71E00, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: RawUI, T: [0; 1000; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID1B30500, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Playlist 2.1, T: [-11.07566; 3.570425; 42.78163], R: [3.731029E-08; 0.05904979; -4.845483E-08; 0.9982551], S: [0.3242003; 0.334227; 0.3342269], ActiveSelf: True, IsDestroyed: False
Element: ID544F00, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: World Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID2100, Type: FrooxEngine.Slot, World: Blueberry Smoothie Club, IsRemoved: False, Slot name: Root, T: [0; 0; 0], R: [0; 0; 0; 1], S: [1; 1; 1], ActiveSelf: True, IsDestroyed: False
Element: ID0, Type: FrooxEngine.World, World: Blueberry Smoothie Club, IsRemoved: False
, URL:
Members on: FrooxEngine.LocalMeshProvider - ID2E2FF
persistent - FrooxEngine.Sync`1[System.Boolean] - ID2E2FF: True
UpdateOrder - FrooxEngine.Sync`1[System.Int32] - ID2E2FF: 0
Enabled - FrooxEngine.Sync`1[System.Boolean] - ID2E2FF: True
HighPriorityIntegration - FrooxEngine.Sync`1[System.Boolean] - ID2E2FF: False
MaxUsers set to 40. LastModifyingUser:
at void BaseX.UniLog.Log(string message, bool stackTrace)
at void FrooxEngine.WorldConfiguration.FieldChanged(IChangeable obj)
at void FrooxEngine.SyncElement.SyncElementChanged(IChangeable member)
at void FrooxEngine.SyncField<int>.ValueChanged()
at bool FrooxEngine.SyncField<int>.InternalSetValue(in int value, bool sync, bool change)
at void FrooxEngine.SyncField<int>.set_Value(int value)
at void FrooxEngine.Sync<int>.set_Value(int value)
at void FrooxEngine.World.set_MaxUsers(int value)+() => { }
at void FrooxEngine.World.RunSynchronousActions()
at void FrooxEngine.World.NextRefreshStage()
at bool FrooxEngine.World.Refresh()
at void FrooxEngine.WorldManager.UpdateStep(double maxMilliseconds)
at bool FrooxEngine.WorldManager.RunUpdateLoop(double maxMilliseconds)
at void FrooxEngine.Engine.UpdateStep(double maxMilliseconds)
at void FrooxEngine.Engine.RunUpdateLoop(double maxMilliseconds)
at void NeosHeadless.Program.UpdateLoop()
at void System.Threading.ThreadHelper.ThreadStart_Context(object state) in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:line 71
at void System.Threading.ThreadHelper.ThreadStart() in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:line 109
WorldDescription set to . LastModifyingUser:
at void BaseX.UniLog.Log(string message, bool stackTrace)
at void FrooxEngine.WorldConfiguration.FieldChanged(IChangeable obj)
at void FrooxEngine.SyncElement.SyncElementChanged(IChangeable member)
at void FrooxEngine.SyncField<string>.ValueChanged()
at bool FrooxEngine.SyncField<string>.InternalSetValue(in string value, bool sync, bool change)
at void FrooxEngine.SyncField<string>.set_Value(string value)
at void FrooxEngine.Sync<string>.set_Value(string value)
at void FrooxEngine.World.set_Description(string value)+() => { }
at void FrooxEngine.World.RunSynchronousActions()
at void FrooxEngine.World.NextRefreshStage()
at bool FrooxEngine.World.Refresh()
at void FrooxEngine.WorldManager.UpdateStep(double maxMilliseconds)
at bool FrooxEngine.WorldManager.RunUpdateLoop(double maxMilliseconds)
at void FrooxEngine.Engine.UpdateStep(double maxMilliseconds)
at void FrooxEngine.Engine.RunUpdateLoop(double maxMilliseconds)
at void NeosHeadless.Program.UpdateLoop()
at void System.Threading.ThreadHelper.ThreadStart_Context(object state) in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:line 71
at void System.Threading.ThreadHelper.ThreadStart() in /home/ben/build/mono-git/src/mono/mcs/class/referencesource/mscorlib/system/threading/thread.cs:line 109
World running...
Blueberry Smoothie Club>
And the full log - https://neos.xnode.org/tmp/gh2914-5.log
Unfortunately I can't find anything in the log that would indicate the cause. The NaN's there are harmless, they're just for meshes.
Does this happen to a specific world perhaps? Or something else that could narrow it down? It's odd, because it doesn't seem to throw exception of any kind or anything that would get logged.
Describe the bug?
No-one was able to access my headless as they'd receive a "Session ended" message. Trying to access the headless console for Neos resulted in no response from the headless console, it was effectively soft-frozen. The logs last entries referred to a NaNsplosion.
Relevant issues
Nothing definite. https://github.com/Neos-Metaverse/NeosPublic/issues/2855 could be related but that's based only due to the error listed.
To Reproduce
Unsure, I've not seen this before but it took down everything.
Expected behavior
For the headless to not completely and silently die.
Log Files
Here's the final snippet before everything died. The full log can be DMed over Discord or whereever on demand. It contains a lot of user details and asset IDs so avoiding posting it here publicly.
Screenshots
No response
How often does it happen?
Sometimes
Does the bug persist after restarting Neos?
Yes
Neos Version Number
2021.9.1.710
What Platforms does this occur on?
Linux
Link to Reproduction Item/World
No response
Did this work before?
Yes
If it worked before, on which build?
No response
Additional context
I'm not sure if this was caused by something in the world or someone's avatar as it's not something I've experienced before.
Reporters
No response