> 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