cseelhoff / RimThreaded

RimThreaded is a RimWorld mod designed to enable RimWorld to utilize multiple threads.
MIT License
119 stars 21 forks source link

System.Threading.SynchronizationLockException #664

Closed Niilo007 closed 2 years ago

Niilo007 commented 2 years ago

IMPORTANT:

Please first search existing bugs to ensure you are not creating a duplicate bug report!
Make sure you have the latest version of Rimworld!

Describe the bug

!!! bug description here !!!

Steps to reproduce the behavior (VERY IMPORTANT)

  1. have pawns fight or get damaged in other ways
  2. freezes and errors

Error Logs

Exception ticking Fox (at (285, 0, 212)): System.Threading.SynchronizationLockException: Object synchronization method was called from an unsynchronized block of code.
  at (wrapper managed-to-native) System.Threading.Monitor.Exit(object)
  at RimThreaded.Pawn_HealthTracker_Patch.CheckForStateChangeMonitorEnter (Verse.Pawn_HealthTracker __instance, System.Nullable`1[T] dinfo, Verse.Hediff hediff) [0x00012] in <2d357d0020314110b5286267826f0a0a>:0 
  at (wrapper dynamic-method) Verse.Pawn_HealthTracker.Verse.Pawn_HealthTracker.CheckForStateChange_Patch5(Verse.Pawn_HealthTracker,System.Nullable`1<Verse.DamageInfo>,Verse.Hediff)
  at (wrapper dynamic-method) Verse.Pawn_HealthTracker.Verse.Pawn_HealthTracker.AddHediff_Patch3(Verse.Pawn_HealthTracker,Verse.Hediff,Verse.BodyPartRecord,System.Nullable`1<Verse.DamageInfo>,Verse.DamageWorker/DamageResult)
  at RimThreaded.HediffSet_Patch.AddDirect (Verse.HediffSet __instance, Verse.Hediff hediff, System.Nullable`1[T] dinfo, Verse.DamageWorker+DamageResult damageResult) [0x001cd] in <2d357d0020314110b5286267826f0a0a>:0 
  at (wrapper dynamic-method) Verse.HediffSet.Verse.HediffSet.AddDirect_Patch3(Verse.HediffSet,Verse.Hediff,System.Nullable`1<Verse.DamageInfo>,Verse.DamageWorker/DamageResult)
  at (wrapper dynamic-method) Verse.Pawn_HealthTracker.Verse.Pawn_HealthTracker.AddHediff_Patch3(Verse.Pawn_HealthTracker,Verse.Hediff,Verse.BodyPartRecord,System.Nullable`1<Verse.DamageInfo>,Verse.DamageWorker/DamageResult)
  at Verse.DamageWorker_AddInjury.FinalizeAndAddInjury (Verse.Pawn pawn, Verse.Hediff_Injury injury, Verse.DamageInfo dinfo, Verse.DamageWorker+DamageResult result) [0x00163] in <b64badbf3c3d41018b3ca5d3e8c77771>:0 
  at Verse.DamageWorker_AddInjury.FinalizeAndAddInjury (Verse.Pawn pawn, System.Single totalDamage, Verse.DamageInfo dinfo, Verse.DamageWorker+DamageResult result) [0x000c1] in <b64badbf3c3d41018b3ca5d3e8c77771>:0 
  at (wrapper dynamic-method) Verse.DamageWorker_Blunt.Verse.DamageWorker_Blunt.ApplySpecialEffectsToPart_Patch0(Verse.DamageWorker_Blunt,Verse.Pawn,single,Verse.DamageInfo,Verse.DamageWorker/DamageResult)
  at yayoCombat.patch_DamageWorker_AddInjury.Prefix (Verse.DamageWorker_AddInjury __instance, Verse.DamageInfo dinfo, Verse.Pawn pawn, Verse.DamageWorker+DamageResult result) [0x001c3] in <866019203d6945628a03de2bc1669be1>:0 
  at (wrapper dynamic-method) Verse.DamageWorker_AddInjury.Verse.DamageWorker_AddInjury.ApplyDamageToPart_Patch4(Verse.DamageWorker_AddInjury,Verse.DamageInfo,Verse.Pawn,Verse.DamageWorker/DamageResult)
  at Verse.DamageWorker_AddInjury.ApplyToPawn (Verse.DamageInfo dinfo, Verse.Pawn pawn) [0x00091] in <b64badbf3c3d41018b3ca5d3e8c77771>:0 
  at Verse.DamageWorker_AddInjury.Apply (Verse.DamageInfo dinfo, Verse.Thing thing) [0x00013] in <b64badbf3c3d41018b3ca5d3e8c77771>:0 
  at (wrapper dynamic-method) Verse.Thing.Verse.Thing.TakeDamage_Patch3(Verse.Thing,Verse.DamageInfo)
  at RimWorld.Verb_MeleeAttackDamage.ApplyMeleeDamageToTarget (Verse.LocalTargetInfo target) [0x0002e] in <b64badbf3c3d41018b3ca5d3e8c77771>:0 
  at (wrapper dynamic-method) RimWorld.Verb_MeleeAttack.RimWorld.Verb_MeleeAttack.TryCastShot_Patch1(RimWorld.Verb_MeleeAttack)
  at (wrapper dynamic-method) Verse.Verb.Verse.Verb.TryCastNextBurstShot_Patch0(Verse.Verb)
  at Verse.Verb.VerbTick () [0x00055] in <b64badbf3c3d41018b3ca5d3e8c77771>:0 
  at Verse.VerbTracker.VerbsTick () [0x00019] in <b64badbf3c3d41018b3ca5d3e8c77771>:0 
  at (wrapper dynamic-method) Verse.Pawn.Verse.Pawn.Tick_Patch2(Verse.Pawn)
  at RimThreaded.TickList_Patch.NormalThingTick () [0x00025] in <2d357d0020314110b5286267826f0a0a>:0 
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) Verse.Log:Verse.Log.Error_Patch3 (string)
RimThreaded.TickList_Patch:NormalThingTick ()
RimThreaded.RimThreaded:ExecuteTicks ()
RimThreaded.RimThreaded:ProcessTicks (RimThreaded.RimThreaded/ThreadInfo)
RimThreaded.RimThreaded:InitializeThread (object)
System.Threading.ThreadHelper:ThreadStart_Context (object)
System.Threading.ExecutionContext:RunInternal (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object,bool)
System.Threading.ExecutionContext:Run (System.Threading.ExecutionContext,System.Threading.ContextCallback,object)
System.Threading.ThreadHelper:ThreadStart (object)

Player.log

!!! Link to contents of Player.log or Error.log (MUST BE LINK) !!!

HugsLib log

https://gist.github.com/f056da30d0d9e46c90123f1aa7c079ef

Save file

!!! Please add a save file where the issue occurs to speed up testing and fixing of the issue !!!

Screenshots

!!! Add screenshots to help explain your problem here !!!

Mod list (For vanilla report, it has to be same as below list.)

Sernior commented 2 years ago

fixed by hoff he just needs to do the final merge for the 2.5.16