|
From: <erg...@pc...> - 2005-03-23 17:56:20
|
I've attached some valgrind output below. This is a slave process of a PVM based application. The slave itself is also multithreaded with pthread, if that matters. It seems to me that the errors below are errors in the PVM library, and not my program. Is that correct? For example - main2.cc:40 is the call to pvm_mytid(). This function doesn't take any arguments, it's the first call of the program - hard to see how I've screwed it up!? Similarly for the call to pvm_initsend() at pvm_func.cc:61 - it takes a single integer argument, which in this case is a global const. What's odd is that pvm_initsend() is called ALOT with the same argument, yet this is the only place it shows up with an error?? Thanks for any help Eric ==1738== Memcheck, a memory error detector for x86-linux. ==1738== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward et al. ==1738== Using valgrind-2.2.0, a program supervision framework for x86-linux. ==1738== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward et al. ==1738== ==1738== My PID = 1738, parent PID = 1736. Prog and args are: ==1738== /home/erg25994/CSieve_PVM/sieve_pvm ==1738== For more details, rerun with: -v ==1738== ==1738== Syscall param write(buf) contains uninitialised or unaddressable byte(s) ==1738== at 0x1BB6F108: write (in /lib/i686/libc.so.6) ==1738== by 0x80A6AB0: mxfer (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A7330: mroute (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A744B: msendrecv (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A7CB7: pvmbeatask (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x8097222: pvm_mytid (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x804B9A0: main (main2.cc:40) ==1738== Address 0x1BC2AD54 is 44 bytes inside a block of size 4096 alloc'd ==1738== at 0x1B906E20: malloc (vg_replace_malloc.c:131) ==1738== by 0x80A922D: da_new (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A4903: fr_new (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A1A45: pmsg_extend (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A1D3F: enc_xdr_init (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x809DAA3: pvm_setsbuf (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A7C07: pvmbeatask (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x8097222: pvm_mytid (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x804B9A0: main (main2.cc:40) ==1738== ==1738== Syscall param write(buf) contains uninitialised or unaddressable byte(s) ==1738== at 0x1BB6F108: write (in /lib/i686/libc.so.6) ==1738== by 0x80A6AB0: mxfer (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A7330: mroute (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x809883A: pvm_send (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x807CAE4: send_config_response(int, int) (pvm_func.cc:64) ==1738== by 0x804EB0C: slave() (slave.cc:92) ==1738== by 0x804BA63: main (main2.cc:59) ==1738== Address 0x1BC34814 is 44 bytes inside a block of size 4096 alloc'd ==1738== at 0x1B906E20: malloc (vg_replace_malloc.c:131) ==1738== by 0x80A922D: da_new (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A4903: fr_new (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A1A45: pmsg_extend (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x80A1C9E: enc_raw_init (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x809DAA3: pvm_setsbuf (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x809DF9E: pvm_initsend (in /home/erg25994/CSieve_PVM/sieve_pvm) ==1738== by 0x807CABB: send_config_response(int, int) (pvm_func.cc:61) ==1738== by 0x804EB0C: slave() (slave.cc:92) ==1738== by 0x804BA63: main (main2.cc:59) --------------------------------------------- This message was sent using Endymion MailMan. http://www.endymion.com/products/mailman/ |
|
From: Nicholas N. <nj...@cs...> - 2005-03-24 03:44:00
|
On Wed, 23 Mar 2005 erg...@pc... wrote: > It seems to me that the errors below are errors in the PVM library, and not > my program. Is that correct? For example - main2.cc:40 is the call to > pvm_mytid(). This function doesn't take any arguments, it's the first call > of the program - hard to see how I've screwed it up!? Similarly for the > call to pvm_initsend() at pvm_func.cc:61 - it takes a single integer > argument, which in this case is a global const. It's difficult to say, but it's quite possible they are library bugs. Or just false positives. > What's odd is that pvm_initsend() is called ALOT with the same argument, > yet this is the only place it shows up with an error?? Duplicate errors are only reported once -- what determines the duplicate-ness is the kind of error and the stack-trace to a depth of four calls. This might be the reason. N |