View Single Post
Old 10-29-2010, 12:41 PM   #16
KevinH
Sigil Developer
KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.KevinH ought to be getting tired of karma fortunes by now.
 
Posts: 8,883
Karma: 6120478
Join Date: Nov 2009
Device: many
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.
KevinH is offline   Reply With Quote