The fix for this is already planned, as mentioned in #259, but I am documenting it here as an open issue for posterity.
Describe the bug
An integrand function of, say, an AreaIntegral, is not allowed to modify state (see #259). This results in a Segmentation Fault if run in multithreaded setting.
To Reproduce
Run the following code using morpho6 -w4
import constants
import meshtools
var mb = MeshBuilder()
mb.addvertex([0,0])
mb.addvertex([1,0])
mb.addvertex([0,1])
mb.addface([0,1,2])
var m = mb.build()
var f = Field(m, fn (x,y) Matrix([x,2*y]))
var r
fn integrand(x, n) {
var g = grad(n)
r = []
for (u in g) r.append(u.clone())
return 0
}
var total = AreaIntegral(integrand, f).total(m)
print r[0]
Note that r is defined in the global scope and being modified inside the integrand.
Expected behavior
Some clear error pointing out that the variable r cannot be modified inside the integrand.
Currently, this generates a segmentation fault.
The fix for this is already planned, as mentioned in #259, but I am documenting it here as an open issue for posterity.
Describe the bug
An integrand function of, say, an AreaIntegral, is not allowed to modify state (see #259). This results in a Segmentation Fault if run in multithreaded setting.
To Reproduce
Run the following code using
morpho6 -w4Note that
ris defined in the global scope and being modified inside the integrand.Expected behavior
Some clear error pointing out that the variable
rcannot be modified inside the integrand.Currently, this generates a segmentation fault.