> 6:     sprintf(lMsg, "%i%i%i%i", 1, 2, 3, 4);
> 7:     printf("%s", lMsg);

> memcheck with Valgrind 3.8.1 complains about:
> 
> ==28037== Conditional jump or move depends on uninitialised value(s)
> ==28037==    at 0x41EB419: ??? (in /lib/tls/i686/cmov/libc-2.11.1.so)
> ==28037==    by 0x41BF2BF: printf (in /lib/tls/i686/cmov/libc-2.11.1.so)
> ==28037==    by 0x80485B6: main (test.cpp:7)
> ==28037==  Uninitialised value was created by a stack allocation
> ==28037==    at 0x804855A: main (test.cpp:4)
> 
> I'm fairly new to Valgrind and I can't figure out what's wrong - but it feels 
> like I am missing something obvious :) Any ideas?

The suspect code is in a subroutine that is called by printf, and is inside 
libc-2.11.1.so.
It's probably the equivalent of strlen() applied to "1234", and which uses
word-wide operations on the terminating "\0???" where the '?' are uninit bytes.
Therefore this particular complaint is a "false positive" that you should 
ignore.

libc-2.11 is about three years old; 2.17 is current.  The complaint above
does not arise with 2.17.  Have you considered upgrading?

-- 



------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnnow-d2d
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to