• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pantsbuild / pants / 34956
0%
main: 93%

Build:
Build:
LAST BUILD BRANCH: automation/release/2.34.0.dev1
DEFAULT BRANCH: main
Ran 17 Aug 2020 10:03PM UTC
Jobs 1
Files 440
Run time 22s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

pending completion
34956

push

travis-ci-com

web-flow
Fix logging deadlock when trace logging is used (#10635)

### Problem

As described in https://github.com/pantsbuild/pants/issues/10617, there is a deadlock between the Python GIL and the mutex used to protect the Rust pantsd logger at https://github.com/pantsbuild/pants/blob/1e1190df5/src/rust/engine/logging/src/logger.rs#L202.

The issue is that [a call to `nodes::Snapshot::lift_path_globs`](https://github.com/pantsbuild/pants/blob/3b8b09311/src/rust/engine/src/externs/interface.rs#L1312) may log in the call into the `globset` crate at the trace logging level. Combined with the facts that (1) log formatting also happens under that logging mutex and (2) structs from the `cpython` crate will call back into Python to be formatted, this means that code could attempt to take the GIL again unless the GIL were first dropped. This deadlocks with other code that have the logger mutex and want to take the GIL to format arguments in python.

Unfortunately, the GIL is not dropped at that particular call site but is dropped immediately after that call site.

### Solution

Move the assignment of `path_globs` inside the closure given to `py.allow_threads` so that the GIL is dropped. This should prevent the deadlock caused by logging from a third party crate that happens to be emitted during the call to `lift_path_globs`.

### Result

No deadlock from this particular way of observing the deadlock.

0 of 29130 relevant lines covered (0.0%)

0.0 hits per line

Jobs
ID Job ID Ran Files Coverage
5 34956.5 (PANTS_CONFIG_FILES="${TRAVIS_BUILD_DIR}/pants.travis-ci.toml" PANTS_DYNAMIC_UI=false LC_ALL="en_US.UTF-8" AWS_BUCKET=ci-public.pantsbuild.org BOOTSTRAPPED_PEX_KEY_PREFIX=daily/${TRAVIS_BUILD_NUMBER}/${TRAVIS_BUILD_ID}/pants.pex NATIVE_ENGINE_SO_KEY_PREFIX=monthly/native_engine_so PYENV_PY27_VERSION=2.7.18 PYENV_PY36_VERSION=3.6.10 PYENV_PY37_VERSION=3.7.7 PYENV_PY38_VERSION=3.8.3 PYENV_ROOT_OSX=${HOME}/.pants_pyenv PYENV_ROOT="${PYENV_ROOT:-${PYENV_ROOT_OSX}}" PATH="${PYENV_ROOT}/shims:${PATH}" AWS_CLI_ROOT="${HOME}/.aws_cli" AWS_ACCESS_KEY_ID__TO_BE_REEXPORTED_ON_DEPLOYS=AKIAV6A6G7RQ2HFZ5KP7 AWS_SECRET_ACCESS_KEY=[secure] RUST_BACKTRACE="all" BOOTSTRAPPED_PEX_KEY_SUFFIX=py36.linux PANTS_REMOTE_CA_CERTS_PATH=/usr/lib/google-cloud-sdk/lib/third_party/grpc/_cython/_credentials/roots.pem CACHE_NAME=python_tests.py36) 17 Aug 2020 10:03PM UTC 0
0.0
Travis Job 34956.5
Source Files on build 34956
Detailed source file information is not available for this build.
  • Back to Repo
  • Build #34956
  • f8082531 on github
  • Prev Build on master (#34951)
  • Next Build on master (#34971)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc