-
-
Notifications
You must be signed in to change notification settings - Fork 237
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Parallel Masks Causing Deadlock With Brushes #2448
Labels
Bug
Something isn't working
Comments
Zeranny
added
the
Requires Testing
This is a new issue which needs to be approved before labeled with "bug"
label
Oct 6, 2023
TheMeinerLP
added a commit
to TheMeinerLP/FastAsyncWorldEdit
that referenced
this issue
Oct 10, 2023
…vert code to previous behavior.
OneLiteFeather
added
Bug
Something isn't working
and removed
Requires Testing
This is a new issue which needs to be approved before labeled with "bug"
labels
Oct 10, 2023
The parallel masking is a duplicate of #2388 but the actual crash has a different cause so leaving this open |
dordsor21
added a commit
that referenced
this issue
Oct 14, 2023
- remove ChunkHolder locking concept as this is no longer needed - previously we obtained the copy from chunk GET on finalize, meaning the copy could be replaced by a "newer" one (bad) - work around this issue by introducing concept of "unique" keys to map chunk GET copies to - correctly handle resetting of various chunk-related classes to actually allow pooling to work - remove chunks as they are submitted when flushing a SingleThreadQueueExtenting - Fixes #2459 - Addresses #2448 - Fixes #2388
dordsor21
added a commit
that referenced
this issue
Oct 14, 2023
- remove ChunkHolder locking concept as this is no longer needed - previously we obtained the copy from chunk GET on finalize, meaning the copy could be replaced by a "newer" one (bad) - work around this issue by introducing concept of "unique" keys to map chunk GET copies to - correctly handle resetting of various chunk-related classes to actually allow pooling to work - remove chunks as they are submitted when flushing a SingleThreadQueueExtenting - Fixes #2459 - Addresses #2448 - Fixes #2388
dordsor21
added a commit
that referenced
this issue
Oct 14, 2023
- remove ChunkHolder locking concept as this is no longer needed - previously we obtained the copy from chunk GET on finalize, meaning the copy could be replaced by a "newer" one (bad) - work around this issue by introducing concept of "unique" keys to map chunk GET copies to - correctly handle resetting of various chunk-related classes to actually allow pooling to work - remove chunks as they are submitted when flushing a SingleThreadQueueExtenting - Fixes #2459 - Addresses #2448 - Fixes #2388
NotMyFault
pushed a commit
that referenced
this issue
Oct 23, 2023
* fix: clear player's history away from main thread if lock locked - addresses crashing of #2448 * Correct lock usage * remove possibility for race condition
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Server Implementation
Paper
Server Version
1.20
Describe the bug
I hope I haven't gone down the wrong rabbit hole but;
It seems that when using a large enough brush with a mask that checks blocks surrounding the test block (e.g. angle mask) a scenario can arise where two threads will deadlock waiting on the same
getChunkLock.lock()
.I haven't yet worked out why this is limited to brushes and not also regions.
From VisualVM:
To Reproduce
//mask #angle[0d][45d]
- Seemingly a mask that checks blocks other than the exact test(BlockVector3) block//brush sphere stone 50
- I believe the size increases the odds of the crash.Note that making an equivalent sized region selection and performing the same masked (gmask or replace etc) action will not crash/deadlock.
Expected behaviour
Parallel masks should not enter a thread unsafe deadlock scenario.
Screenshots / Videos
No response
Error log (if applicable)
https://paste.gg/p/anonymous/381e68e542c940208676aa5a76cfcfdc
Fawe Debugpaste
https://athion.net/ISPaster/paste/view/69b8fe8c9eb2437e97aba97df0299cd6
Fawe Version
FastAsyncWorldEdit-Bukkit-2.8.1-SNAPSHOT-574
Checklist
Anything else?
I first encountered this issue on the Bakery Creative server where the Arceon angle mask caused the same crash.
This mask, like the FAWE angle mask, checks blocks surrounding the block being tested.
The text was updated successfully, but these errors were encountered: