[ET Trac] [Einstein Toolkit] #499: Prolongation fails with vectorisation enabled

Einstein Toolkit trac-noreply at einsteintoolkit.org
Tue Aug 23 19:10:24 CDT 2011


#499: Prolongation fails with vectorisation enabled
---------------------+------------------------------------------------------
  Reporter:  hinder  |       Owner:  eschnett
      Type:  defect  |      Status:  new     
  Priority:  major   |   Milestone:          
 Component:  Carpet  |     Version:          
Resolution:          |    Keywords:          
---------------------+------------------------------------------------------

Comment (by barry.wardell):

 Replying to [comment:4 eschnett]:
 > According to the backtrace above, the actual error occurs while resizing
 a std::vector, probably while allocating communication buffers. It could
 be the system runs out of memory, or there is internal memory corruption.

 I don't think it is a case of running out of memory, but it seems likely
 that it could be memory corruption. Upon closer inspection, it looks like
 the segfault is happening in recompose:

 {{{
 Backtrace from rank 16 pid 4306:
 1. /lib64/libc.so.6(gsignal+0x35) [0x2b51371a1265]
 2. /lib64/libc.so.6(abort+0x110) [0x2b51371a2d10]
 3. /lib64/libc.so.6 [0x2b51371db84b]
 4. /lib64/libc.so.6 [0x2b51371e330f]
 5. /lib64/libc.so.6(cfree+0x4b) [0x2b51371e376b]
 6. mem<double>::~mem()(.../cactus_Datura-carpet-hg-test)
 7. data<double>::~data()(.../cactus_Datura-carpet-hg-test)
 8. ggf::recompose_free_old(int)(.../cactus_Datura-carpet-hg-test)
 9. dh::recompose(int, bool)(.../cactus_Datura-carpet-hg-test)
 a. gh::recompose(int, bool)(.../cactus_Datura-carpet-hg-test)
 b. Carpet::Recompose(_cGH const*, int, bool)(.../cactus_Datura-carpet-hg-
 test)
 c. .../cactus_Datura-carpet-hg-test [0x13adabc]
 d. Carpet::Evolve(tFleshConfig*)(.../cactus_Datura-carpet-hg-test)
 e. .../cactus_Datura-carpet-hg-test(main+0xa5) [0x4de135]
 f. /lib64/libc.so.6(__libc_start_main+0xf4) [0x2b513718e994]
 10. .../cactus_Datura-carpet-hg-test [0x4dde49]
 }}}

 > Since progress on this problem has stalled, I suggest to disable
 vectorisation in Carpet's prolongation operator. There is a statement "#if
 0" in line 226; changing this to "#if 1" should enable the scalar code and
 thus circumvent the vectorised code.

 I have disabled vectorisation in this section of the code and still get a
 segfault, so I guess the problem must be elsewhere (LoopControl?). It
 certainly has to be somewhere in Carpet as replacing the mercurial version
 with the git version my simulation runs without any problems.

 I also tried debugging with gdb, but unfortunately once I had disabled
 optimisation the crash no longer happens!

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/499#comment:5>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list