Hi,
I wonder ... if thread 3 was doing the following:
const QString &atrribute_value = Utility::URLDecodePath( XtoQ( attribute.getValue() ) );
at the same time that thread 4 was doing
attribute.setValue( QtoX( Utility::URLEncodePath( new_path ) ) );
and the attribute itself was the same and if setValue released/freed memory to rpelace it with a new piece at the same time that the first thread was trying to read it, you might end up with a segfault.
Again, this is all a big guess on my part. Only Valloric will know for sure if this guess is all wet or not.
If I knew where the attribute.setValue and getValue routines were in the source code and if there was a lock involved at that point (grab a lock before reading the value to prevent another thread from changing it underneath you), I would know more.
|