fix a race in type registration

Summary:
Here's what's happening:
C++ only guarantees that static initialization is thread safe there: https://fburl.com/40wdmf1q
So TypeNameRegisterer<bool> can not be called concurrently with TypeNameRegisterer<bool> from another invocation

But there's no guarantees about different template specializations as
they declare separate variables. Thus TypeNameRegisterer<int> might
race with TypeNameRegisterer<bool>. And TypeNameRegisterer accesses
the global variable here: https://fburl.com/gv2mhi08

Thanks dzhulgakov for the investigation!

Reviewed By: Yangqing

Differential Revision: D5882913

fbshipit-source-id: 4db1080b11e6351ce8136373e2dfc52980642fbb
2 files changed
tree: d126528723caa3a7137331e5c3d4c424423bc320
  1. .travis/
  2. caffe/
  3. caffe2/
  4. cmake/
  5. conda/
  6. docker/
  7. docs/
  8. scripts/
  9. third_party/
  10. .Doxyfile
  11. .Doxyfile-c
  12. .Doxyfile-python
  13. .gitignore
  14. .gitmodules
  15. .travis.yml
  16. appveyor.yml
  17. CMakeLists.txt
  18. LICENSE
  19. Makefile
  20. PATENTS
  21. README.md
  22. release-notes.md
README.md

Caffe2

TravisCI Build Status Appveyor Build Status

Caffe2 is a lightweight, modular, and scalable deep learning framework. Building on the original Caffe, Caffe2 is designed with expression, speed, and modularity in mind.

News and Events

Caffe2 research award competition request for proposals

Questions and Feedback

Please use Github issues (https://github.com/caffe2/caffe2/issues) to ask questions, report bugs, and request new features.

Please participate in our survey (https://www.surveymonkey.com/r/caffe2). We will send you information about new releases and special developer events/webinars.

License and Citation

Caffe2 is released under the BSD 2-Clause license.

Further Resources on Caffe2.ai