Skip to content

#737 Wrong results in concurrent access to reference elements

Metadata

Property Value
Reported by Martin Weiser (weiser@zib.de)
Reported at Feb 12, 2010 09:24
Type Bug Report
Version Git (pre2.4) [autotools]
Operating System Unspecified / All
Last edited by Oliver Sander (oliver.sander@tu-dresden.de)
Last edited at Mar 28, 2010 11:42
Closed by Oliver Sander (oliver.sander@tu-dresden.de)
Closed at Mar 28, 2010 11:42
Closed in version Unknown
Resolution Fixed
Comment Removed the 'static' qualifier on the trunk in revision 6546.

Description

The mapping of subentity-coordinates to reference-coordinates in ReferenceElement<ctype,dim>::global() uses a static FieldMatrix (in mapGlobal(), referenceelements.hh:34).

In multithreaded applications, this leads to wrong results due to concurrent access to the same matrix, which is shared by all threads due to being static.

I propose to remove the static qualifier.

The impact on performance should be negligible because the construction of a FieldMatrix on the stack is fast. The only issue might be that the constructor initializes the matrix elements to zero. Using a static matrix saves this initialization. However, a good optimizer should detect the double write and remove the initialization.