On Tue, 10 Mar 2009, Roy Stogner wrote:

> if I can't find the bug right away.

Found it.  In UnstructuredMesh::contract() we loop over elements in no
particular order and delete the subactive ones, but in devel or debug
mode we test elem->level() to make sure it's not 0.  elem->level() on
a non-level-0 element accesses elem->parent()->dim()... but if the
subactive element we're currently deleting is the child of one we've
already deleted, that segfaults.

It's fixed now - instead of asserting that elem->level() is non-zero
we just assuage my paranoia by making sure elem->parent() is non-NULL.

None of my apps do two coarsenings in a row without a contract() in
between, so I would never have caught this on my own.  Thanks!
---
Roy

------------------------------------------------------------------------------
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to