Is the copy-on-write behavior of QVector threadsafe?

In particular, if I pass a copy-constructed QVector to a thread, the COW behavior indicates the data itself won't actually be copied until somebody does a write operation on one of instances. In a multi-threaded application is this transparent or does it require extra synchronization?

For example (representative only):

Qt Code:
  1. class Example : public QThread {
  2. public:
  3. Example (QVector<int> data) : data_(data) {
  4. }
  5. public void run () {
  6. while (true)
  7. doReadOnlyThingsWith(data_);
  8. }
  9. private:
  10. QVector<int> data_;
  11. }
  12.  
  13. void elsewhere () {
  14. QVector<int> data = ...;
  15. new Example(data)->start();
  16. new Example(data)->start();
  17. new Example(data)->start();
  18. new Example(data)->start();
  19. writeThingsToDataThatShouldntBeSeenByThreads(data);
  20. }
To copy to clipboard, switch view to plain text mode 

In the above example, multiple threads are using the data (read-only) while the main thread may go on to modify it, but the goal is that the modifications have no effect on the threads (that's why I passed it by value in the first place). Intuitively this should work, but is that really OK? Is the underlying copy-on-write threadsafe?

The reason I ask is I'm trying to track down an infrequent seg fault and the debugger is not yielding helpful information. The only thing I noticed is that some of the threads are in QVector::realloc() when the program crashes, so I'm focusing on my usage of QVector.

Thanks,
J