message: Destroying aliased block vectors to avoid issues with dangling references in memory manager.
diff: @@ -97,6 +97,11 @@ void BlockOperator::Mult (const Vector & x, Vector & y) const
  {
  yblock.GetBlock(iRow).SyncAliasMemory(y);
  }
  +
  + // Remark: Temporary fix to eliminate issue of dangling aliases
  + // when the base vectors are deleted
  + for (int i=0; i < xblock.NumBlocks(); ++i) { xblock.GetBlock(i).Destroy(); }
  + for (int i=0; i < yblock.NumBlocks(); ++i) { yblock.GetBlock(i).Destroy(); }
  }
  // Action of the transpose operator
  @@ -128,6 +133,11 @@ void BlockOperator::MultTranspose (const Vector & x, Vector & y) const
  {
  yblock.GetBlock(iRow).SyncAliasMemory(y);
  }
  +
  + // Remark: Temporary fix to eliminate issue of dangling aliases
  + // when the base vectors are deleted
  + for (int i=0; i < xblock.NumBlocks(); ++i) { xblock.GetBlock(i).Destroy(); }
  + for (int i=0; i < yblock.NumBlocks(); ++i) { yblock.GetBlock(i).Destroy(); }
  }
  BlockOperator::~BlockOperator()
  @@ -198,6 +208,11 @@ void BlockDiagonalPreconditioner::Mult (const Vector & x, Vector & y) const
  {
  yblock.GetBlock(i).SyncAliasMemory(y);
  }
  +
  + // Remark: Temporary fix to eliminate issue of dangling aliases
  + // when the base vectors are deleted
  + for (int i=0; i < xblock.NumBlocks(); ++i) { xblock.GetBlock(i).Destroy(); }
  + for (int i=0; i < yblock.NumBlocks(); ++i) { yblock.GetBlock(i).Destroy(); }
  }
  // Action of the transpose operator
  @@ -229,6 +244,11 @@ void BlockDiagonalPreconditioner::MultTranspose (const Vector & x,
  {
  yblock.GetBlock(i).SyncAliasMemory(y);
  }
  +
  + // Remark: Temporary fix to eliminate issue of dangling aliases
  + // when the base vectors are deleted
  + for (int i=0; i < xblock.NumBlocks(); ++i) { xblock.GetBlock(i).Destroy(); }
  + for (int i=0; i < yblock.NumBlocks(); ++i) { yblock.GetBlock(i).Destroy(); }
  }
  BlockDiagonalPreconditioner::~BlockDiagonalPreconditioner()
  