Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplex: out of bounds vector access in DoFAccessor::distribute_dofs() #15439

Closed
tamiko opened this issue Jun 22, 2023 · 3 comments · Fixed by #15451
Closed

Simplex: out of bounds vector access in DoFAccessor::distribute_dofs() #15439

tamiko opened this issue Jun 22, 2023 · 3 comments · Fixed by #15451

Comments

@tamiko
Copy link
Member

tamiko commented Jun 22, 2023

In reference to #15426:

#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007fffb9eafd63 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2  0x00007fffb9e60f26 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007fffb9e4a87c in __GI_abort () at abort.c:79
#4  0x00007fffaed0f78f in std::__glibcxx_assert_fail(char const*, int, char const*, char const*)
    (file=<optimized out>, line=<optimized out>, function=<optimized out>, condition=<optimized out>)
    at /var/tmp/portage/sys-devel/gcc-13.1.1_p20230527/work/gcc-13-20230527/libstdc++-v3/src/c++11/debug.cc:61
#5  0x000055555575c0eb in std::vector<unsigned int, std::allocator<unsigned int> >::operator[](unsigned long) (this=0x555555ba4410, __n=1664)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/stl_vector.h:1125
#6  0x00007ffff259b871 in dealii::internal::DoFAccessorImplementation::Implementation::process_object<3, 3, 2, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}, dealii::internal::DoFAccessorImplementation::Implementation::process_dof_indices<3, 3, false, 3, std::tuple<>, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFAccessor<3, 3, 3, false> const&, std::tuple<> const&, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3> const&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&, bool)::{lambda(auto:1)#3}>(dealii::DoFHandler<3, 3> const&, unsigned int, unsigned int, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::process_dof_indices<3, 3, false, 3, std::tuple<>, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFAccessor<3, 3, 3, false> const&, std::tuple<> const&, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3> const&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&, bool)::{lambda(auto:1)#3} const&, std::integral_constant<int, 2> const&, unsigned int*&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&)
    (process=..., dof_indices_ptr=@0x7fffffffbda0: 0x3c, dd=<optimized out>, mapping=..., fe_index=0, obj_index=2688, obj_level=0, dof_handler=...)
    at /home/tamiko/workspace/dealii/include/deal.II/dofs/dof_accessor.templates.h:521
#7  dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>::process_dofs<2, dealii::internal::DoFAccessorImplementation::Implementation::process_dof_indices<3, 3, false, 3, std::tuple<>, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFAccessor<3, 3, 3, false> const&, std::tuple<> const&, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3> const&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&, bool)::{lambda(auto:1)#3}, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFHandler<3, 3> const&, unsigned int, unsigned int, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::process_dof_indices<3, 3, false, 3, std::tuple<>, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFAccessor<3, 3, 3, false> const&, std::tuple<> const&, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3> const&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&, bool)::{lambda(auto:1)#3} const&, std::integral_constant<int, 2>, unsigned int*&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&) const
    (dof_processor=..., dof_indices_ptr=<optimized out>, mapping=<optimized out>, fe_index=0, obj_index=2688, obj_level=<optimized out>, dof_handler=..., this=0x7fffffffc193)
    at /home/tamiko/workspace/dealii/include/deal.II/dofs/dof_accessor.templates.h:1200
#8  dealii::internal::DoFAccessorImplementation::Implementation::process_dof_indices<3, 3, false, 3, std::tuple<>, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFAccessor<3, 3, 3, false> const&, std::tuple<> const&, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3> const&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&, bool)
    (accessor=..., const_dof_indices=empty std::tuple, fe_index_=0, dof_operation=..., dof_processor=..., count_level_dofs=false)
    at /home/tamiko/workspace/dealii/include/deal.II/dofs/dof_accessor.templates.h:1093
#9  0x00007ffff2578da5 in dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)
    (subdomain_id=4294967295, dof_handler=...) at /home/tamiko/workspace/dealii/source/dofs/dof_handler_policy.cc:1666
#10 0x00007ffff255f2a7 in dealii::internal::DoFHandlerImplementation::Policy::Sequential<3, 3>::distribute_dofs() const (this=0x555555b75860)
    at /home/tamiko/workspace/dealii/source/dofs/dof_handler_policy.cc:2656
#11 0x00007ffff1f6d9f7 in dealii::DoFHandler<3, 3>::distribute_dofs(dealii::hp::FECollection<3, 3> const&) (this=0x7fffffffcf80, ff=...)
    at /home/tamiko/workspace/dealii/source/dofs/dof_handler.cc:2266
#12 0x00007ffff1f6cf13 in dealii::DoFHandler<3, 3>::distribute_dofs(dealii::FiniteElement<3, 3> const&) (this=0x7fffffffcf80, fe=...)
    at /home/tamiko/workspace/dealii/source/dofs/dof_handler.cc:2147
#13 0x0000555555763af1 in test<3>(unsigned int, unsigned int, bool) (v=1, degree=2, do_helmholtz=false) at /home/tamiko/workspace/dealii/tests/simplex/matrix_free_01.cc:168
#14 0x000055555574fd99 in main(int, char**) (argc=1, argv=0x7fffffffd7d8) at /home/tamiko/workspace/dealii/tests/simplex/matrix_free_01.cc:343

when running simplex/matrix_free_01.

In reference to #15383.

@tamiko
Copy link
Member Author

tamiko commented Jun 22, 2023

@peterrum @kronbichler ping

@tamiko
Copy link
Member Author

tamiko commented Jun 22, 2023

Related stacktrace from simplex/matrix_free_face_integral_01:

#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
#1  0x00007fffb9eafd63 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at pthread_kill.c:78
#2  0x00007fffb9e60f26 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007fffb9e4a87c in __GI_abort () at abort.c:79
#4  0x00007fffaed0f78f in std::__glibcxx_assert_fail(char const*, int, char const*, char const*)
    (file=<optimized out>, line=<optimized out>, function=<optimized out>, condition=<optimized out>)
    at /var/tmp/portage/sys-devel/gcc-13.1.1_p20230527/work/gcc-13-20230527/libstdc++-v3/src/c++11/debug.cc:61
#5  0x00005555556b1429 in std::vector<unsigned int, std::allocator<unsigned int> >::operator[](unsigned long) (this=0x555555c1a8d0, __n=1664)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/stl_vector.h:1125
#6  0x00007ffff259b871 in dealii::internal::DoFAccessorImplementation::Implementation::process_object<3, 3, 2, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}, dealii::internal::DoFAccessorImplementation::Implementation::process_dof_indices<3, 3, false, 3, std::tuple<>, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFAccessor<3, 3, 3, false> const&, std::tuple<> const&, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3> const&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&, bool)::{lambda(auto:1)#3}>(dealii::DoFHandler<3, 3> const&, unsigned int, unsigned int, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::process_dof_indices<3, 3, false, 3, std::tuple<>, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFAccessor<3, 3, 3, false> const&, std::tuple<> const&, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3> const&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&, bool)::{lambda(auto:1)#3} const&, std::integral_constant<int, 2> const&, unsigned int*&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&)
    (process=..., dof_indices_ptr=@0x7fffffffa8e0: 0x3c, dd=<optimized out>, mapping=..., fe_index=0, obj_index=2688, obj_level=0, dof_handler=...)
    at /home/tamiko/workspace/dealii/include/deal.II/dofs/dof_accessor.templates.h:521
#7  dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>::process_dofs<2, dealii::internal::DoFAccessorImplementation::Implementation::process_dof_indices<3, 3, false, 3, std::tuple<>, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFAccessor<3, 3, 3, false> const&, std::tuple<> const&, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3> const&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&, bool)::{lambda(auto:1)#3}, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFHandler<3, 3> const&, unsigned int, unsigned int, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::process_dof_indices<3, 3, false, 3, std::tuple<>, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFAccessor<3, 3, 3, false> const&, std::tuple<> const&, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3> const&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&, bool)::{lambda(auto:1)#3} const&, std::integral_constant<int, 2>, unsigned int*&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&) const
    (dof_processor=..., dof_indices_ptr=<optimized out>, mapping=<optimized out>, fe_index=0, obj_index=2688, obj_level=<optimized out>, dof_handler=..., this=0x7fffffffacd3)
    at /home/tamiko/workspace/dealii/include/deal.II/dofs/dof_accessor.templates.h:1200
#8  dealii::internal::DoFAccessorImplementation::Implementation::process_dof_indices<3, 3, false, 3, std::tuple<>, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3>, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1}>(dealii::DoFAccessor<3, 3, 3, false> const&, std::tuple<> const&, unsigned short, dealii::internal::DoFAccessorImplementation::Implementation::DoFIndexProcessor<3, 3> const&, dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)::{lambda(auto:1&, auto:2)#1} const&, bool)
    (accessor=..., const_dof_indices=empty std::tuple, fe_index_=0, dof_operation=..., dof_processor=..., count_level_dofs=false)
    at /home/tamiko/workspace/dealii/include/deal.II/dofs/dof_accessor.templates.h:1093
#9  0x00007ffff2578da5 in dealii::internal::DoFHandlerImplementation::Policy::Implementation::distribute_dofs<3, 3>(unsigned int, dealii::DoFHandler<3, 3>&)
    (subdomain_id=4294967295, dof_handler=...) at /home/tamiko/workspace/dealii/source/dofs/dof_handler_policy.cc:1666
#10 0x00007ffff255f2a7 in dealii::internal::DoFHandlerImplementation::Policy::Sequential<3, 3>::distribute_dofs() const (this=0x555555a8e920)
    at /home/tamiko/workspace/dealii/source/dofs/dof_handler_policy.cc:2656
#11 0x00007ffff1f6d9f7 in dealii::DoFHandler<3, 3>::distribute_dofs(dealii::hp::FECollection<3, 3> const&) (this=0x7fffffffc2f0, ff=...)
    at /home/tamiko/workspace/dealii/source/dofs/dof_handler.cc:2266
#12 0x00007ffff1f6cf13 in dealii::DoFHandler<3, 3>::distribute_dofs(dealii::FiniteElement<3, 3> const&) (this=0x7fffffffc2f0, fe=...)
    at /home/tamiko/workspace/dealii/source/dofs/dof_handler.cc:2147
#13 0x00005555556b8219 in test<3>(unsigned int, unsigned int) (v=1, degree=2) at /home/tamiko/workspace/dealii/tests/simplex/matrix_free_face_integral_01.cc:102
#14 0x00005555556a4fa0 in main(int, char**) (argc=1, argv=0x7fffffffd768) at /home/tamiko/workspace/dealii/tests/simplex/matrix_free_face_integral_01.cc:234

@kronbichler
Copy link
Member

I'll take a look.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants