-
-
Notifications
You must be signed in to change notification settings - Fork 652
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
Fix Key
interning race.
#12152
Fix Key
interning race.
#12152
Conversation
The race sequencing and the coredump details are here: https://github.com/pantsbuild/pants/pull/11262/files#r642013320 |
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in key_get. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes pantsbuild#11926 [ci skip-build-wheels]
b42580d
to
82ccb94
Compare
Although this fix is needed for correctness, I had never measured the perf impact. #11262 noted a ~5% speedup for This change looks like its affect on that benchmark is in the noise. Here With pantsd:
Without pantsd:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you! 🙌
Could you please cherry-pick to 2.4 and 2.5? I will get out release candidates with this.
Will do. You cut 2.3.2 and 2.2.3 on May 7th and this bug goes back to 2.2.x. That implies we're treating 2.2.x and greater as maintained still and so this cherrypick should got to those two as well. I'll optimistically prepare those and you can shoot down if there is something I'm missing. |
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes pantsbuild#11926 (cherry picked from commit a59be85) # Building wheels and fs_util will be skipped. Delete if not intended. [ci skip-build-wheels]
Sure, 2.3 and 2.2 sound great as well. Thanks |
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes pantsbuild#11926 (cherry picked from commit a59be85) [ci skip-build-wheels]
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes pantsbuild#11926 (cherry picked from commit a59be85) [ci skip-build-wheels]
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes pantsbuild#11926 (cherry picked from commit a59be85) [ci skip-build-wheels]
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes pantsbuild#11926 (cherry picked from commit a59be85) # Building wheels and fs_util will be skipped. Delete if not intended. [ci skip-build-wheels]
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes pantsbuild#11926 (cherry picked from commit a59be85) [ci skip-build-wheels]
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes #11926 (cherry picked from commit a59be85)
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes #11926 (cherry picked from commit a59be85)
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes pantsbuild#11926 (cherry picked from commit a59be85) [ci skip-build-wheels]
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes #11926 (cherry picked from commit a59be85)
This follows up on pantsbuild#12152. # Building wheels and fs_util will be skipped. Delete if not intended. [ci skip-build-wheels]
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes pantsbuild#11926 (cherry picked from commit a59be85) [ci skip-build-wheels]
Previously a `Key` could be observed before it was added to the `reverse_keys` mapping leading to a panic in `key_get`. That panic used a debug format on the problematic key and the `Debug` impl for `Key` indirectly uses `key_get`. This results in a panic while handling a panic. Fix the root cause of the panic, ensuring the panic can never happen as was intended. Also fix the recursive use of `key_get` in the panic for sanity sake. Fixes #11926 (cherry picked from commit a59be85)
Now cherry-picked to |
Previously a
Key
could be observed before it was added to thereverse_keys
mapping leading to a panic inkey_get
. That panic useda debug format on the problematic key and the
Debug
impl forKey
indirectly uses
key_get
. This results in a panic while handling apanic.
Fix the root cause of the panic, ensuring the panic can never happen
as was intended. Also fix the recursive use of
key_get
in the panicfor sanity sake.
Fixes #11926
[ci skip-build-wheels]