[Interest] ASSERT: "isDetached()" with multithreaded QVectors

Thiago Macieira thiago.macieira at intel.com
Fri Apr 27 00:56:02 CEST 2018


On Thursday, 26 April 2018 14:09:27 PDT James Ross-Smith wrote:
> From an initial discussion on the Qt forum, it would appear that mutliple
> threads are trying to modify a QVector at the same time, with one thread
> trying to modify a QVector which is already detached. Is that a correct
> interpretation?

Treat a QVector and QString like you would treat an int: only one thread can 
write to it at a time, though multiple threads can read from it at the same 
time (provided none are writing).

If you have multiple threads writing, add a mutex or a QReadWriteLock around 
it.

> Is there a way for me to determine which QVector or line of code is causing
> the assertion?

Sure, the core dump you got when this crash happened points to one of the 
faulty threads. That thread is writing to the vector.

The problem is finding out the other thread.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center






More information about the Interest mailing list