Skip to content
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

Concurrent usage of cargo will generally result in badness #354

Closed
alexcrichton opened this issue Aug 9, 2014 · 19 comments · Fixed by #2486
Closed

Concurrent usage of cargo will generally result in badness #354

alexcrichton opened this issue Aug 9, 2014 · 19 comments · Fixed by #2486
Labels
C-bug Category: bug

Comments

@alexcrichton
Copy link
Member

Cargo does a number of unsynchronized and racy operations that lead to lots of badness if they happen concurrently. This includes, but is not limited to, management of target/, checkouts into ~/.cargo/git/, and anything having to do with concurrent compilations.

The only real reasonable solution I can think of to this is the same as the "big hammer" solution which is to just "add a lock to everything". Ideally we would separately lock ~/.cargo and the local directory, but they should both in general be locked when performing any action.

@wycats
Copy link
Contributor

wycats commented Aug 12, 2014

Rust, Y U NO flock implementation 😉

alexcrichton added a commit to alexcrichton/cargo that referenced this issue Aug 13, 2014
Using cargo concurrently on the same system often results in badness such as
corruption of the global git database, corruption of the local target directory,
corruption of output artifacts, etc. This is a pretty rare situation, but is
quite troubling to track down when it occurs.

To prevent this badness, cargo needs some method of synchronizing with other
cargo processes. This is often done with a file lock, but sadly file locks are
difficult to use correctly on linux and other flavors of unix [1].

Instead, another mechanism, an OS semaphore, is used. Semaphores provide the
exact functionality that is required here as there's no real need to lock a file
but rather just synchronize with another process. I wrote external bindings for
these semaphores [2] instead of bundling it directly in cargo itself.

Currently only windows, linux, and OSX are supported in ipc-rs, but adding new
platforms with System V compatibility is just a matter of looking up some
constants (nothing too too hard).

[1]: http://0pointer.de/blog/projects/locking.html
[2]: https://github.com/alexcrichton/ipc-rs

Closes rust-lang#354
@metajack
Copy link

Note that rustpkg had the same problem and so does pretty much every other build tool I've tested that keeps state around. Most people just punt on this it seems.

This really only causes problems when you are trying to usecargo inside of another build system which parallelizes things (like make -j).

@alexcrichton
Copy link
Member Author

Hm yes, after looking into semaphores and file locks, I'm tempted to punt on this for now until (and if) it becomes pressing again.

@metajack
Copy link

It occurs to me if you did want to go down this route that something like SQLite may have already solved the main issues, and you could just store state in that.

alexcrichton added a commit to alexcrichton/cargo that referenced this issue May 28, 2015
This commit adds support to allow specifying a custom output directory to Cargo.
First, the `build.target-dir` configuration key is checked, and failing that the
`CARGO_TARGET_DIR` environment variable is checked, and failing that the root
package's directory joined with the directory name "target" is used.

There are a few caveats to switching target directories, however:

* If the target directory is in the current source tree, and the folder name is
  not called "target", then Cargo may walk the output directory when determining
  whether a tree is fresh.
* If the target directory is not called "target", then Cargo may look inside it
  currently for `Cargo.toml` files to learn about local packages.
* Concurrent usage of Cargo will still result in badness (rust-lang#354), and this is now
  exascerbated because many Cargo projects can share the same output directory.
* The top-level crate is not cached for future compilations, so if a crate is
  built into directory `foo` and then that crate is later used as a dependency,
  it will be recompiled.

The naming limitations can be overcome in time, but for now it greatly
simplifies the crawling routines and shouldn't have much of a negative impact
other than some Cargo runtimes (which can in turn be negated by following the
"target" name convention).

Closes rust-lang#482
alexcrichton added a commit to alexcrichton/cargo that referenced this issue May 28, 2015
This commit adds support to allow specifying a custom output directory to Cargo.
First, the `build.target-dir` configuration key is checked, and failing that the
`CARGO_TARGET_DIR` environment variable is checked, and failing that the root
package's directory joined with the directory name "target" is used.

There are a few caveats to switching target directories, however:

* If the target directory is in the current source tree, and the folder name is
  not called "target", then Cargo may walk the output directory when determining
  whether a tree is fresh.
* If the target directory is not called "target", then Cargo may look inside it
  currently for `Cargo.toml` files to learn about local packages.
* Concurrent usage of Cargo will still result in badness (rust-lang#354), and this is now
  exascerbated because many Cargo projects can share the same output directory.
* The top-level crate is not cached for future compilations, so if a crate is
  built into directory `foo` and then that crate is later used as a dependency,
  it will be recompiled.

The naming limitations can be overcome in time, but for now it greatly
simplifies the crawling routines and shouldn't have much of a negative impact
other than some Cargo runtimes (which can in turn be negated by following the
"target" name convention).

Closes rust-lang#482
bors added a commit that referenced this issue Jun 4, 2015
This commit adds support to allow specifying a custom output directory to Cargo.
First, the `build.target-dir` configuration key is checked, and failing that the
`CARGO_TARGET_DIR` environment variable is checked, and failing that the root
package's directory joined with the directory name "target" is used.

There are a few caveats to switching target directories, however:

* If the target directory is in the current source tree, and the folder name is
  not called "target", then Cargo may walk the output directory when determining
  whether a tree is fresh.
* If the target directory is not called "target", then Cargo may look inside it
  currently for `Cargo.toml` files to learn about local packages.
* Concurrent usage of Cargo will still result in badness (#354), and this is now
  exascerbated because many Cargo projects can share the same output directory.
* The top-level crate is not cached for future compilations, so if a crate is
  built into directory `foo` and then that crate is later used as a dependency,
  it will be recompiled.

The naming limitations can be overcome in time, but for now it greatly
simplifies the crawling routines and shouldn't have much of a negative impact
other than some Cargo runtimes (which can in turn be negated by following the
"target" name convention).

Closes #482
@Byron
Copy link
Member

Byron commented Jun 22, 2015

Due to the high compile times, it's highly desirable to allow multi concurrent cargo operations - I have to do that to be able to compile google.rs in more reasonable times when deploying.

So far, I have encountered issues with concurrent operations when updating the registry and when trying to compile the same thing into the same target-dir, especially if the latter is overridden to point to a shared location.

It's my personal belief that cargo is important enough to at least learn to handle concurrent situations gracefully, and in my own workflow it would be great if cargo's could wait on a lock instead of just failing. The particular behaviour is something one would certainly want to keep configurable though.

I don't know what your take on it is, but would you be interested in a contribution which allows processes to file-lock locations to learn handling concurrent operation in a configurable fashion ?

@alexcrichton
Copy link
Member Author

I think I'd be fine with either strategy of waiting for a lock (but perhaps printing a message) or just failing if a lock couldn't be acquired. PRs are certainly welcome!

@Byron
Copy link
Member

Byron commented Jun 23, 2015

Great to hear. I have been looking into it just to figure out if there is a good way to wait on a lock. On Unix, this is no problem, and a library already exists (even though the GPL license seems incompatible with cargo). On Windows, LockFileEx could certainly do the same, but it might be difficult to support all the toolchains cargo/rust supports. Part of me thought it would be easiest if this function would just be put into std::sys for use on windows, to prevent me from having to deal with an elaborate build script.
LockFiles also want to be opened with O_EXCL, which is currently not supported by std::fs, even though it would be possible to provide that functionality on unix and windows.

It seems the fastest way to get going with this is to start out with a license-compatible lock-file crate that handles the details, and bring it into cargo for first trials. All required functionality would have to be provided through custom bindings to the respective libraries.

@alfiedotwtf
Copy link
Contributor

License updated to LGPL :)

@metajack
Copy link

It's unclear to me how invoking cargo in parallel helps you at all. Cargo already parallelizes its build with -j and hte default is $num_cores. What performance advantage are you looking to gain?

The original impetus for getting this filed was that invoking Cargo from parallel make can invoke multiple Cargos. This was just an artifact of how make works, not a way to speed up the build.

Are you using some top level build tool that is parallel and several cargo-built dependencies?

@Byron
Copy link
Member

Byron commented Jun 23, 2015

Yes, that is what I do. Details can be found here in the 'How to reproduce' section.

In short, I am building 78 programs which all have the same dependency chain. It takes 5m (debug) to 7m (release) to build. As some programs take an hour to build in release mode, I end up having 7 cores playing the idle game for that duration. It is truly in my interest to make this work better than it does now.

A good workaround in the past was to run make -k -j8 ... until it returns success, but with a common target-dir even that doesn't work anymore. I do understand that some sort of locking mechanism would be required to make it work, right now it just can't which is expected.

@colin-kiegel
Copy link

Another use case seems to be the atom editor with both 'linter-rust' (which runs cargo on file saves) and a 'build' plugin (which I like to set to save all modified files just before invoking cargo, too). This leads to random errors. It would be nice, if the cargo locking mechanism would 'wait' for a free lock (or at least could be set to wait with an additional flag). AtomLinter/linter-rust#15

@Byron Byron mentioned this issue Jul 1, 2015
13 tasks
@colin-kiegel
Copy link

I have written a tiny wrapper script for cargo on linux that waits for all previous processes to finish - to avoid the concurrency issues. :-)

This should do the job - until cargo implements its own locking-mechanism.

@Byron
Copy link
Member

Byron commented Jul 17, 2015

Awsome :) ! Considering I won't be able to work on the global lock implementation for a while, it's great to have alternatives ready for general use !

@droundy
Copy link

droundy commented Aug 28, 2015

I'll admit I don't know enough about cargo to know if this is feasible, but mightn't it be possible for cargo to run concurrently (with possible duplicated work) through careful attention to creating files in an idempotent manner? e.g. always create files with a temporary name followed by rename(2)? Then you would never have a partial file to worry about.

Of course, that only handles posix systems. Windows file system semantics are a hell you would still need to cope with, but one imagines that there may be ways to write sane software for windows.

@DemiMarie
Copy link

Windows can be made to use atomic renames, though you need to use Native API calls.

@teburd
Copy link

teburd commented Feb 1, 2016

I ran into this myself, mostly accidently, by running cargo build --release twice in the same directory at the same time, the error was pretty confusing

@DanielKeep
Copy link

I just ran smack into this while (finally!) writing integration tests for cargo-script. Unfortunately, there's no simple way to stop tests from running in parallel, at both the Cargo and runner levels without requiring fiddly environment reconfiguration. The only non-brittle solution I can see is to either not have tests, or implement global file-based locking... which is kinda what Cargo should be doing itself. :(

alexcrichton added a commit to alexcrichton/cargo that referenced this issue Mar 17, 2016
Cargo has historically had no protections against running it concurrently. This
is pretty unfortunate, however, as it essentially just means that you can only
run one instance of Cargo at a time **globally on a system**.

An "easy solution" to this would be the use of file locks, except they need to
be applied judiciously. It'd be a pretty bad experience to just lock the entire
system globally for Cargo (although it would work), but otherwise Cargo must be
principled how it accesses the filesystem to ensure that locks are properly
held. This commit intends to solve all of these problems.

A new utility module is added to cargo, `util::flock`, which contains two types:

* `FileLock` - a locked version of a `File`. This RAII guard will unlock the
  lock on `Drop` and I/O can be performed through this object. The actual
  underlying `Path` can be read from this object as well.
* `Filesystem` - an unlocked representation of a `Path`. There is no "safe"
  method to access the underlying path without locking a file on the filesystem
  first.

Built on the [fs2] library, these locks use the `flock` system call on Unix and
`LockFileEx` on Windows. Although file locking on Unix is [documented as not so
great][unix-bad], but largely only because of NFS, these are just advisory, and
there's no byte-range locking. These issues don't necessarily plague Cargo,
however, so we should try to leverage them. On both Windows and Unix the file
locks are released when the underlying OS handle is closed, which means that
if the process dies the locks are released.

Cargo has a number of global resources which it now needs to lock, and the
strategy is done in a fairly straightforward way:

* Each registry's index contains one lock (a dotfile in the index). Updating the
  index requires a read/write lock while reading the index requires a shared
  lock. This should allow each process to ensure a registry update happens while
  not blocking out others for an unnecessarily long time. Additionally any
  number of processes can read the index.
* When downloading crates, each downloaded crate is individually locked. A lock
  for the downloaded crate implies a lock on the output directory as well.
  Because downloaded crates are immutable, once the downloaded directory exists
  the lock is no longer needed as it won't be modified, so it can be released.
  This granularity of locking allows multiple Cargo instances to download
  dependencies in parallel.
* Git repositories have separate locks for the database and for the project
  checkout. The datbase and checkout are locked for read/write access when an
  update is performed, and the lock of the checkout is held for the entire
  lifetime of the git source. This is done to ensure that any other Cargo
  processes must wait while we use the git repository. Unfortunately there's
  just not that much parallelism here.
* Binaries managed by `cargo install` are locked by the local metadata file that
  Cargo manages. This is relatively straightforward.
* The actual artifact output directory is just globally locked for the entire
  build. It's hypothesized that running Cargo concurrently in *one directory* is
  less of a feature needed rather than running multiple instances of Cargo
  globally (for now at least). It would be possible to have finer grained
  locking here, but that can likely be deferred to a future PR.

So with all of this infrastructure in place, Cargo is now ready to grab some
locks and ensure that you can call it concurrently anywhere at any time and
everything always works out as one might expect.

One interesting question, however, is what does Cargo do on contention? On one
hand Cargo could immediately abort, but this would lead to a pretty poor UI as
any Cargo process on the system could kick out any other. Instead this PR takes
a more nuanced approach.

* First, all locks are attempted to be acquired (a "try lock"). If this
  succeeds, we're done.
* Next, Cargo prints a message to the console that it's going to block waiting
  for a lock. This is done because it's indeterminate how long Cargo will wait
  for the lock to become available, and most long-lasting operations in Cargo
  have a message printed for them.
* Finally, a blocking acquisition of the lock is issued and we wait for it to
  become available.

So all in all this should help Cargo fix any future concurrency bugs with file
locking in a principled fashion while also allowing concurrent Cargo processes
to proceed reasonably across the system.

[fs2]: https://github.com/danburkert/fs2-rs
[unix-bad]: http://0pointer.de/blog/projects/locking.html

Closes rust-lang#354
bors added a commit that referenced this issue Mar 17, 2016
Fix running Cargo concurrently

Cargo has historically had no protections against running it concurrently. This
is pretty unfortunate, however, as it essentially just means that you can only
run one instance of Cargo at a time **globally on a system**.

An "easy solution" to this would be the use of file locks, except they need to
be applied judiciously. It'd be a pretty bad experience to just lock the entire
system globally for Cargo (although it would work), but otherwise Cargo must be
principled how it accesses the filesystem to ensure that locks are properly
held. This commit intends to solve all of these problems.

A new utility module is added to cargo, `util::flock`, which contains two types:

* `FileLock` - a locked version of a `File`. This RAII guard will unlock the
  lock on `Drop` and I/O can be performed through this object. The actual
  underlying `Path` can be read from this object as well.
* `Filesystem` - an unlocked representation of a `Path`. There is no "safe"
  method to access the underlying path without locking a file on the filesystem
  first.

Built on the [fs2] library, these locks use the `flock` system call on Unix and
`LockFileEx` on Windows. Although file locking on Unix is [documented as not so
great][unix-bad], but largely only because of NFS, these are just advisory, and
there's no byte-range locking. These issues don't necessarily plague Cargo,
however, so we should try to leverage them. On both Windows and Unix the file
locks are released when the underlying OS handle is closed, which means that
if the process dies the locks are released.

Cargo has a number of global resources which it now needs to lock, and the
strategy is done in a fairly straightforward way:

* Each registry's index contains one lock (a dotfile in the index). Updating the
  index requires a read/write lock while reading the index requires a shared
  lock. This should allow each process to ensure a registry update happens while
  not blocking out others for an unnecessarily long time. Additionally any
  number of processes can read the index.
* When downloading crates, each downloaded crate is individually locked. A lock
  for the downloaded crate implies a lock on the output directory as well.
  Because downloaded crates are immutable, once the downloaded directory exists
  the lock is no longer needed as it won't be modified, so it can be released.
  This granularity of locking allows multiple Cargo instances to download
  dependencies in parallel.
* Git repositories have separate locks for the database and for the project
  checkout. The datbase and checkout are locked for read/write access when an
  update is performed, and the lock of the checkout is held for the entire
  lifetime of the git source. This is done to ensure that any other Cargo
  processes must wait while we use the git repository. Unfortunately there's
  just not that much parallelism here.
* Binaries managed by `cargo install` are locked by the local metadata file that
  Cargo manages. This is relatively straightforward.
* The actual artifact output directory is just globally locked for the entire
  build. It's hypothesized that running Cargo concurrently in *one directory* is
  less of a feature needed rather than running multiple instances of Cargo
  globally (for now at least). It would be possible to have finer grained
  locking here, but that can likely be deferred to a future PR.

So with all of this infrastructure in place, Cargo is now ready to grab some
locks and ensure that you can call it concurrently anywhere at any time and
everything always works out as one might expect.

One interesting question, however, is what does Cargo do on contention? On one
hand Cargo could immediately abort, but this would lead to a pretty poor UI as
any Cargo process on the system could kick out any other. Instead this PR takes
a more nuanced approach.

* First, all locks are attempted to be acquired (a "try lock"). If this
  succeeds, we're done.
* Next, Cargo prints a message to the console that it's going to block waiting
  for a lock. This is done because it's indeterminate how long Cargo will wait
  for the lock to become available, and most long-lasting operations in Cargo
  have a message printed for them.
* Finally, a blocking acquisition of the lock is issued and we wait for it to
  become available.

So all in all this should help Cargo fix any future concurrency bugs with file
locking in a principled fashion while also allowing concurrent Cargo processes
to proceed reasonably across the system.

[fs2]: https://github.com/danburkert/fs2-rs
[unix-bad]: http://0pointer.de/blog/projects/locking.html

Closes #354
@gluax
Copy link

gluax commented Nov 8, 2023

This seems to be still an issue on Windows(with stable MSVC at least).

I am running cargo run in one terminal instance(bug happens regardless of it being powershell/cmd). The cargo test results in a massive linker error.
Funnily enough, even if I do .\target\debug\fst.exe and then cargo test, it results in the same linker error.

Massive linker error for anyone interested:

``` error: linking with `link.exe` failed: exit code: 1104 | = note: "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.37.32822\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" "C:\\Users\\galu\\AppData\\Local\\Temp\\rustcAPSE4G\\symbols.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.10iww0923dj9tog0.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.114bdckgawviv0gn.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.11onf3pojrj2r4h.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.127fb0u60gzc49nc.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.12bwi8jfxor73xqg.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.143w88bck9ul8lph.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.14zvmo82dizc6c6s.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.15s1th140qaj89o.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.15sp88d1p7pntsue.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.15zxtqpmc2v5j092.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.17ryyk8glye6r1p4.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.19u6icr272q7hvq6.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1bljd5xjcm0eplpi.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1cetcqtkex8iqxux.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1d79jwq9abt1n5cj.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1do1gdx5q04xs8p7.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1dterskob7pakofz.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1eckqm7zk7heee9w.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1eexembpl99g1l5m.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1eqe0eaje1weebic.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1eu91w38m2iwkm6y.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1hcref6s1l4u6n3l.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1idqz8s4brgij0g6.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1j8okkr4jey7olar.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1k8f0gk6708jaqh0.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1kkplxkgfxb552p6.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1lc5ay1sfdt3s3li.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1m2as7k9y8muxmnx.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1nuoq4se05szl2qj.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1o9rjod5qxscm6mc.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1obikn8hi2kur5uv.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1ogj36uhcqz53v30.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1os81k01pr6l20l8.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1ozng2jp1w9j0zey.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1pbpals8bzxavlnh.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1q8oam9431idrsd0.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1qih8g27rcrglwwm.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1rop7tura7pq8nrl.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1rvlwl6gcpl5ybrb.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1sn038xjjcr23d7s.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1swyv916ubxwblgc.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1uzkh3whbk3wvuo5.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1uzs4l7xmnatw4ta.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1vn6orvvk2e19h16.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1wgu2x2hpsg2xdmu.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1xc13lsz1ofy0wwm.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1z59dnv4xfif3w2x.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1z6o2skyqlr29gt.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.1zcmhf0s5tnbdt4m.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.20c2nc19wbulu6ru.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.20sqixpxukh1dw8w.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.21ixn7f78xuu09kv.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.220rguo8zd16vnkd.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.226e8k987f9jzx8q.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.22qs427ed22o6k36.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.23epjsv8dgqnf6e9.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.23xugx99n5kx9ese.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.259eqs4v5zne0fds.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.25qp0zmrguehpy43.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.26wszz29fa65p4ws.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.26yrlhmrb39trdxr.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.26zmquha2hdxlusv.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2ab8q8rx0fo2ncdi.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2ajtkazks7jzlozr.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2ajzvrouy5xyrzxj.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2asf3lzzz65m2z0y.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2bm998tyl0np7w0u.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2bozcif75pkr0yr1.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2d0xlkv4trpu828v.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2giebjgvu2jnbbd6.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2hxb7rqu9v606brx.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2ibc7i7lae0dsgi6.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2j5n0eubu3zjxacw.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2j5vp191t00joqa8.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2kexzzooz7jp34aw.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2kfxdz7ayicex1b1.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2kooiwxwko8qnkok.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2o6m9w2j1a01x2rf.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2oi2hethbfqqr0ud.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2om2r9mwvx5ipkik.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2pwr1f4gehjns26f.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2q9f6pok0dg2jecz.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2qr2hy9u7keytmq4.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2s1mtuy2naw6f9ul.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2s4cwj9uwwbxeet3.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2s8okm079fxzey43.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2sbn9lspv8u0nkhj.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2t2pmg482rjyo9y9.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2t6al4g9s07ld2ka.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2tfvzz25l6rkndz2.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2uh8gy72flwahbqn.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2uxc6kc9gafk3f9i.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2vus1bsvhst1anh9.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2vwnyh2wykeubji.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2w30nugxf3pvfsas.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2wakkt7gsj9b1a8v.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2x9of39kbrtluxmo.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2xek4y3z4ew3wjhk.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2xvmemwri48oriu3.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2ygp8v2nlyrwf0bd.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.2zmoyfu2mufwss6u.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.30asnl8nzxu5g587.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.30rox2pcjaxsexdn.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3116htxzxsivwty4.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.31i4lu13fzjgvkoi.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.32178h1hba6vn27n.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3228yuq27a1tr0z9.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.32c6ute1k83ovc14.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.32mc8sk0bll86s66.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.34jh3c70m73rf3di.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3516tjzsueyfrq6j.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.35dp4735cx8riehq.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.35eyy70qxqf3u0vy.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.35qb4exhpih833da.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.36tbv6zf8qy41vv5.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.37n1up843y9bonwr.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.390ie738ztkjhdc6.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.394n447ttejxuft9.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.39nu2q58zmfvae8n.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3bapujvj8vf1htqs.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3c82gald41ljlftm.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3cgtu816tph4owm0.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3dl9wasjyp2lvdn7.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3eem1odovczaq5na.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3ftuvrm571v4j4y.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3g6i6wlsk9h3mfzd.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3gxx3y7me7gvx1xc.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3j9qdtddrwytuye6.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3jx95itz2beh1n1t.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3kvsmbug5qq1l4ew.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3lfk94ungl0g0xe0.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3mfw56jj5y12tp1y.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3mluncjnajm4o4s6.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3npcfpyn5j47y2cd.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3t27gx0x4vee2vtm.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3t4uzqt4hk0a7jxb.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3ufhvhphmtuofq5u.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3umxm3k9xtte9rzd.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3unqko9fre73g76n.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3utt2n4a6r6eotcc.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3uxft40vlzl5ebh3.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3v6m3bce8bpcnnq0.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3v7a93dao82xtbpr.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3v8ioy1gg5t7hs70.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3y36dpgcbwbngjur.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3y5xtwu89pklsi27.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.3zymh7zemo9s5ch8.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.40xd047t05prl529.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.41q1e9dlyqyegh7j.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.42n93eophumu8wdn.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.42s4y9hgkphg8lge.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.431s7kvn0zvpy7pz.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.452z18is6ss00zax.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.45i224ouwjbpeevf.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.45l1j7eu337t027d.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.462b76es4vqsp36u.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.477svi9rz3neb8re.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.49fww5pdfgyzokgt.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4asy0fwa2ud81y57.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4c8iwpg88y3v2n69.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4dn4sef2wnlah1dn.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4ds5cs3homep0m5a.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4e9v0stwq8d16a39.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4e9x1ncl0qjpgzyw.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4ebgxxa923yey8g1.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4evlr78cj8pf4o8t.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4gesgm84i8jddvyd.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4i8zlh73knnmh79y.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4ifu8oqkbxl52lf0.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4jx8qjz899ognhhi.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4k0ocy6dtvgvzn10.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4l8tg1csmd6uurcw.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4lbh0pahtzx5bz1f.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4nb1oo2pifjoaxwa.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4new1kk239ei0ljx.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4p0cy455pulwcewt.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4rraccziqg2zqond.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4s1blp555fb0i12b.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4s708r75zjdqrdi1.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4us2hhj1dm07vvk9.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4vqoyh2xf8z8ucym.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4wrlpr7c86k6b1mb.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4xj6j8r2ewdfi7j2.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4xwgnfhvmx8d48x8.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4zjd3gjscghjxhci.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5162g7je9aehhbig.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.51zdxz4ilu7goxf1.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.52j48g3u9pd883f0.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.52uil9ejgkyiru5k.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5417ef8c85t9oyf.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.54prc0nwxq66r34z.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.56rm0r5a10fthrhw.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.56yd4lma4gpzr5fc.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.57gmwmubn26q73g9.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.57jv0f1fjqeo6355.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.58d3pipmd92io2mb.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.59s3n2b22h7ujqne.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5ad49svb5wo40mzb.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5bc6wb2o9lrnv9ur.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5bt6lzrdixxlwex3.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5bxg0eqpdxlif56t.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5ciilkyjbpbiqgbm.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5dhan0is8metdmix.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5dlqdhr4daeb29bg.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5en014s31abf08au.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5errnxiwoagz6sl1.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5fegxbuvh6uin6zh.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5gcaxhfo24s9ve7v.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5iggsjfdf676rm0.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.5j7undsm4ajo42q.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.67m3i3er48lcjrm.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.6h56z9gptbopdhm.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.75jp7aq4jln3iwk.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.76l620ajcr1cgm6.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.7avb35isrscyao2.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.7s09yfzqvsr641h.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.7v0r63nhozlxv3d.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.805nh7u0di22f2u.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.9aqsm12nn4w64me.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.9hnrgmcxxep6724.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.9vkfmhdgkej2qzx.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.aalqj4a6ehu8qmf.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.c2w5fcfu97teg2i.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.c9ktmumqljgc11t.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.chno5gqaoniy6ty.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.ddmy2q94jda5d9g.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.ewosanysvip4ctg.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.gmghpgcj4bbs5aa.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.ijzp60e28igbj3b.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.jl7edi58kv8pwhp.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.jwfvocvvcn6q68m.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.jz0iglw97xm2icy.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.l53bmi4ge77posk.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.nnhgqbzpafzziw2.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.o8omv1eotein3op.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.oio0keqelxkp7df.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.p2gqqsr59h1hue5.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.q3h8zfkn7f6966l.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.qfbg9xp1pqkb9q5.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.r05ub1ebi9yidga.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.r5jpwah3ax3qr37.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.rkxs0t85tvxu26z.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.s9e87jd37qnctdb.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.sguodox1d0u146q.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.u0j8ufdizy9abwy.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.u4of11919amn2bt.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.vkw8qcr2eyv0fcp.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.vxkh0dqkaaa44y4.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.wi1fm8uw9x14u6a.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.wisf43dn7v63271.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.ydjnc027omj819v.rcgu.o" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.4pve5oh6pr1dea3e.rcgu.o" "/LIBPATH:C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps" "/LIBPATH:C:\\Users\\galu\\scoop\\persist\\rustup\\.cargo\\registry\\src\\index.crates.io-6f17d22bba15001f\\windows_x86_64_msvc-0.48.2\\lib" "/LIBPATH:C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libaxum-35ac33898af3d87d.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libmemchr-e7aea2fa15cb90be.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libpercent_encoding-ee305937f68cd7f9.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libmatchit-910947aaa714646f.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libbitflags-dd03df63ab3af0c7.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libserde-2e647280ae0ab4ee.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libhyper-875642f6676aa98e.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libwant-0be2345c03c20607.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libtry_lock-61b422e12f33a8b6.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libsocket2-b5b17e680bcfdbd1.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libwinapi-14529d62629a9878.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libhttparse-d9cf436917a43dad.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libh2-0663554d4eddeb1b.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libindexmap-510aa7b073e9a331.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libhashbrown-8110dd609f68b340.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libslab-b819d05476a3d975.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libtokio_util-b9ac323b572311f6.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libfutures_sink-90f20920e54d57ca.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libtracing-89fa694fb586a454.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libtracing_core-bf25df9667e72b8b.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libonce_cell-149d65cc551b495e.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libfutures_channel-e06bc576058579cc.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libhttpdate-f747e55dda61c390.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libsync_wrapper-a8265b8e09fd9fac.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libaxum_core-b0d55e64db847365.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libmime-64bdf90f51067f55.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libhttp_body-47f26274946434af.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libtower-7279d0cd754509b7.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libpin_project-09884400d6010f05.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libtower_layer-e8f64e9afbc30ad5.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libfutures_util-1b811b09a3a2c7d3.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libfutures_task-d6fcc7b074ff8914.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libpin_utils-2a8d477be5834f80.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libfutures_core-1a74c51c7dc95615.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libtower_service-24fa779054e203f2.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libtokio-574f0796ba43a64a.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libnum_cpus-e7eaa7e1de7f54bc.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libsocket2-ba7af30c293adca2.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libmio-71242b7cf588b7df.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libwindows_sys-444692091506d71a.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libpin_project_lite-ba4598f93cecad12.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libparking_lot-e5ded3b0eaf647a0.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libparking_lot_core-0f076e00b34b6714.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libwindows_targets-6616f18a4c162f0e.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libcfg_if-54ba3767ec7b107d.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libsmallvec-88f8067fbfda0ec6.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\liblock_api-5676389690e76472.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libscopeguard-7ddd7c28765ad6c5.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libhttp-ae366dc950d8a2b7.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libitoa-0b7ee1645c5b6739.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libbytes-105c7ca7a27154e2.rlib" "C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\libfnv-f13147bc191ae750.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-287abad1c0bdb9b8.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-070c3734740ed997.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle-66a2a6c345ea9966.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_detect-33c6cc56f7d1acea.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-f19d11c8f87bcdbf.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc-3928c78544f9c50c.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-8e773ac5f89895a1.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcfg_if-fe105a06c709339c.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-a43d961d9021468a.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-d495230ba17bce41.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core-608b311ffd8bf0dd.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-63e11cc35aa38f19.rlib" "C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-9dbc16e13c04d841.rlib" "advapi32.lib" "cfgmgr32.lib" "fwpuclnt.lib" "kernel32.lib" "ntdll.lib" "user32.lib" "ws2_32.lib" "ntdll.lib" "windows.0.48.0.lib" "windows.0.48.0.lib" "kernel32.lib" "advapi32.lib" "bcrypt.lib" "kernel32.lib" "ntdll.lib" "userenv.lib" "ws2_32.lib" "kernel32.lib" "ws2_32.lib" "kernel32.lib" "msvcrt.lib" "/NXCOMPAT" "/LIBPATH:C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "/OUT:C:\\Users\\galu\\Documents\\projects\\fst\\target\\debug\\deps\\fst.exe" "/OPT:REF,NOICF" "/DEBUG" "/NATVIS:C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\Users\\galu\\scoop\\persist\\rustup\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libstd.natvis" = note: LINK : fatal error LNK1104: cannot open file 'C:\Users\galu\Documents\projects\fst\target\debug\deps\fst.exe' ```

@weihanglo
Copy link
Member

@gluax, sorry to hear about that. Since this is an 7-year-old issue, would you mind opening a new issue with a minimal reproducer so people can take a look at it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: bug
Projects
None yet
Development

Successfully merging a pull request may close this issue.