My character Aaro is ready to drop, but he starts tanning a rinsed black-grouse skin on a log. It gets 10% done then pauses because he's so tired.
I move the log away and test whether I can continue tanning. I can't, the log is needed. So far so good. I decide to leave it alone because I want to test if the partially-crafted hide can rot while it's on the ground in the partially crafted state.
A while later, I notice that I have a rinsed black-grouse skin in my inventory, and there's also still the one on the ground that is in partially-crafted state. I go back through my message log.txt, and it looks like it happened when it cancelled continuing the tanning.
I think there is some logic for returning ingredients to inventory so that they don't disappear if you can't start crafting the item, and it is incorrectly causing the hide to be returned to my inventory, duplicating it.
I have a save available.
Output of grep -a "black grouse" msglog.txt
This shows me first picking it up, and then dropping my whole inventory, showing there's only one rinsed black grouse-skin in my inventory at that time:
(575757):h5j0:[_]{01F70065} | The rinsed black grouse-skin will be ready in half an hour. You may not pick it up yet.
(3C5A98):h5j0:[:]{01F70065} | You pick up the rinsed black grouse-skin.
(3C5A98):h5j0:[:]{01F70065} | You drop the rinsed black grouse-skin.
(3C5A98):h5j0:[:]{01F70065} | You drop the 132 black grouse feathers.
(3C5A98):h5j0:[:]{01F70065} | You drop the 8 black grouse feathers.
(3C5A98):h5j0:[:]{01F70065} | You drop the black grouse cut.
(3C5A98):h5j1:[:]{01F70065} | You pick up the rinsed black grouse-skin.
This part shows that i've started tanning it and don't have any other skins in my inventory:
(575757):h5j2:[_]{01F70065} | The rinsed black grouse-skin here is not ready yet. You may not pick it up.
(3C5A98):h5j2:[:]{01F70065} | You pick up the 132 black grouse feathers.
(3C5A98):h5j2:[:]{01F70065} | You pick up the 8 black grouse feathers.
(3C5A98):h5j2:[:]{01F70065} | You pick up the black grouse cut.
(143270):h5j5:[#]{01F70065} | You see an initially prepared rinsed black grouse-skin (work in progress) here.
here's where i think the duplication happened:
(143270):h5j8:[#]{01F70065} | You continue working on the initially prepared rinsed black grouse-skin.
(575757):h5j8:[_]{01F70065} | The rinsed black grouse-skin here is not ready yet. You may not pick it up.
(3C5A98):h5j8:[:]{01F70065} | You pick up the 132 black grouse feathers.
(3C5A98):h5j8:[:]{01F70065} | You pick up the 8 black grouse feathers.
(3C5A98):h5j8:[:]{01F70065} | You pick up the black grouse cut.
(143270):i5j0:[#]{01F70065} | You see an initially prepared rinsed black grouse-skin (work in progress) here.
(575757):i5j0:[_]{01F70065} | The rinsed black grouse-skin here is not ready yet. You may not pick it up.
(143270):i5j6:[#]{01F70065} | You see an initially prepared rinsed black grouse-skin (work in progress) here.
(3C5A98):i5j6:[:]{01F70065} | You drop the rinsed black grouse-skin.
(3C5A98):i5j6:[:]{01F70065} | You drop the 132 black grouse feathers.
(3C5A98):i5j6:[:]{01F70065} | You drop the 8 black grouse feathers.
(3C5A98):i5j6:[:]{01F70065} | You drop the black grouse cut.
grep "[h|i]5j" msglog.txt -a shows some more surrounding context, and i5j6 is the first time that i drop my whole inventory after the moment that i think it was duplicated
(143270):h5j8:[#]{01F70065} | Using: HIDEWORKING
(143270):h5j8:[#]{01F70065} | Hidework option: Tan the skin
(143270):h5j8:[#]{01F70065} | You continue working on the initially prepared rinsed black grouse-skin.
(143270):h5j8:[#]{01F70065} | Tanning process now requires you to soften the skin.
(147870):h5j8:[?]{01F70065} | (1) You need workbench or working surface.
(575757):h5j8:[_]{01F70065} | (A table, bench or even a big tree trunk will do as a workbench at which manual work is done.)
(147870):h5j8:[?]{01F70065} | (1) You need workbench or working surface.
(575757):h5j8:[_]{01F70065} | (A table, bench or even a big tree trunk will do as a workbench at which manual work is done.)
(A80000):h5j8:[!]{01F70065} | Canceled.
(575757):h5j8:[_]{01F70065} | The rinsed black grouse-skin here is not ready yet. You may not pick it up.