|
From: Federico G. A. <fed...@gm...> - 2010-01-13 09:44:42
|
Hi everyone ! I tryed to run a parallel program under Valgrind with the command: and using the option --track-origins=yes * * * LD_PRELOAD=$prefix/lib/valgrind/libmpiwrap-<platform>.so \ mpirun [mpirun-args] \ $prefix/bin/valgrind [valgrind-args] \ [application] [app-args]* and using the option --track-origins=yes and it gives me this error: *Memcheck: mc_machine.c:673 (get_otrack_shadow_offset_wrk): the 'impossible' happened. ==28919== at 0x3802782D: report_and_quit (m_libcassert.c:145) ==28919== by 0x38027AF1: vgPlain_assert_fail (m_libcassert.c:217) ==28919== by 0x38020AC9: vgMemCheck_get_otrack_shadow_offset (mc_machine.c:673) ==28919== by 0x38019416: schemeE (mc_translate.c:4718) ==28919== by 0x38019A07: schemeS (mc_translate.c:4969) ==28919== by 0x380201F4: vgMemCheck_instrument (mc_translate.c:4152) ==28919== by 0x380BB88B: LibVEX_Translate (main_main.c:490) ==28919== by 0x3803FAD5: vgPlain_translate (m_translate.c:1517) ==28919== by 0x38064F38: vgPlain_scheduler (scheduler.c:844) ==28919== by 0x3808E298: run_a_thread_NORETURN (syswrap-linux.c:91) sched status: running_tid=1* If I debug the program not in parallel but with the track-origins option set it runs. What I've to do? Thanks, Federico |
|
From: Julian S. <js...@ac...> - 2010-01-13 10:22:21
|
> *Memcheck: mc_machine.c:673 (get_otrack_shadow_offset_wrk): the > 'impossible' happened. It's a bug in memcheck. Should be easy to fix. What version of valgrind is this, exactly? And what architecture are you running on? J |
|
From: Federico G. A. <fed...@gm...> - 2010-01-13 10:37:33
|
I'm using valgrind-3.5.0, which is the current release, I believe. I have a linux machine with CentOS-5. Thanks Federico Il giorno 13 gennaio 2010 11.37, Julian Seward <js...@ac...> ha scritto: > > > *Memcheck: mc_machine.c:673 (get_otrack_shadow_offset_wrk): the > > 'impossible' happened. > > It's a bug in memcheck. Should be easy to fix. What version of > valgrind is this, exactly? And what architecture are you running on? > > J > > |
|
From: Julian S. <js...@ac...> - 2010-01-13 11:11:38
|
> *Memcheck: mc_machine.c:673 (get_otrack_shadow_offset_wrk): the
> 'impossible' happened.
What was the line immediately before this one? Specifically, I want
to see the result from this printf
VG_(printf)("MC_(get_otrack_shadow_offset)(x86)(off=%d,sz=%d)\n",
offset,szB);
J
|
|
From: Federico G. A. <fed...@gm...> - 2010-01-13 11:51:40
|
==30704== Memcheck, a memory error detector ==30704== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al. ==30704== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info ==30704== Command: XXX ==30704== --30704-- Valgrind options: --30704-- --leak-check=full --30704-- -v --30704-- --track-origins=yes --30704-- Contents of /proc/version: --30704-- Linux version 2.6.18-164.9.1.el5 (moc...@bu...) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46)) #1 SMP Tue Dec 15 21:04:57 EST 2009 --30704-- Arch and hwcaps: X86, x86-sse1-sse2 --30704-- Page sizes: currently 4096, max supported 4096 --30704-- Valgrind library directory: /usr/local/valgrind-3.5.0/lib/valgrind --30704-- Reading syms from /lib/ld-2.5.so (0xd9f000) --30704-- Reading syms from XXX (0x8048000) --30704-- Reading syms from /usr/local/valgrind-3.5.0/lib/valgrind/memcheck-x86-linux (0x38000000) --30704-- object doesn't have a dynamic symbol table --30704-- Reading suppressions file: /usr/local/valgrind-3.5.0/lib/valgrind/default.supp --30704-- REDIR: 0xdb4790 (index) redirected to 0x3803e4a3 (vgPlain_x86_linux_REDIR_FOR_index) --30704-- Reading syms from /usr/local/valgrind-3.5.0/lib/valgrind/vgpreload_core-x86-linux.so (0x4001000) --30704-- Reading syms from /usr/local/valgrind-3.5.0/lib/valgrind/vgpreload_memcheck-x86-linux.so (0x4003000) ==30704== WARNING: new redirection conflicts with existing -- ignoring it --30704-- new: 0x00db4790 (index ) R-> 0x04006640 index --30704-- REDIR: 0xdb4930 (strlen) redirected to 0x4006820 (strlen) --30704-- Reading syms from /usr/local/valgrind-3.5.0/lib/valgrind/libmpiwrap-x86-linux.so (0x400a000) --30704-- Reading syms from /usr/lib/libstdc++.so.6.0.8 (0x5a86000) --30704-- object doesn't have a symbol table --30704-- Reading syms from /usr/lib/liblapack.so.3.0.3 (0x404b000) --30704-- object doesn't have a symbol table --30704-- Reading syms from /usr/lib/libblas.so.3.0.3 (0x44df000) --30704-- object doesn't have a symbol table --30704-- Reading syms from /usr/lib/libX11.so.6.2.0 (0x278000) --30704-- object doesn't have a symbol table --30704-- Reading syms from /lib/librt-2.5.so (0x5982000) --30704-- Reading syms from /usr/local/openmpi/lib/libmpi_f77.so.0.0.0 (0x4532000) --30704-- Reading syms from /usr/local/openmpi/lib/libmpi_cxx.so.0.0.0 (0x455d000) --30704-- Reading syms from /usr/local/openmpi/lib/libmpi.so.0.0.1 (0x4577000) --30704-- Reading syms from /usr/local/openmpi/lib/libopen-rte.so.0.0.0 (0x4688000) --30704-- Reading syms from /usr/local/openmpi/lib/libopen-pal.so.0.0.0 (0x46f8000) --30704-- Reading syms from /lib/libdl-2.5.so (0xde6000) --30704-- Reading syms from /lib/libnsl-2.5.so (0x523000) --30704-- Reading syms from /lib/libutil-2.5.so (0xd1e000) --30704-- Reading syms from /lib/libm-2.5.so (0xdbd000) --30704-- Reading syms from /lib/libgcc_s-4.1.2-20080825.so.1 (0x5a49000) --30704-- object doesn't have a symbol table --30704-- Reading syms from /lib/libpthread-2.5.so (0x249000) --30704-- Reading syms from /lib/libc-2.5.so (0x101000) --30704-- Reading syms from /usr/lib/libgfortran.so.1.0.0 (0x477b000) --30704-- object doesn't have a symbol table --30704-- Reading syms from /usr/lib/libXau.so.6.0.0 (0xdf4000) --30704-- object doesn't have a symbol table --30704-- Reading syms from /usr/lib/libXdmcp.so.6.0.0 (0xdec000) --30704-- object doesn't have a symbol table --30704-- REDIR: 0x1722d0 (memset) redirected to 0x4006b80 (memset) --30704-- REDIR: 0x1727c0 (memcpy) redirected to 0x4007a70 (memcpy) --30704-- REDIR: 0x171430 (rindex) redirected to 0x4006550 (rindex) --30704-- REDIR: 0x171090 (strlen) redirected to 0x4006800 (strlen) --30704-- REDIR: 0x16cd20 (malloc) redirected to 0x400587e (malloc) --30704-- REDIR: 0x16c9e0 (calloc) redirected to 0x4004b8e (calloc) --30704-- REDIR: 0x45fb8d0 (PMPI_Initialized) redirected to 0x401ec25 (PMPI_Initialized) MC_(get_otrack_shadow_offset)(x86)(off=312,sz=4) Memcheck: mc_machine.c:673 (get_otrack_shadow_offset_wrk): the 'impossible' happened. ==30704== at 0x3802782D: report_and_quit (m_libcassert.c:145) ==30704== by 0x38027AF1: vgPlain_assert_fail (m_libcassert.c:217) ==30704== by 0x38020AC9: vgMemCheck_get_otrack_shadow_offset (mc_machine.c:673) ==30704== by 0x38019416: schemeE (mc_translate.c:4718) ==30704== by 0x38019A07: schemeS (mc_translate.c:4969) ==30704== by 0x380201F4: vgMemCheck_instrument (mc_translate.c:4152) ==30704== by 0x380BB88B: LibVEX_Translate (main_main.c:490) ==30704== by 0x3803FAD5: vgPlain_translate (m_translate.c:1517) ==30704== by 0x38064F38: vgPlain_scheduler (scheduler.c:844) ==30704== by 0x3808E298: run_a_thread_NORETURN (syswrap-linux.c:91) sched status: running_tid=1 Thread 1: status = VgTs_Runnable ==30704== at 0x401EC33: PMPI_Initialized (libmpiwrap.c:2132) ==30704== by 0x813636E: MPI::Is_initialized() (functions_inln.h:119) ==30704== by 0x81363A3: MPI::Intracomm::Intracomm(ompi_communicator_t*) (intracomm_inln.h:25) ==30704== by 0x4569058: __static_initialization_and_destruction_0(int, int) (mpicxx.cc:113) ==30704== by 0x4569630: global constructors keyed to _ZN3MPI26ompi_libcxx_version_stringE (mpicxx.cc:158) ==30704== by 0x45707E5: ??? (in /usr/local/openmpi/lib/libmpi_cxx.so.0.0.0) ==30704== by 0x4566BC4: ??? (in /usr/local/openmpi/lib/libmpi_cxx.so.0.0.0) ==30704== by 0xDAD1E2: call_init (in /lib/ld-2.5.so) ==30704== by 0xDAD2F2: _dl_init (in /lib/ld-2.5.so) ==30704== by 0xD9F84E: ??? (in /lib/ld-2.5.so) Note: see also the FAQ in the source distribution. It contains workarounds to several common problems. In particular, if Valgrind aborted or crashed after identifying problems in your program, there's a good chance that fixing those problems will prevent Valgrind aborting or crashing, especially if it happened in m_mallocfree.c. If that doesn't help, please report this bug to: www.valgrind.org In the bug report, send all the above text, the valgrind version, and what OS and version you are using. Thanks. |
|
From: Federico G. A. <fed...@gm...> - 2010-01-13 12:03:18
|
It happens also when using the tool Ptrcheck.
Does it support parallel debugging?
thank you very much,
Federico
Il giorno 13 gennaio 2010 12.51, Federico Golfrè Andreasi <
fed...@gm...> ha scritto:
> Julian,
> I attached you all the log file.
>
> Thanks,
> Federico
>
>
> Il giorno 13 gennaio 2010 12.26, Julian Seward <js...@ac...> ha
> scritto:
>
>
>> > *Memcheck: mc_machine.c:673 (get_otrack_shadow_offset_wrk): the
>> > 'impossible' happened.
>>
>> What was the line immediately before this one? Specifically, I want
>> to see the result from this printf
>>
>> VG_(printf)("MC_(get_otrack_shadow_offset)(x86)(off=%d,sz=%d)\n",
>> offset,szB);
>>
>> J
>>
>
>
|
|
From: Ashley P. <as...@pi...> - 2010-01-17 16:50:50
|
On 13 Jan 2010, at 12:03, Federico Golfrè Andreasi wrote:
> It happens also when using the tool Ptrcheck.
> Does it support parallel debugging?
The fact that you are running it in parallel has no bearing on the behaviour of Valgrind, each valgrind process neither knows nor cares that any other valgrind processes exist. This is true regardless of the tool you use.
The only bearing running in parallel has is in how you see the output, you might want to use option --log-file=app.loq.%q{OMPI_RANK} to send the output from each process into a distinct log file.
Ashley,
|
|
From: Julian S. <js...@ac...> - 2010-01-13 12:45:47
|
In memcheck/mc_machine.c, find the x86 section, which starts with a comment like this /* --------------------- x86 --------------------- */ About half way down you see this /* Treat %AH, %BH, %CH, %DH as independent registers. To do this Just before this comment, add these lines if (o == GOF(NRADDR) && sz == 4) return -1; if (o == GOF(SC_CLASS) && sz == 4) return -1; make ; make install and try again. Does that help? J |
|
From: Federico G. A. <fed...@gm...> - 2010-01-13 14:50:45
|
Thank you Julian, that fixed the problem with memcheck ! can I do the same also for the PointerCheck tool ot this doesn't support the parallel debugging ? Federico Il giorno 13 gennaio 2010 14.00, Julian Seward <js...@ac...> ha scritto: > > In memcheck/mc_machine.c, find the x86 section, which starts with > a comment like this > > /* --------------------- x86 --------------------- */ > > About half way down you see this > > /* Treat %AH, %BH, %CH, %DH as independent registers. To do this > > Just before this comment, add these lines > > if (o == GOF(NRADDR) && sz == 4) return -1; > if (o == GOF(SC_CLASS) && sz == 4) return -1; > > make ; make install and try again. Does that help? > > J > |