The following code triggers an Access violation - code c0000005 on my computer (Windows 10).
#include <torch/script.h>
#include <torch/torch.h>
#include <thread>
#include <vector>

// custom file-path management code
#include "tools/cpp/runfiles/runfiles.h"
#include "util/runfiles.h"

using bazel::tools::cpp::runfiles::Runfiles;
void main(int argc, char** argv) {
  // custom file-path management code
  std::unique_ptr<Runfiles> runfiles = MakeRunfiles(argv[0]);
  const std::string net_location =
      runfiles->Rlocation("plasty/nets/segnet_backbone.pt");

  std::vector<std::thread> threads;
  for (int i = 0; i < 10; ++i) {
    threads.emplace_back([&]() {
      try {
        torch::jit::script::Module m = torch::jit::load(net_location);
      } catch (const c10::Error& e) {
        std::cout << "error loading the net from location " << net_location
                  << "\n"
                  << e.what();
      }
    });
  }

  for (auto& thread : threads) {
    thread.join();
  }
}


The call stack shows it happening somewhere in caffe2::Workspace::bookkeeper

Capture.PNG747×357 7.44 KB

Is the jit::load function non-threadsafe or did I do something wrong?