Hey all,

in KDevelop 4 I have this reproducible issue:

==16813== Syscall
param utimes(tvp[1]) points to uninitialised byte(s)
==16813==    at
0xAA898D7: utimes (in /lib/libc-2.12.so)
==16813==    by 0x3072446E:
CppTools::FileModificationTimeWrapper::FileModificationTimeWrapper(QStringLi
st const&, QString const&) (includepathresolver.cpp:124)
==16813==    by
0x30722394:
CppTools::IncludePathResolver::resolveIncludePathInternal(QString const&,
QString const&, QString const&, CppTools::SourcePathInformation const&, int)
(includepathresolver.cpp:712)
==16813==    by 0x30721EBA:
CppTools::IncludePathResolver::resolveIncludePath(QString const&, QString
const&, int) (includepathresolver.cpp:660)
==16813==    by 0x3072044A:
CppTools::IncludePathResolver::resolveIncludePath(QString const&)
(includepathresolver.cpp:443)
==16813==    by 0x30701C08:
IncludePathComputer::computeBackground()
(includepathcomputer.cpp:184)
==16813==    by 0x307063F5:
CPPParseJob::includePaths() const (cppparsejob.cpp:256)
==16813==    by
0x30705DC4: CPPParseJob::mergeDefines(CppPreprocessEnvironment&) const
(cppparsejob.cpp:210)
==16813==    by 0x30714438: PreprocessJob::run()
(preprocessjob.cpp:157)
==16813==    by 0x65B3B44: ??? (in
/usr/lib/libthreadweaver.so.4.5.0)
==16813==    by 0x65B3C7D:
ThreadWeaver::Job::execute(ThreadWeaver::Thread*) (in
/usr/lib/libthreadweaver.so.4.5.0)
==16813==    by 0x65B4E42: ??? (in
/usr/lib/libthreadweaver.so.4.5.0)
==16813==  Address 0x346a9da0 is on
thread 13's stack
==16813==  Uninitialised value was created by a stack
allocation
==16813==    at 0x3072228F:
CppTools::IncludePathResolver::resolveIncludePathInternal(QString const&,
QString const&, QString const&, CppTools::SourcePathInformation const&, int)
(includepathresolver.cpp:699)

The code for it looks like
this:
http://gitorious.org/kdevelop/kdevelop/blobs/master/languages/cpp/incl
udepathresolver.cpp

or here the code before the warning:

        QByteArray
bFileName = filename.toLocal8Bit();
        const char* bFileNameC =
bFileName.constData();

        struct stat s;
        if( stat( bFileNameC,
&s ) == 0 ) 
        {
          ///Success
          m_stat[filename] =
s.st_mtime;
          ///change the modification-time to m_newTime
         
struct timeval times[2];
          times[0].tv_sec = m_newTime;
         
times[0].tv_usec = 0;
          times[1].tv_sec = m_newTime;
         
times[1].tv_usec = 0;

          if( utimes( bFileNameC, times ) != 0 )
    
     {
            ifTest( cout << "failed to touch " <<
it->toUtf8().constData() << endl );
          }
        }

To me this looks
just fine and I don't get what could be unitializsed in the "stack
allocation" in loc 699...

Is this a false-positive? Or is stat / utimes
really wrong here? Note that we haven't had any problems so far (at least
none from which we know).

Bye

-- 
Milian
Wolff
[email protected]
http://milianw.de

Attachment: signature.asc
Description: This is a digitally signed message part.

------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to