Massive console spam 0.7.9
oxide 2.0.7900

backpacks v3.17.10

Failed to call hook 'OnInventoryItemFind' on plugin 'ItemRetriever v0.7.9' (InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.)
at System.Collections.Generic.Dictionary`2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) [0x0017c] in <1d26c8856bcb48938402e0be7f5cc174>:0

at System.Collections.Generic.Dictionary`2[TKey,TValue].set_Item (TKey key, TValue value) [0x00000] in <1d26c8856bcb48938402e0be7f5cc174>:0

at Oxide.Plugins.ItemRetriever+ItemIdQuery.PopulateItemQuery (System.Collections.Generic.Dictionary`2[TKey,TValue] itemQueryDict) [0x00017] in <7c357c69455346399ace8abf2cbbb387>:0

at Oxide.Plugins.ItemRetriever+SupplierManager.FindPlayerItems[T] (BasePlayer player, T& itemQuery, System.Collections.Generic.List`1[T] collect, System.Boolean beforeInventory) [0x0001c] in <7c357c69455346399ace8abf2cbbb387>:0

at Oxide.Plugins.ItemRetriever.FindPlayerItems[T] (BasePlayer player, T& itemQuery, System.Collections.Generic.List`1[T] collect, System.Boolean includePlayerWearables) [0x0005b] in <7c357c69455346399ace8abf2cbbb387>:0

at Oxide.Plugins.ItemRetriever.OnInventoryItemFind (PlayerInventory inventory, System.Int32 itemId) [0x00013] in <7c357c69455346399ace8abf2cbbb387>:0

at Oxide.Plugins.ItemRetriever.DirectCallHook (System.String name, System.Object& ret, System.Object[] args) [0x0040d] in <7c357c69455346399ace8abf2cbbb387>:0

at Oxide.Plugins.CSharpPlugin.InvokeMethod (Oxide.Core.Plugins.HookMethod method, System.Object[] args) [0x00079] in <42f9bedc659b4f4786eb778d3cd58968>:0

at Oxide.Core.Plugins.CSPlugin.OnCallHook (System.String name, System.Object[] args) [0x000de] in <db058accaef24d86af67c0d18d641acb>:0

at Oxide.Core.Plugins.Plugin.CallHook (System.String ho

Thanks for reporting. This is another symptom of Rust doing multi-threading somewhere. I couldn't find any relation between hooks such as OnInventoryItemFind and the networking hooks (e.g., no shared state between them), so I'm not sure how there are thread collisions happening.

My best guess for now is that some other plugin is handling hooks that are being called off the main thread, and those other plugins are inadvertently invoking Item Retriever's hooks (perhaps via some game function that Item Retriever hooks into), ultimately resulting in hooks such as OnInventoryItemFind being called off the main thread as well.

I released v0.7.10 which should address this.