|
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/ |