|
From: Yeshurun, M. <mei...@in...> - 2005-10-17 20:56:06
|
The following program generates an invalid read even when explicitly
specifying --partial-loads-ok=3Dyes. Am I missing something here?
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
char *a =3D new char[11];
strcpy(a, "0123456789");
int b =3D *(int *)(a + 9); =20
}
Thanks,
Meir
-----Original Message-----
From: val...@li...
[mailto:val...@li...] On Behalf Of Tom
Hughes
Sent: Monday, October 17, 2005 9:07 PM
To: val...@li...
Subject: RE: [Valgrind-users] User error? - Valgrind 3 failing terribly
compared to purify
In message
<942...@ha...>
"Yeshurun, Meir" <mei...@in...> wrote:
> There is one issue though: It looks like Valgrind reports partial
loads
> as errors by default. I think this shouldn't be the default behavior.
Actually valgrind doesn't report any loads as errors - it only
reports an error when you use an undefined value in a way that
would effect the result of the program. In other words when a
conditional jump depends on it or you use it as a pointer and
read or write through that pointer.
It tracks definedness at bit level, so a partial load will mark
some bits as defined and leaves others alone. If you then later
use one of the undefined bits it will complain.
There are edge cases where it thinks a bit is used when it isn't
really but they are rare.
I think you need to explain what you mean more fully.
Tom
--=20
Tom Hughes (to...@co...)
http://www.compton.nu/
-------------------------------------------------------
This SF.Net email is sponsored by:
Power Architecture Resource Center: Free content, downloads,
discussions,
and more. http://solutions.newsforge.com/ibmarch.tmpl
_______________________________________________
Valgrind-users mailing list
Val...@li...
https://lists.sourceforge.net/lists/listinfo/valgrind-users
|