Basic Info: Platform: PlayStation 5 Issue Type: Gameplay Game Mode: Single Player Map: Isle of Siptah Bug Description: When cooking items, taking everything at once has everything that had been in the fireplace (here: small campfire) that can be cooked to get cooked immediately if it hasn’t been before instead of retaining its original state. Also, the cost in heating materials isn’t deducted, either. If I have perceived this right, I must have taken everything out of the campfire in the exact moment when one bit of the meat strips that I had been cooking was turned from raw to cooked. Since timing this is critical here, it may be difficult to reproduce. Bug Reproduction: Place raw edibles in the campfire. Press triangle to take everything out at once. If your timing is right, you get everything readily cooked without the cost in resources (i. e. heating material). Final Considerations: As it seems, this bug is caused by a race condition so your timing is critical in triggering this bug. It seems to be necessary for whatever your fireplace is (verified only for the small campfire so far, others are pending verification) to turn raw food into its cooked variant when everything is taken out. In this case the logic behind updating an item’s state isn’t reentrant, thereby gets messed up and handles everything that has previously been in the campfire (it looks as if it’s taking things out and then puts back the modified version), and if everything vanishes once this logic has been triggered, it handles everything instead of just the item it was supposed to modify. This is the classical readers-and-writers critical section and should be handled accordingly (use a tri-state semaphore to protect it): Whoever needs to update the fireplace needs exclusive access rights to the data structure so nothing else can mess with it. Then the modifier can take an item out and replace it with a new one and release the lock on the data structure. If another entity is attempting to modify this data structure (like the player adding or removing items), the semaphore is checked. If it’s free, let the process continue. If not, queue the new process and have it wait until the process in the critical section has completed its task and released the lock. Once that happens, don’t flag as free, though, but immediately let the waiting process advance into the critical section.
Platform: PlayStation 5 Issue Type: Gameplay Game Mode: Single Player Map: Isle of Siptah
When cooking items, taking everything at once has everything that had been in the fireplace (here: small campfire) that can be cooked to get cooked immediately if it hasn’t been before instead of retaining its original state. Also, the cost in heating materials isn’t deducted, either. If I have perceived this right, I must have taken everything out of the campfire in the exact moment when one bit of the meat strips that I had been cooking was turned from raw to cooked. Since timing this is critical here, it may be difficult to reproduce.
As it seems, this bug is caused by a race condition so your timing is critical in triggering this bug. It seems to be necessary for whatever your fireplace is (verified only for the small campfire so far, others are pending verification) to turn raw food into its cooked variant when everything is taken out. In this case the logic behind updating an item’s state isn’t reentrant, thereby gets messed up and handles everything that has previously been in the campfire (it looks as if it’s taking things out and then puts back the modified version), and if everything vanishes once this logic has been triggered, it handles everything instead of just the item it was supposed to modify. This is the classical readers-and-writers critical section and should be handled accordingly (use a tri-state semaphore to protect it): Whoever needs to update the fireplace needs exclusive access rights to the data structure so nothing else can mess with it. Then the modifier can take an item out and replace it with a new one and release the lock on the data structure. If another entity is attempting to modify this data structure (like the player adding or removing items), the semaphore is checked. If it’s free, let the process continue. If not, queue the new process and have it wait until the process in the critical section has completed its task and released the lock. Once that happens, don’t flag as free, though, but immediately let the waiting process advance into the critical section.
This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.