[ET Trac] [Einstein Toolkit] #971: global-early, loop-local routines in PostRegrid cause access to elements outside of a vector capacity
Einstein Toolkit
trac-noreply at einsteintoolkit.org
Wed Jul 4 00:42:38 CDT 2012
#971: global-early, loop-local routines in PostRegrid cause access to elements
outside of a vector capacity
--------------------+-------------------------------------------------------
Reporter: rhaas | Owner: eschnett
Type: defect | Status: new
Priority: major | Milestone:
Component: Carpet | Version:
Keywords: |
--------------------+-------------------------------------------------------
This happens whenever a refinement level is created during evolution (but
not during the intial regrid which by default is in meta mode). The
attached parameter file demonstrates the problem by forcing the initial
regrid to happen in level mode.
The actual error obtained (using a debug executable) is:
{{{
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Rank 0 with PID 23084 received signal6
Writing backtrace to ./backtrace.0.txt
Aborted
}}}
which can be traced back to
{{{
(gdb) bt
#0 0x00007ffff3476475 in *__GI_raise (sig=<optimized out>) at
../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x00007ffff34796f0 in *__GI_abort () at abort.c:92
#2 0x00007ffff3c5468d in __gnu_cxx::__verbose_terminate_handler() () from
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007ffff3c52796 in ?? () from /usr/lib/x86_64-linux-
gnu/libstdc++.so.6
#4 0x00007ffff3c527c3 in std::terminate() () from /usr/lib/x86_64-linux-
gnu/libstdc++.so.6
#5 0x00007ffff3c529ee in __cxa_throw () from /usr/lib/x86_64-linux-
gnu/libstdc++.so.6
#6 0x00007ffff3ca466d in std::__throw_out_of_range(char const*) () from
/usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7 0x00000000010856b7 in std::vector<std::vector<gdata*,
std::allocator<gdata*> >, std::allocator<std::vector<gdata*,
std::allocator<gdata*> > > >::_M_range_check (this=0xbba8850, __n=0) at
/usr/include/c++/4.7/bits/stl_vector.h:774
#8 0x00000000052405b7 in std::vector<std::vector<gdata*,
std::allocator<gdata*> >, std::allocator<std::vector<gdata*,
std::allocator<gdata*> > > >::at (this=0xbba8850, __n=0) at
/usr/include/c++/4.7/bits/stl_vector.h:792
#9 0x000000000524050b in ggf::data_pointer (this=0xb735ad0, tl=0, rl=2,
lc=0, ml=0) at
/mnt/data/rhaas/postdoc/gr/Zelmani/arrangements/Carpet/CarpetLib/src/ggf.hh:214
#10 0x0000000005257432 in Carpet::enter_local_mode (cctkGH=0xb68bae0, c=0,
lc=0, grouptype=402) at
/mnt/data/rhaas/postdoc/gr/Zelmani/arrangements/Carpet/Carpet/src/modes.cc:654
#11 0x0000000005258be1 in Carpet::local_component_iterator::step
(this=0x7fffffffc580) at
/mnt/data/rhaas/postdoc/gr/Zelmani/arrangements/Carpet/Carpet/src/modes.cc:1030
#12 0x0000000005258aa4 in
Carpet::local_component_iterator::local_component_iterator
(this=0x7fffffffc580, cctkGH_=0xb68bae0, grouptype_=402) at
/mnt/data/rhaas/postdoc/gr/Zelmani/arrangements/Carpet/Carpet/src/modes.cc:1006
#13 0x0000000005261f28 in Carpet::CallFunction (function=0x4b42007,
attribute=0xb682af8, data=0xb68bae0) at
/mnt/data/rhaas/postdoc/gr/Zelmani/arrangements/Carpet/Carpet/src/CallFunction.cc:187
#14 0x00000000006f9cfc in CCTKi_ScheduleCallFunction (function=0x4b42007,
attribute=0xb682ae0, data=0x7fffffffcc50) at
/mnt/data/rhaas/postdoc/gr/Zelmani/src/main/ScheduleInterface.c:3027
#15 0x00000000006fdaf7 in ScheduleTraverseFunction (function=0x4b42007,
attributes=0xb682ae0, n_whiles=0, whiles=0x0, n_ifs=0, ifs=0x0,
item_entry=0x6f9548 <CCTKi_ScheduleCallEntry>, item_exit=0x6f9772
<CCTKi_ScheduleCallExit>, while_check=0x6f9981 <CCTKi_ScheduleCallWhile>,
if_check=0x6f9a14 <CCTKi_ScheduleCallIf>,
function_process=0x6f9aa3 <CCTKi_ScheduleCallFunction>,
data=0x7fffffffcc50) at
/mnt/data/rhaas/postdoc/gr/Zelmani/src/schedule/ScheduleTraverse.c:584
#16 0x00000000006fd782 in ScheduleTraverseGroup
(schedule_groups=0xb66e280, group=0xb682280, attributes=0xb681df0,
n_whiles=0, whiles=0x0, n_ifs=0, ifs=0x0, item_entry=0x6f9548
<CCTKi_ScheduleCallEntry>, item_exit=0x6f9772 <CCTKi_ScheduleCallExit>,
while_check=0x6f9981 <CCTKi_ScheduleCallWhile>,
if_check=0x6f9a14 <CCTKi_ScheduleCallIf>, function_process=0x6f9aa3
<CCTKi_ScheduleCallFunction>, data=0x7fffffffcc50) at
/mnt/data/rhaas/postdoc/gr/Zelmani/src/schedule/ScheduleTraverse.c:368
#17 0x00000000006fd92e in ScheduleTraverseGroup
(schedule_groups=0xb66e280, group=0xb677520, attributes=0x0, n_whiles=0,
whiles=0x0, n_ifs=0, ifs=0x0, item_entry=0x6f9548
<CCTKi_ScheduleCallEntry>, item_exit=0x6f9772 <CCTKi_ScheduleCallExit>,
while_check=0x6f9981 <CCTKi_ScheduleCallWhile>,
if_check=0x6f9a14 <CCTKi_ScheduleCallIf>, function_process=0x6f9aa3
<CCTKi_ScheduleCallFunction>, data=0x7fffffffcc50) at
/mnt/data/rhaas/postdoc/gr/Zelmani/src/schedule/ScheduleTraverse.c:384
#18 0x00000000006fd4b1 in CCTKi_DoScheduleTraverse (group_name=0x75d82be
"CCTK_POSTREGRIDINITIAL", item_entry=0x6f9548 <CCTKi_ScheduleCallEntry>,
item_exit=0x6f9772 <CCTKi_ScheduleCallExit>, while_check=0x6f9981
<CCTKi_ScheduleCallWhile>, if_check=0x6f9a14 <CCTKi_ScheduleCallIf>,
function_process=0x6f9aa3 <CCTKi_ScheduleCallFunction>,
data=0x7fffffffcc50) at
/mnt/data/rhaas/postdoc/gr/Zelmani/src/schedule/ScheduleTraverse.c:158
#19 0x00000000006f7f26 in ScheduleTraverse (where=0x75d82be
"CCTK_POSTREGRIDINITIAL", GH=0xb68bae0, CallFunction=0x5260878
<Carpet::CallFunction(void*, cFunctionData*, void*)>) at
/mnt/data/rhaas/postdoc/gr/Zelmani/src/main/ScheduleInterface.c:1360
#20 0x00000000006f6d78 in CCTK_ScheduleTraverse (where=0x75d82be
"CCTK_POSTREGRIDINITIAL", GH=0xb68bae0, CallFunction=0x5260878
<Carpet::CallFunction(void*, cFunctionData*, void*)>) at
/mnt/data/rhaas/postdoc/gr/Zelmani/src/main/ScheduleInterface.c:891
#21 0x00000000051f9def in Carpet::ScheduleTraverse (where=0x75d8233
"CallRegridInitialLevel", name=0x75d82be "CCTK_POSTREGRIDINITIAL",
cctkGH=0xb68bae0) at
/mnt/data/rhaas/postdoc/gr/Zelmani/arrangements/Carpet/Carpet/src/Initialise.cc:1360
#22 0x00000000051f86d5 in Carpet::CallRegridInitialLevel
(cctkGH=0xb68bae0) at
/mnt/data/rhaas/postdoc/gr/Zelmani/arrangements/Carpet/Carpet/src/Initialise.cc:1168
#23 0x00000000051f54c7 in Carpet::CallInitial (cctkGH=0xb68bae0) at
/mnt/data/rhaas/postdoc/gr/Zelmani/arrangements/Carpet/Carpet/src/Initialise.cc:452
#24 0x00000000051f3365 in Carpet::Initialise (fc=0x7fffffffd710) at
/mnt/data/rhaas/postdoc/gr/Zelmani/arrangements/Carpet/Carpet/src/Initialise.cc:124
#25 0x00000000006f18f3 in main (argc=2, argv=0x7fffffffd818) at
/mnt/data/rhaas/postdoc/gr/Zelmani/src/main/flesh.cc:80
}}}
The reason this happens seems to be that the data structures in dh are
only valid once Recompose ran on this level (I think). Since global-early
,loop-local routines run before this happens, they see inconsistent data
structures and trigger the out-of-bounds error in enter-level-mode. This
is a recently triggerable issue, since before 55759e108807 Carpet would
not call global-early routines in PostRegrid and the first such routine is
HydroBase_InitExcisionMask which was recently made global-early, loop-
local.
Reverting these changes does not seem like a good option for the reasons
outlined in #958.
--
Ticket URL: <https://trac.einsteintoolkit.org/ticket/971>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit
More information about the Trac
mailing list