BoostHungry / SeniorCitizenCenterMod

The Senior Citizen Center Mod for Cities Skylines is a mod that enables functionality for Nursing Home Assets. This mod is required when downloading Nursing Home Assets for Cities Skylines that reference this mod otherwise the Assets will not function properly.
2 stars 4 forks source link

Error in logfile and wierd freeze ingame while opening the health menu #2

Open t1a2l opened 4 years ago

t1a2l commented 4 years ago

SeniorCitizenCenterMod: NursingHomeInitializer.attemptInitialization -- initHealthcareMenu -- End

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

Fallback handler could not load library E:/Program Files (x86)/Steam/steamapps/common/Cities_Skylines/Cities_Data/Mono/libc Fallback handler could not load library E:/Program Files (x86)/Steam/steamapps/common/Cities_Skylines/Cities_Data/Mono/.\libc Fallback handler could not load library E:/Program Files (x86)/Steam/steamapps/common/Cities_Skylines/Cities_Data/Mono/libc System.TypeInitializationException: An exception was thrown by the type initializer for Mono.CSharp.CSharpCodeCompiler ---> System.IO.FileNotFoundException: Windows mono path not found: E:\Program Files (x86)\Steam\steamapps\mono\mono\mini\mono.exe at Mono.CSharp.CSharpCodeCompiler..cctor () [0x00000] in :0 --- End of inner exception stack trace --- at Microsoft.CSharp.CSharpCodeProvider.CreateCompiler () [0x00000] in :0 at System.Xml.Serialization.XmlSerializer.GenerateSerializers (System.Xml.Serialization.GenerationBatch batch, System.CodeDom.Compiler.CompilerParameters cp) [0x00000] in :0 at System.Xml.Serialization.XmlSerializer.RunSerializerGeneration (System.Object obj) [0x00000] in :0 SeniorCitizenCenterMod: NursingHomeInitializer.attemptInitialization -- initHealthcareMenu -- Start


SeniorCitizenCenterMod: NursingHomeInitializer.attemptInitialization -- initHealthcareMenu -- End

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

IndexOutOfRangeException: Array index is out of range. at GeneratedScrollPanel.IntializeUIAssetFilters () [0x00000] in :0 at GeneratedScrollPanel.OnVisibilityChanged (ColossalFramework.UI.UIComponent comp, Boolean isVisible) [0x00000] in :0 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in :0 Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation. at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in :0 at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in :0 at ColossalFramework.UI.UIComponent.Invoke (UnityEngine.GameObject target, System.String eventName, System.Object[] args) [0x00000] in :0 at ColossalFramework.UI.UIComponent.Invoke (System.String eventName, System.Object[] args) [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnVisibilityChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnVisibilityChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnVisibilityChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.set_isVisible (Boolean value) [0x00000] in :0 at ColossalFramework.UI.UITabContainer.SelectPageByIndex (Int32 value) [0x00000] in :0 at ColossalFramework.UI.UITabContainer.set_selectedIndex (Int32 value) [0x00000] in :0 at ColossalFramework.UI.UITabstrip.SelectTabByIndex (Int32 value) [0x00000] in :0 at ColossalFramework.UI.UITabstrip.set_selectedIndex (Int32 value) [0x00000] in :0 at ColossalFramework.UI.UITabstrip.OnClick (ColossalFramework.UI.UIMouseEventParameter p) [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnClick (ColossalFramework.UI.UIMouseEventParameter p) [0x00000] in :0 at ColossalFramework.UI.UIButton.OnClick (ColossalFramework.UI.UIMouseEventParameter p) [0x00000] in :0 at ColossalFramework.UI.UIInput+MouseHandler.ProcessInput (IInputTranslator translator, Ray ray, ColossalFramework.UI.UIComponent component, Boolean retainFocusSetting) [0x00000] in :0 at ColossalFramework.UI.UIInput.ProcessMouseInput () [0x00000] in :0 at ColossalFramework.UI.UIInput.Update () [0x00000] in :0


SeniorCitizenCenterMod: PanelHelper.handleBuildingInfoPanel: Reset upkeep color back to: RGBA(254, 159, 0, 255)

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/DebugBindings.gen.cpp Line: 51)

NullReferenceException: Object reference not set to an instance of an object at ColossalFramework.UI.UIComponent.EnsureLayoutExists () [0x00000] in :0 at ColossalFramework.UI.UIComponent.EnsureLayoutExists () [0x00000] in :0 at ColossalFramework.UI.UIComponent.EnsureLayoutExists () [0x00000] in :0 at ColossalFramework.UI.UIComponent.ResetLayout (Boolean recursive, Boolean force) [0x00000] in :0 at ColossalFramework.UI.UIComponent.ResetLayout () [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnSizeChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.set_size (Vector2 value) [0x00000] in :0 at ColossalFramework.UI.UIComponent.FitChildrenVertically (Single margin) [0x00000] in :0 at ColossalFramework.UI.UIPanel.AutoArrange () [0x00000] in :0 at ColossalFramework.UI.UIPanel.ChildInvalidatedLayout () [0x00000] in :0 at ColossalFramework.UI.UIPanel.ChildInvalidated (ColossalFramework.UI.UIComponent child, Vector2 value) [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnSizeChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.set_size (Vector2 value) [0x00000] in :0 at ColossalFramework.UI.UIComponent.FitChildrenVertically (Single margin) [0x00000] in :0 at ColossalFramework.UI.UIPanel.AutoArrange () [0x00000] in :0 at ColossalFramework.UI.UIPanel.ChildInvalidatedLayout () [0x00000] in :0 at ColossalFramework.UI.UIPanel.ChildInvalidated (ColossalFramework.UI.UIComponent child, Vector2 value) [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnPositionChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.set_relativePosition (Vector3 value) [0x00000] in :0 at ColossalFramework.UI.UIAnchorLayout.PerformLayoutAbsolute (Vector2 parentSize, Vector2 componentSize) [0x00000] in :0 at ColossalFramework.UI.UIAnchorLayout.PerformLayoutInternal () [0x00000] in :0 at ColossalFramework.UI.UIAnchorLayout.PerformLayout () [0x00000] in :0 at ColossalFramework.UI.UIComponent.PerformLayout () [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnSizeChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.set_size (Vector2 value) [0x00000] in :0 at ColossalFramework.UI.UIAnchorLayout.PerformLayoutAbsolute (Vector2 parentSize, Vector2 componentSize) [0x00000] in :0 at ColossalFramework.UI.UIAnchorLayout.PerformLayoutInternal () [0x00000] in :0 at ColossalFramework.UI.UIAnchorLayout.PerformLayout () [0x00000] in :0 at ColossalFramework.UI.UIComponent.PerformLayout () [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnSizeChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.set_size (Vector2 value) [0x00000] in :0 at ColossalFramework.UI.UIComponent.FitChildrenVertically (Single margin) [0x00000] in :0 at ColossalFramework.UI.UIPanel.AutoArrange () [0x00000] in :0 at ColossalFramework.UI.UIPanel.ChildInvalidatedLayout () [0x00000] in :0 at ColossalFramework.UI.UIPanel.ChildIsVisibleChanged (ColossalFramework.UI.UIComponent child, Boolean value) [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnVisibilityChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnVisibilityChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnVisibilityChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.OnVisibilityChanged () [0x00000] in :0 at ColossalFramework.UI.UIComponent.set_isVisible (Boolean value) [0x00000] in :0 at ColossalFramework.UI.UIComponent.Hide () [0x00000] in :0 at WorldInfoPanel.HideAllWorldInfoPanels () [0x00000] in :0 at DefaultTool.OpenWorldInfoPanel (InstanceID id, Vector3 position) [0x00000] in :0 at DefaultTool.OnToolGUI (UnityEngine.Event e) [0x00000] in :0 at ToolBase.OnGUI () [0x00000] in :0

originalfoo commented 4 years ago

https://github.com/krzychu124/Cities-Skylines-Traffic-Manager-President-Edition/wiki/Array-Index---Symptom-12

Supporting log files (TMPE.log has nice list of enabled mods):

krzychu from TMPE team tested Senior Citizen mod on vanilla game with debugger attached - with DLCs active, the error occurs as the DLCs add additional filter buttons

Transcript form #support chat (initially based on log files from t1a2l):

aubergine18

Ok, let's take this from the top...
These are the mods you have active in those last log files:

* 707497031    Tram Station Track
* 515489008    Extra Train Station Tracks
* 554232266    SeniorCitizenCenterMod
* 667342976    Loading Screen Mod
* 1637663252   TM:PE 11.0 STABLE
* 530771650    Prefab Hook
* 408905948    Pause on load
* 1412844620   Realistic Walking Speed
* 812125426    Network Extensions 2
* 724382534    One-Way Train Tracks
* 1619685021   Move It 2.6.0
* 1938493221   Mini FPS Booster 1.0
* 694123443    American Traffic Lights
* 1420955187   Real Time
* 426163185    WG Realistic Population v8.4.0
* 1394468624   Advanced Stop Selection
* 816260433    Metro Overhaul
* 1548831935   Advanced Vehicle Options 1.8.5
* 654707599    WG Citizen Lifecycle Rebalance v2.6

Out of those mods, these are the only ones that affect UI stuff in any way:

 * 1548831935   Advanced Vehicle Options 1.8.5 - has its own UI
 * 816260433    Metro Overhaul - has its own UI
 * 1420955187   Real Time - subtle updates to citizen/vehicle info panels
 * 1619685021   Move It 2.6.0 - has its own UI
 * 1637663252   TM:PE 11.0 STABLE - has its own UI
 * 667342976    Loading Screen Mod - only updates loading screen
 * 554232266    SeniorCitizenCenterMod - updates several parts of game UI, including citizen info panel and healthcare panel

At line 30914 in the output log, there's an Array Index error. at GeneratedScrollPanel.IntializeUIAssetFilters

My guess is there's an incompatibility between Senior Citizen mod and Real Time

krzychu124

I've just catched that error in debugger xD Let's see what we've got here, lol

aubergine18

Or it could just be Senior Citizen mod on its own. The log entries before and after the array index error are:

SeniorCitizenCenterMod: PanelHelper.handleBuildingInfoPanel: Reset upkeep color back to: RGBA(254, 159, 0, 255)

-- big array index error --

SeniorCitizenCenterMod: CustomBasePanel.OnButtonClicked -- Component Clicked: 575176523.Basic 4 Star Nursing Home_Data (ColossalFramework.UI.UIButton)

The same array index error is also appearing at line 35529 in the log file, and it's again wrapped in a Senior Citizen task:

SeniorCitizenCenterMod: NursingHomeInitializer.attemptInitialization -- initHealthcareMenu -- End

-- big array index error --

So it's when Senior Citizen mod is updating UI that it's breaking and spitting those errors in to logs.

krzychu124

Something is weird there

aubergine18

Then there's the two System.IO.EndOfStreamException: Failed to read past end of stream. errors (starting line 35567) which may or may not be related; something's put data in to the save game that seems broken.

krzychu124

I can say that error occured because I subscribed Senior Citizen mod :)
I must check if I enabled dependent assets
Looks like TargetInvocationException is caused from Senior Citizen mod (CustomHeltcarePanel)

image

It's not missing UI but broken UI filter (18 buttons by default - 42 in my game currently) I have no idea which mod add filters

aubergine18

filter?

krzychu124

digging
but it looks like filter buttons count doesn't match up with list of components in UIFilterPanel

aubergine18

is that on the build menu bars? like on trees menu there's different size trees, and some menus have workshop icon to filter to workshop assets?

krzychu124

I think, it's hard to say, but some button names are: UIFilterBigBuildings, UIFilterSmallTree, UIFilterNetProps etc..

aubergine18

yup those are the ones i'm thinking about

krzychu124

UIFilterPanel contains 42 filter buttons but there are only 18 filter types

aubergine18

one type can have multiple filters IIRC ? so tree has like 5 maybe 6?

krzychu124

and for each UIFilter component there should be filter type with matching array index of state(visible or not)

aubergine18

DLCs add them maybe? if filters are added without altering the array length, that will give the array index error as UIFilter will look for button index in the array...?
MOM might add some, not used it in a long time. But I know they did a load of UI work in v9

krzychu124

I don't have mom, I only subscribed to SeniorCitizen and it throws error clicking on Helthcare panel button

image

It's weird, because it works without that mod xd

krzychu124 commented 4 years ago

It looks like GeneratedScrollPanel.Awake() was called twice because field m_UIFilterPanel contains double amount of UI components. Filter panel should have 21 components - 18 buttons and 3 separators, but I can see 42 components (in HealthCarePanel). image

image

As you can see on the second screenshot the list of components is duplicated. Probably something went wrong while you were replacing HealthcarePanel (memory leak?)

When you call Destroy, GameObject is destroyed at the end of the frame(not immediately)

BoostHungry commented 4 years ago

So are you saying I should wait a frame after deleting the HealthcareGroupPanel before creating a new one?

Here: https://github.com/BoostHungry/SeniorCitizenCenterMod/blob/master/SeniorCitizenCenterMod/PanelHelper.cs#L163