get_smeltable call while hauling causes standing still forever

Started by dawudweaver, October 20, 2020, 01:19:46 AM

Previous topic - Next topic

dawudweaver

Hi all, and thanks in advance if you read through this. So there are somehow a couple of locations on the map where if the pawn tries to go through, in trying to opportunistically haul they try to call get_smeltable() on something that appears to not be a `Thing`. This results in them trying this 10 times in quick succession (since they still choose the same job after they hit the error), eventually leading to them just doing the `standing` action. The stacktrace from the event is below. If I order them to go do the job, they skip the opportunistic hauling and are fine. I've removed all items from the immediate area and blocking off paths by forbidding doors, but they still seem to be hitting the error.

I suspect this is either in deepstorage or the base game, as that's the only mod I have that I'm aware of that messes with storage zones. I've attached a full list of current mods. I tried adding Jobs of opportunity, but that didn't seem to make a difference either way. Is there a way to run specific commands in rimworld? that would make debugging this easier.



Exception ticking Blitz (at (157, 0, 147)): System.NullReferenceException: Object reference not set to an instance of an object
  at Verse.Thing.get_Smeltable () [0x00020] in <b02b390b894d4487a224faae4a3db641>:0
  at RimWorld.SpecialThingFilterWorker_Smeltable.Matches (Verse.Thing t) [0x00010] in <b02b390b894d4487a224faae4a3db641>:0
  at Verse.ThingFilter.Allows (Verse.Thing t) [0x000a1] in <b02b390b894d4487a224faae4a3db641>:0
  at (wrapper dynamic-method) RimWorld.StorageSettings.RimWorld.StorageSettings.AllowedToAccept_Patch0(RimWorld.StorageSettings,Verse.Thing)
  at RimWorld.Building_Storage.Accepts (Verse.Thing t) [0x00000] in <b02b390b894d4487a224faae4a3db641>:0
  at RimWorld.StoreUtility.TryFindBestBetterStoreCellForWorker (Verse.Thing t, Verse.Pawn carrier, Verse.Map map, RimWorld.Faction faction, RimWorld.SlotGroup slotGroup, System.Boolean needAccurateResult, Verse.IntVec3& closestSlot, System.Single& closestDistSquared, RimWorld.StoragePriority& foundPriority) [0x00005] in <b02b390b894d4487a224faae4a3db641>:0
  at (wrapper dynamic-method) RimWorld.StoreUtility.RimWorld.StoreUtility.TryFindBestBetterStoreCellFor_Patch0(Verse.Thing,Verse.Pawn,Verse.Map,RimWorld.StoragePriority,RimWorld.Faction,Verse.IntVec3&,bool)
  at Verse.AI.Pawn_JobTracker.TryOpportunisticJob (Verse.AI.Job job) [0x001cd] in <b02b390b894d4487a224faae4a3db641>:0
  at (wrapper dynamic-method) Verse.AI.Pawn_JobTracker.Verse.AI.Pawn_JobTracker.StartJob_Patch2(Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool)
  at Verse.AI.Pawn_JobTracker.TryFindAndStartJob () [0x000bd] in <b02b390b894d4487a224faae4a3db641>:0
  at (wrapper dynamic-method) Verse.AI.Pawn_JobTracker.Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch1(Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool)
  at Verse.AI.Pawn_JobTracker.JobTrackerTick () [0x00151] in <b02b390b894d4487a224faae4a3db641>:0
  at Verse.Pawn.Tick () [0x00098] in <b02b390b894d4487a224faae4a3db641>:0
  at Verse.TickList.Tick () [0x0015c] in <b02b390b894d4487a224faae4a3db641>:0
Verse.Log:Error(String, Boolean)
Verse.TickList:Tick()
Verse.TickManager:Verse.TickManager.DoSingleTick_Patch2(TickManager)
Verse.TickManager:TickManagerUpdate()
Verse.Game:Verse.Game.UpdatePlay_Patch2(Game)
Verse.Root_Play:Update()



And a version after I tried installing Jobs of Opportunity:


Exception ticking Yuuma (at (154, 0, 140)): System.NullReferenceException: Object reference not set to an instance of an object
  at Verse.Thing.get_Smeltable () [0x00020] in <b02b390b894d4487a224faae4a3db641>:0
  at RimWorld.SpecialThingFilterWorker_Smeltable.Matches (Verse.Thing t) [0x00010] in <b02b390b894d4487a224faae4a3db641>:0
  at Verse.ThingFilter.Allows (Verse.Thing t) [0x000a1] in <b02b390b894d4487a224faae4a3db641>:0
  at RimWorld.StorageSettings.AllowedToAccept (Verse.Thing t) [0x00000] in <b02b390b894d4487a224faae4a3db641>:0
  at RimWorld.Building_Storage.Accepts (Verse.Thing t) [0x00000] in <b02b390b894d4487a224faae4a3db641>:0
  at RimWorld.StoreUtility.TryFindBestBetterStoreCellForWorker (Verse.Thing t, Verse.Pawn carrier, Verse.Map map, RimWorld.Faction faction, RimWorld.SlotGroup slotGroup, System.Boolean needAccurateResult, Verse.IntVec3& closestSlot, System.Single& closestDistSquared, RimWorld.StoragePriority& foundPriority) [0x00005] in <b02b390b894d4487a224faae4a3db641>:0
  at (wrapper dynamic-method) RimWorld.StoreUtility.RimWorld.StoreUtility.TryFindBestBetterStoreCellFor_Patch0(Verse.Thing,Verse.Pawn,Verse.Map,RimWorld.StoragePriority,RimWorld.Faction,Verse.IntVec3&,bool)
  at JobsOfOpportunity.JobsOfOpportunity+Hauling.CanHaul (JobsOfOpportunity.JobsOfOpportunity+Hauling+ProximityStage proximityStage, Verse.Pawn pawn, Verse.Thing thing, Verse.IntVec3 jobCell, JobsOfOpportunity.JobsOfOpportunity+Hauling+ProximityCheck proximityCheck, Verse.IntVec3& storeCell) [0x0018a] in <6c3f1bc4216e4e4797860fe66dd0d219>:0
  at JobsOfOpportunity.JobsOfOpportunity+Hauling.TryHaulStage (Verse.Pawn pawn, Verse.IntVec3 jobCell, JobsOfOpportunity.JobsOfOpportunity+Hauling+ProximityCheck proximityCheck) [0x00039] in <6c3f1bc4216e4e4797860fe66dd0d219>:0
  at JobsOfOpportunity.JobsOfOpportunity+Hauling.<TryHaul>g___TryHaul|5_0 (JobsOfOpportunity.JobsOfOpportunity+Hauling+<>c__DisplayClass5_0& ) [0x00071] in <6c3f1bc4216e4e4797860fe66dd0d219>:0
  at JobsOfOpportunity.JobsOfOpportunity+Hauling.TryHaul (Verse.Pawn pawn, Verse.IntVec3 jobCell) [0x00010] in <6c3f1bc4216e4e4797860fe66dd0d219>:0
  at JobsOfOpportunity.JobsOfOpportunity+Patch_TryOpportunisticJob.TryOpportunisticJob (Verse.AI.Pawn_JobTracker __instance, Verse.AI.Job job) [0x00047] in <6c3f1bc4216e4e4797860fe66dd0d219>:0
  at (wrapper dynamic-method) Verse.AI.Pawn_JobTracker.Verse.AI.Pawn_JobTracker.TryOpportunisticJob_Patch0(Verse.AI.Pawn_JobTracker,Verse.AI.Job)
  at (wrapper dynamic-method) Verse.AI.Pawn_JobTracker.Verse.AI.Pawn_JobTracker.StartJob_Patch2(Verse.AI.Pawn_JobTracker,Verse.AI.Job,Verse.AI.JobCondition,Verse.AI.ThinkNode,bool,bool,Verse.ThinkTreeDef,System.Nullable`1<Verse.AI.JobTag>,bool,bool)
  at Verse.AI.Pawn_JobTracker.TryFindAndStartJob () [0x000bd] in <b02b390b894d4487a224faae4a3db641>:0
  at (wrapper dynamic-method) Verse.AI.Pawn_JobTracker.Verse.AI.Pawn_JobTracker.EndCurrentJob_Patch1(Verse.AI.Pawn_JobTracker,Verse.AI.JobCondition,bool,bool)
  at Verse.AI.Pawn_JobTracker.JobTrackerTick () [0x00151] in <b02b390b894d4487a224faae4a3db641>:0
  at Verse.Pawn.Tick () [0x00098] in <b02b390b894d4487a224faae4a3db641>:0
  at Verse.TickList.Tick () [0x0015c] in <b02b390b894d4487a224faae4a3db641>:0
Verse.Log:Error(String, Boolean)
Verse.TickList:Tick()
Verse.TickManager:Verse.TickManager.DoSingleTick_Patch2(TickManager)
Verse.TickManager:TickManagerUpdate()
Verse.Game:Verse.Game.UpdatePlay_Patch2(Game)
Verse.Root_Play:Update()

Yuuma started 10 jobs in 10 ticks. List: (Wait_MaintainPosture (Job_4677988)) , (Wait_MaintainPosture (Job_4677990)) , (Wait_MaintainPosture (Job_4677994)) , (Wait_MaintainPosture (Job_4677996)) , (Wait_MaintainPosture (Job_4677998)) , (Wait_MaintainPosture (Job_4678000)) , (Wait_MaintainPosture (Job_4678002)) , (Wait_MaintainPosture (Job_4678004)) , (Wait_MaintainPosture (Job_4678006)) , (Wait_MaintainPosture (Job_4678008))  curDriver=JobDriver_WaitMaintainPosture (toilIndex=0) curJob=(Wait_MaintainPosture (Job_4678008))
Verse.Log:Error(String, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver)
Verse.AI.Pawn_JobTracker:FinalizeTick()
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick()
Verse.TickList:Tick()
Verse.TickManager:Verse.TickManager.DoSingleTick_Patch2(TickManager)
Verse.TickManager:TickManagerUpdate()
Verse.Game:Verse.Game.UpdatePlay_Patch2(Game)
Verse.Root_Play:Update()

[HugsLib][ERR] Exception during PrepareLogData: System.IO.FileNotFoundException: Log file not found:/tmp/rimworld_log
  at HugsLib.Logs.LogPublisher.GetLogFileContents () [0x0002b] in <e4b32d84f714481f906e5eea5e560e3b>:0
  at HugsLib.Logs.LogPublisher.PrepareLogData () [0x00002] in <e4b32d84f714481f906e5eea5e560e3b>:0
Verse.Log:Error(String, Boolean)
HugsLib.Utils.ModLogger:ReportException(Exception, String, Boolean, String)
HugsLib.Logs.LogPublisher:PrepareLogData()
HugsLib.Logs.LogPublisher:BeginUpload()
HugsLib.Logs.LogPublisher:OnPublishConfirmed()
HugsLib.Logs.Dialog_PublishLogsOptions:OnAcceptKeyPressed()
HugsLib.Logs.Dialog_PublishLogsOptions:DoWindowContents(Rect)
Verse.Window:InnerWindowOnGUI(Int32)
UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle)

[HugsLib][ERR] Exception during Execute: System.IO.FileNotFoundException: Log file path is unknown or log file does not exist. Path:/tmp/rimworld_log
Verse.Log:Error(String, Boolean)
HugsLib.Utils.ModLogger:ReportException(Exception, String, Boolean, String)
HugsLib.Shell.ShellOpenLog:Execute()
HugsLib.Logs.<>c:<AddOwnWidgets>b__15_3()
Verse.FloatMenuOption:Chosen(Boolean, FloatMenu)
Verse.FloatMenuOption:DoGUI(Rect, Boolean, FloatMenu)
Verse.FloatMenu:DoWindowContents(Rect)
Verse.Window:InnerWindowOnGUI(Int32)
UnityEngine.GUI:CallWindowDelegate(WindowFunction, Int32, Int32, GUISkin, Int32, Single, Single, GUIStyle)

s4ltshaker

I've been getting the same issue with my pawns, I'll bump this thread in the hopes others can help.