306

I followed the readme instructions for building Parity from source and then executed:

cargo build --release ~/.cargo/bin/cargo build --release 

as instructed, both of which returned the following message while the prompt hung:

 Blocking waiting for file lock on the registry index 

I'm on a Mac.

9
  • 63
    The problem for me was that my rust-analyzer vscode plugin was indexing. Once it finished, running cargo run worked fine. Commented Feb 11, 2022 at 22:17
  • 14
    I've the same problem on Linux when using Rustler to use Rust codes in Elixir. The problem resolved by removing ~/.cargo/.package-cache as mentioned it this issue github.com/rust-lang/cargo/issues/9742. Commented Apr 3, 2022 at 2:18
  • My problem was that I installed both Rust and rust-analyzer on VS Code at the same time. The problem was fixed after I removed either of the extensions. Hope this helps! Commented Jun 25, 2022 at 12:12
  • 1
    VSCode was my hang up as @oriont stated. I just needed to wait for the rust-analyzer to finish whatever it was doing. Commented Nov 4, 2022 at 17:08
  • 1
    I'm sure this will only apply to a small percentage of users, but for me, restarting Visual Studio Code fixed the problem Commented Nov 23, 2022 at 23:43

25 Answers 25

278

I suggest looking at 'Cargo build hangs with " Blocking waiting for file lock on the registry index" after building parity from source' first.

I had the same issue and had success with a quick and dirty

rm -rf ~/.cargo/registry/index/* ~/.cargo/.package-cache 
Sign up to request clarification or add additional context in comments.

9 Comments

Worked for me after 30s of waiting, without doing anything.
I had to remove ~/.cargo/.package-cache as well.
For me, I suspect it's the rust-analyzer extension in VS Code. While it's downloading its components (after I open the project) I get the blocking problem.
worked for me after deleting both .cargo/registry/index and .package-cache
I removed rm -rf ~/.cargo/registry/cache/* for Error Blocking waiting for file lock on package cache to make it work.
|
256

Running cargo clean seems to fix the problem.

6 Comments

Seems less hacky, but for some reason only the accepted answer solved my problem. Is it doing the same?
@FelixJassler No. It deletes the entire target folder of the project you run this command for, unlike the accepted answer.
must note this for next time! Had already done the manual remove of the ~/.cargo/.package-cache per @ali-shirvani and it worked a treat
that's how I got it. I.e. Ran "cargo clean" and then build stuck on "Blocking waiting for file lock on package cache"
worked for me. I'm using it in a devcontainer which seems to screwed things up when building it the first time. Cargo clean did the job tho.
|
179

This happens when you run two compilations of the same project at the same time. The compiler uses a lock file to avoid having data race issues.

There are some possibilities:

  • If you ran the two compilations yourself, the solution is obvious: you need to cancel one of them.

  • If you use an IDE that automatically compiles your project: you can wait for the job to be finished or close the IDE. If it does not work, this is probably because of RLS hanging out. You can run pkill rls to solve the issue.

  • As a last resort, you can force the removal of the lock using rm -rf ~/.cargo/registry/index/* as said in jvatic's answer.

5 Comments

This is correct, in my case it was the cargo extension in VS Code which was automatically compiling my project
Same as @HomamBahrani. I think this answer reveal the root cause should be ranked higher.
My apologizes but where is this .cargo/registry/index/ located? I can't seem to find it in the project directory, the only folders there are src, target and .gitignore
@AbdullahAshraf It's not in your project, it's in your home, like /home/user/.cargo/registry/index
@Boiethios Thanks for helping out. I forgot to mention but I'm on windows. Also, it worked after waiting for about 3-5 minutes. Since then, there was no wait.
80

It is important to ensure you have no other rls or cargo running. sudo pkill rls cargo is a good way to ensure they are not.

5 Comments

In my case it was just the cargo process that was still running. Killing that process fixed it for me.
For me, neither the most popular answer nor the accepted answer worked. But this worked.
This answer needs to be on the top
This saved me lots of hours, the other answers not worked for me but this.
The same issue also got my Cargo.toml metadata file locked when I run the second cargo process it was just stuck. After I found another cargo process never responded and terminated I just sent signal to killed it, problem solved without deleting any lock file or the entire folder at .cargo :).
43

Removing rm $CARGO_HOME/.package-cache worked for me.

I accidentally hit ctrl+z instead of ctrl+c while executing cargo run and the next execution of cargo run showed me Blocking waiting for file lock on the registry index. I removed the said file and then it worked again.

Edit:
If you accidentally hit ctrl+z like me, you can unsuspend the cargo run process by running fg instead of deleting the package cache file. ctrl+z actually sends a SIGTSTP signal to the process and that process will be suspended until you tell it to continue. See this answer for more info.

3 Comments

I have closed my IDE while compiling. This solution was fixed my issue.
Yup, I had ^Z inside Neovim and it must have been in the middle of some cargo check (or similar) pass when I did so.
This worked in windows for me.
34

I am using this command in macOS Monterey 12.4:

rm -rf ~/.cargo/.package-cache 

then rerun the build command, works.

3 Comments

In my case, it's the correct solution.
This works for me too. I was on Mac 14.0
Thanks! Out of all the solutions, this one worked for me.
22

You usually get this error when you run the cargo build command twice at the same time. If you are using an IDE check if a plugin is running a cargo command in the background, this was the case for me with VS Code.

Comments

19

My issue was the IDE was running cargo and had locked the directory. Try closing your IDE

Comments

14

You can point your IDE to use a different path when building the code. This will prevent conflicts with locks in the future. Add the following compile flags to the IDE:

--target-dir target/rls/ 

In VSCode use the following setting:

"rust-analyzer.runnables.extraArgs": [ "--target-dir", "target/rls/" ] 

enter image description here

2 Comments

This doesn't help, because cargo still stores and reads the global package cache in the ~/.cargo directory, not in the current project's target directory.
worked for me on ubuntu 22 with tauri app
12

My VSCode intellisense was working on a build. Make sure your intellisense is not builing. It displays a little gear icon spinning on bottom. Happens mostly when you update Cargo.toml

Comments

7

I fixed this issue by running the following commands:

  1. Search for all rust related processes by $ ps aux | grep rls
  2. Stop all of them one by one with $ sudo kill -9 <PID>

3 Comments

This is what happened to me. The rustc process was not responding and locking the directory. None of the other answers worked and came here to add a reply explaining the same.
The PID changes before you get a chance to kill it
@LukeSchoen the PID isn't changing, the process is restarting or being respawned with a new PID. Try sudo pkill rls cargo which finds and kills all instances.
7

Windows: i opened the task manager and end the Cargos processes

enter image description here

Comments

6

Same issue in VScode : if you've installed RLS

  1. File | Preferences | Settings
  2. Search for "rls"
  3. In "rust" extension, uncheck "Start RLS automatically when opening a file or project"

Re-open your project, and it should be solved.

Comments

5

it's work for me on the linux (ubuntu) :

$ rm ~/.cargo/.package-cache 

Comments

5

I had a case where there was an update to my rust extension rust-analyzer in vscode that was causing it. I updated and reloaded the extension and then cargo build ran fine.

Comments

5

This helped to resolve the issue rm ~/.cargo/.package-cache

Blocking started after I added rand = "0.8.5" to my cargo.toml.

Comments

4

Before removing the Cargo registry index as suggested in the accepted answer, make sure no other process is currently compiling Parity or any other Rust package.

Comments

3

I tried to create a Polkadot Node by following the Readme instructions.

I was able to build it by running the following commands (copy/paste into Bash Terminal):

git clone https://github.com/paritytech/polkadot; cd polkadot; git checkout master; rustup update nightly; rustup target add wasm32-unknown-unknown --toolchain nightly; rustup update stable; rustup default stable; cargo install --git https://github.com/alexcrichton/wasm-gc --force; cargo install --git https://github.com/pepyakin/wasm-export-table.git --force; brew install openssl; brew upgrade openssl; rustc --version; cargo --version; ./build.sh; cargo build; cargo run -- --help; ./target/debug/polkadot --help; 

I then tried to run a Polkadot Node with the following commands (which are equivalent):

./target/debug/polkadot -- --chain=dev --validator --key Alice -d /tmp/alice; cargo run -- --chain=dev --validator --key Alice -d /tmp/alice; 

But instead it showed the following:

Blocking waiting for file lock on the git checkouts Blocking waiting for file lock on build directory 

I found it was caused by CLion (Jetbrains IDE).

I solved the problem by closing CLion. I used Visual Studio Code editor instead, which also allows for debugging Rust code with breakpoints

1 Comment

The short answer is: If you have a Jetbrains IDE open, try closing it. Happened to me on Linux + IDEA.
3

if you ever hit "Blocking waiting for file lock on package cache",

Run the command below and run cargo again. rm $CARGO_HOME/.package-cache

Comments

3

On macOS Sonoma 14.1.1, the way I fixed Blocking waiting for file lock on the registry index when I was trying to run cargo build was to open the Activity Monitor application:

  • Press CMD + Space, then type "Activity Monitor.app"
  • Click the CPU tab, and enter "cargo" in the search input field at the top right. enter image description here
  • Select all processes with "cargo" in the "Process Name" column
  • Click the (X) icon and choose "Force Quit" those processes
  • Wait for about a minute or so for those cargo processes to quit
  • Re-run your cargo build command without it hanging.

Note: I tried other solutions like quitting VSCode but that wasn't the cause in my situation.

Comments

2

Problem was another process using cargo. I could not find the process to kill so I restarted my local machine and it worked.

Comments

2

What worked for me

For me, I found that the issue was caused by configuring my target dir:

[build] target-dir = ".cargo/target" 

in my .cargo/config.

What didn't work

I ran cargo build --release -vv and saw a message that didn't appear without the -vv flag:

Blocking waiting for file lock on build directory 

I thought this a big clue so I tried stuff like disabling my file backups. I also tried all the answers on this page with no luck.

Comments

1

I think you should use cargo clean and re-run the cargo run command and wait for some time. This usually happens when you try to use a new module in your code by adding it into Cargo.toml file.

Comments

0

On the risk of coming late to the party, while cargo, rls or rust-analyzer are responsible for the lock to avoid data races. An underlying issue maybe the number of inotify filewatchers.

Usually they work fine by spawning a new watcher and wait their turn but if they run out of watchers space this can be a problem. Agreeing to all the above solutions but suggesting to check the number of max_user_watches

# view current settings cat /proc/sys/fs/inotify/max_user_watches # increasing it, /etc/sysctl.conf fs.inotify.max_user_watches=524288 # The new value can then be loaded in by running s $sudo sysctl -p. 

Comments

-2

the must fast way is to update your rustc compiler :

rustup update stable 

I was facing a such situation, but then I updated my rustc, the problem has been resolved.

1 Comment

My answer is very simple and clear, as I tried all the above answers and no one helped me to resolve exactly this issue, after a deep search on the internet, and asking ChatGPT/DeepSeek, I got this solution that resolved my issue, then I decided to share my experience with the others to help them, that's all

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.