Any implications on the speed of iteration? -- Anders
--- Begin Message ---** Changed in: dolfin Status: New => Fix Committed-- You received this bug notification because you are a member of DOLFIN Core Team, which is subscribed to DOLFIN. https://bugs.launchpad.net/bugs/996357 Title: Abuse of static_cast in VertexIterator Status in DOLFIN: Fix Committed Bug description: I've installed fenics 1.0.0 using dorsal 1.0.0. Now consider the simple program ================================================== #include <dolfin.h> int main() { dolfin::UnitSquare coarse(1,1); for( dolfin::VertexIterator v(coarse); !v.end(); ++v) assert(v->x(1) == v->x(1)); return 0; } ================================================== The assert fails if it is compiled and executed with cmake -D CMAKE_BUILD_TYPE=RelWithDebInfo . && make clean && make && ./main (flags: -O2 -g). With cmake -D CMAKE_BUILD_TYPE=Debug . && make clean && make && ./main (flags: -g, without optimization) everything runs fine. In a larger project, this bug occurs also with "CMAKE_BUILD_TYPE=Debug", but I cannot reproduce it in this example. Due to this bug mesh refinement or snapping the boundary of a mesh results in strange, unfeasible meshes. I guessed that this is related to access to uninitialized/unallocated memory, but valgrind finds only some "errors" deep inside MPI: ================================================== $ valgrind --undef-value-errors=yes --track-origins=yes ./main ==5272== Memcheck, a memory error detector ==5272== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==5272== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info ==5272== Command: ./main ==5272== ==5272== Syscall param sched_setaffinity(mask) points to unaddressable byte(s) ==5272== at 0xE301279: syscall (in /lib64/libc-2.11.3.so) ==5272== by 0x102AA568: opal_paffinity_linux_plpa_api_probe_init (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_paffinity_linux.so) ==5272== by 0x102AAC1C: opal_paffinity_linux_plpa_init (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_paffinity_linux.so) ==5272== by 0x102AB789: opal_paffinity_linux_plpa_have_topology_information (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_paffinity_linux.so) ==5272== by 0x102AA3FF: linux_module_init (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_paffinity_linux.so) ==5272== by 0xCE5741E: opal_paffinity_base_select (in /usr/local/FEniCS/1.0.0/lib/libopen-pal.so.0.0.0) ==5272== by 0xCE2A6D6: opal_init (in /usr/local/FEniCS/1.0.0/lib/libopen-pal.so.0.0.0) ==5272== by 0xCBD697C: orte_init (in /usr/local/FEniCS/1.0.0/lib/libopen-rte.so.0.0.0) ==5272== by 0xC952C26: ompi_mpi_init (in /usr/local/FEniCS/1.0.0/lib/libmpi.so.0.0.3) ==5272== by 0xC9724D3: MPI_Init (in /usr/local/FEniCS/1.0.0/lib/libmpi.so.0.0.3) ==5272== by 0x5023D10: dolfin::SubSystemsManager::init_mpi() (functions_inln.h:105) ==5272== by 0x5024248: dolfin::MPI::num_processes() (MPI.cpp:59) ==5272== Address 0x0 is not stack'd, malloc'd or (recently) free'd ==5272== ==5272== Syscall param writev(vector[...]) points to uninitialised byte(s) ==5272== at 0xE2FD231: writev (in /lib64/libc-2.11.3.so) ==5272== by 0x114C6C02: mca_oob_tcp_msg_send_handler (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_oob_tcp.so) ==5272== by 0x114C782C: mca_oob_tcp_peer_send (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_oob_tcp.so) ==5272== by 0x114CAD8C: mca_oob_tcp_send_nb (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_oob_tcp.so) ==5272== by 0x10EB7C12: orte_rml_oob_send_buffer (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_rml_oob.so) ==5272== by 0x118D5E63: allgather (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_grpcomm_bad.so) ==5272== by 0x118D5489: modex (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_grpcomm_bad.so) ==5272== by 0xC953416: ompi_mpi_init (in /usr/local/FEniCS/1.0.0/lib/libmpi.so.0.0.3) ==5272== by 0xC9724D3: MPI_Init (in /usr/local/FEniCS/1.0.0/lib/libmpi.so.0.0.3) ==5272== by 0x5023D10: dolfin::SubSystemsManager::init_mpi() (functions_inln.h:105) ==5272== by 0x5024248: dolfin::MPI::num_processes() (MPI.cpp:59) ==5272== by 0x50242A8: dolfin::MPI::is_receiver() (MPI.cpp:72) ==5272== Address 0x12059db7 is 87 bytes inside a block of size 256 alloc'd ==5272== at 0x4C26922: realloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==5272== by 0xCE2B8C2: opal_dss_buffer_extend (in /usr/local/FEniCS/1.0.0/lib/libopen-pal.so.0.0.0) ==5272== by 0xCE2C3BD: opal_dss_copy_payload (in /usr/local/FEniCS/1.0.0/lib/libopen-pal.so.0.0.0) ==5272== by 0x118D5E38: allgather (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_grpcomm_bad.so) ==5272== by 0x118D5489: modex (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_grpcomm_bad.so) ==5272== by 0xC953416: ompi_mpi_init (in /usr/local/FEniCS/1.0.0/lib/libmpi.so.0.0.3) ==5272== by 0xC9724D3: MPI_Init (in /usr/local/FEniCS/1.0.0/lib/libmpi.so.0.0.3) ==5272== by 0x5023D10: dolfin::SubSystemsManager::init_mpi() (functions_inln.h:105) ==5272== by 0x5024248: dolfin::MPI::num_processes() (MPI.cpp:59) ==5272== by 0x50242A8: dolfin::MPI::is_receiver() (MPI.cpp:72) ==5272== by 0x527CC8F: dolfin::UnitSquare::UnitSquare(unsigned int, unsigned int, std::string) (UnitSquare.cpp:35) ==5272== by 0x40B2EF: main (main.cpp:4) ==5272== Uninitialised value was created by a heap allocation ==5272== at 0x4C2683D: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==5272== by 0xCE43FBB: opal_ifinit (in /usr/local/FEniCS/1.0.0/lib/libopen-pal.so.0.0.0) ==5272== by 0xCE449E8: opal_ifcount (in /usr/local/FEniCS/1.0.0/lib/libopen-pal.so.0.0.0) ==5272== by 0x114C5ABE: mca_oob_tcp_component_init (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_oob_tcp.so) ==5272== by 0xCBFC2BD: mca_oob_base_init (in /usr/local/FEniCS/1.0.0/lib/libopen-rte.so.0.0.0) ==5272== by 0x10EB58CA: rml_oob_init (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_rml_oob.so) ==5272== by 0xCC02904: orte_rml_base_select (in /usr/local/FEniCS/1.0.0/lib/libopen-rte.so.0.0.0) ==5272== by 0xCBF0254: orte_ess_base_app_setup (in /usr/local/FEniCS/1.0.0/lib/libopen-rte.so.0.0.0) ==5272== by 0x112BDFE0: rte_init (in /usr/local/FEniCS/1.0.0/lib/openmpi/mca_ess_singleton.so) ==5272== by 0xCBD6AE2: orte_init (in /usr/local/FEniCS/1.0.0/lib/libopen-rte.so.0.0.0) ==5272== by 0xC952C26: ompi_mpi_init (in /usr/local/FEniCS/1.0.0/lib/libmpi.so.0.0.3) ==5272== by 0xC9724D3: MPI_Init (in /usr/local/FEniCS/1.0.0/lib/libmpi.so.0.0.3) ==5272== main: /HOME1/users/personal/gerw/spielwiese/MeshRefinement/main.cpp:7: int main(): Assertion `v->x(1) == v->x(1)' failed. [romulus:05272] *** Process received signal *** [romulus:05272] Signal: Aborted (6) [romulus:05272] Signal code: (-6) [romulus:05272] [ 0] /lib64/libpthread.so.0(+0xf2d0) [0xe0232d0] [romulus:05272] [ 1] /lib64/libc.so.6(gsignal+0x35) [0xe263ab5] [romulus:05272] [ 2] /lib64/libc.so.6(abort+0x186) [0xe264fb6] [romulus:05272] [ 3] /lib64/libc.so.6(__assert_fail+0xf5) [0xe25c385] [romulus:05272] [ 4] ./main(main+0x236) [0x40b4e6] [romulus:05272] [ 5] /lib64/libc.so.6(__libc_start_main+0xfd) [0xe24fbfd] [romulus:05272] [ 6] ./main() [0x40b1e9] [romulus:05272] *** End of error message *** ==5272== Invalid free() / delete / delete[] ==5272== at 0x4C2599C: free (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so) ==5272== by 0xE34794A: free_mem (in /lib64/libc-2.11.3.so) ==5272== by 0xE3474F1: __libc_freeres (in /lib64/libc-2.11.3.so) ==5272== by 0x4A205EC: _vgnU_freeres (in /usr/lib64/valgrind/vgpreload_core-amd64-linux.so) ==5272== by 0xE264F46: abort (in /lib64/libc-2.11.3.so) ==5272== by 0xE25C384: __assert_fail (in /lib64/libc-2.11.3.so) ==5272== by 0x40B4E5: main (main.cpp:7) ==5272== Address 0x405fb48 is not stack'd, malloc'd or (recently) free'd ==5272== ==5272== ==5272== HEAP SUMMARY: ==5272== in use at exit: 2,182,678 bytes in 3,463 blocks ==5272== total heap usage: 12,322 allocs, 8,861 frees, 15,730,246 bytes allocated ==5272== ==5272== LEAK SUMMARY: ==5272== definitely lost: 1,228 bytes in 16 blocks ==5272== indirectly lost: 2,637 bytes in 9 blocks ==5272== possibly lost: 15,884 bytes in 316 blocks ==5272== still reachable: 2,162,929 bytes in 3,122 blocks ==5272== suppressed: 0 bytes in 0 blocks ==5272== Rerun with --leak-check=full to see details of leaked memory ==5272== ==5272== For counts of detected and suppressed errors, rerun with: -v ==5272== ERROR SUMMARY: 4 errors from 3 contexts (suppressed: 4 from 4) ================================================== If it matters: $ gcc --version gcc (SUSE Linux) 4.5.1 20101208 [gcc-4_5-branch revision 167585] To manage notifications about this bug go to: https://bugs.launchpad.net/dolfin/+bug/996357/+subscriptions
--- End Message ---
_______________________________________________ Mailing list: https://launchpad.net/~dolfin Post to : [email protected] Unsubscribe : https://launchpad.net/~dolfin More help : https://help.launchpad.net/ListHelp

