List Info

Thread: EnvironmentManager crash




EnvironmentManager crash
country flaguser name
Australia
2007-12-17 20:45:35
Hi,

It seems with the latest environment manager changes, I'm
now experiencing 
crashes.  To reproduce this, open kdevplatform + kdevelop as
projects, enable 
parsing of all files, and restart kdevelop.

I had a look at the code, is it using a sorted std::set?  I
don't think Qt has 
a direct equivalent, but we could use QSet and then apply a
sorting operator 
to the list, or use QMap which is ordered and just use a
dummy value.

==5675==
==5675== Thread 5:
==5675== Use of uninitialised value of size 8
==5675==    at 0x1F243B6A: QHash<KDevelop::HashedString,

rpp::pp_macro*>::findNode(KDevelop::HashedString
const&, unsigned*) const 
(qhash.h:841)
==5675==    by 0x1F243C35: QHash<KDevelop::HashedString,

rpp::pp_macro*>::contains(KDevelop::HashedString
const&) const (qhash.h:829)
==5675==    by 0x1F24239A: 
rpp::Environment::retrieveStoredMacro(KDevelop::HashedString
const&) const 
(pp-environment.cpp:212)
==5675==    by 0x1EFAF8DE: 
Cpp::EnvironmentManager::lexedFile(KDevelop::HashedString
const&, 
rpp::Environment const*,
KDevelop::ParsingEnvironmentFileAcceptor*) 
(environmentmanager.cpp:151)
==5675==    by 0x1EFAFC3F: 
Cpp::EnvironmentManager::find(KDevelop::HashedString
const&, 
KDevelop::ParsingEnvironment const*, 
KDevelop::ParsingEnvironmentFileAcceptor*)
(environmentmanager.cpp:455)
==5675==    by 0xCF42FF1: 
KDevelop:UChain::
chainForDocument(KDevelop::HashedString const&, 
KDevelop::ParsingEnvironment const*,
KDevelop::TopDUContext::Flags) const 
(duchain.cpp:305)
==5675==    by 0x1ED0A906:
PreprocessJob::headerSectionEnded() 
(preprocessjob.cpp:262)
==5675==    by 0x1ED0BE5F: PreprocessJob::run()
(preprocessjob.cpp:222)
==5675==    by 0x1ED05238: CPPParseJob::parseForeground() 
(cppparsejob.cpp:101)
==5675==    by 0x1ED0A4EC:
PreprocessJob::sourceNeeded(QString&, 
rpp::Preprocessor::IncludeType, int, bool)
(preprocessjob.cpp:354)
==5675==    by 0x1F23F55A: rpp::pp::handle_include(bool,
rpp::Stream&, 
rpp::Stream&) (pp-engine.cpp:306)
==5675==    by 0x1F23F67A: rpp::pp::handle_directive(QString
const&, 
rpp::Stream&, rpp::Stream&) (pp-engine.cpp:240)
==5675==
==5675== Use of uninitialised value of size 8
==5675==    at 0x1F243B7D: QHash<KDevelop::HashedString,

rpp::pp_macro*>::findNode(KDevelop::HashedString
const&, unsigned*) const 
(qhash.h:841)
==5675==    by 0x1F243C35: QHash<KDevelop::HashedString,

rpp::pp_macro*>::contains(KDevelop::HashedString
const&) const (qhash.h:829)
==5675==    by 0x1F24239A: 
rpp::Environment::retrieveStoredMacro(KDevelop::HashedString
const&) const 
(pp-environment.cpp:212)
==5675==    by 0x1EFAF8DE: 
Cpp::EnvironmentManager::lexedFile(KDevelop::HashedString
const&, 
rpp::Environment const*,
KDevelop::ParsingEnvironmentFileAcceptor*) 
(environmentmanager.cpp:151)
==5675==    by 0x1EFAFC3F: 
Cpp::EnvironmentManager::find(KDevelop::HashedString
const&, 
KDevelop::ParsingEnvironment const*, 
KDevelop::ParsingEnvironmentFileAcceptor*)
(environmentmanager.cpp:455)
==5675==    by 0xCF42FF1: 
KDevelop:UChain::
chainForDocument(KDevelop::HashedString const&, 
KDevelop::ParsingEnvironment const*,
KDevelop::TopDUContext::Flags) const 
(duchain.cpp:305)
==5675==    by 0x1ED0A906:
PreprocessJob::headerSectionEnded() 
(preprocessjob.cpp:262)
==5675==    by 0x1ED0BE5F: PreprocessJob::run()
(preprocessjob.cpp:222)
==5675==    by 0x1ED05238: CPPParseJob::parseForeground() 
(cppparsejob.cpp:101)
==5675==    by 0x1ED0A4EC:
PreprocessJob::sourceNeeded(QString&, 
rpp::Preprocessor::IncludeType, int, bool)
(preprocessjob.cpp:354)
==5675==    by 0x1F23F55A: rpp::pp::handle_include(bool,
rpp::Stream&, 
rpp::Stream&) (pp-engine.cpp:306)
==5675==    by 0x1F23F67A: rpp::pp::handle_directive(QString
const&, 
rpp::Stream&, rpp::Stream&) (pp-engine.cpp:240)
==5675==
==5675== Use of uninitialised value of size 8
==5675==    at 0x1F243BB1: QHash<KDevelop::HashedString,

rpp::pp_macro*>::findNode(KDevelop::HashedString
const&, unsigned*) const 
(qhash.h:842)
==5675==    by 0x1F243C35: QHash<KDevelop::HashedString,

rpp::pp_macro*>::contains(KDevelop::HashedString
const&) const (qhash.h:829)
==5675==    by 0x1F24239A: 
rpp::Environment::retrieveStoredMacro(KDevelop::HashedString
const&) const 
(pp-environment.cpp:212)
==5675==    by 0x1EFAF8DE: 
Cpp::EnvironmentManager::lexedFile(KDevelop::HashedString
const&, 
rpp::Environment const*,
KDevelop::ParsingEnvironmentFileAcceptor*) 
(environmentmanager.cpp:151)
==5675==    by 0x1EFAFC3F: 
Cpp::EnvironmentManager::find(KDevelop::HashedString
const&, 
KDevelop::ParsingEnvironment const*, 
KDevelop::ParsingEnvironmentFileAcceptor*)
(environmentmanager.cpp:455)
==5675==    by 0xCF42FF1: 
KDevelop:UChain::
chainForDocument(KDevelop::HashedString const&, 
KDevelop::ParsingEnvironment const*,
KDevelop::TopDUContext::Flags) const 
(duchain.cpp:305)
==5675==    by 0x1ED0A906:
PreprocessJob::headerSectionEnded() 
(preprocessjob.cpp:262)
==5675==    by 0x1ED0BE5F: PreprocessJob::run()
(preprocessjob.cpp:222)
==5675==    by 0x1ED05238: CPPParseJob::parseForeground() 
(cppparsejob.cpp:101)
==5675==    by 0x1ED0A4EC:
PreprocessJob::sourceNeeded(QString&, 
rpp::Preprocessor::IncludeType, int, bool)
(preprocessjob.cpp:354)
==5675==    by 0x1F23F55A: rpp::pp::handle_include(bool,
rpp::Stream&, 
rpp::Stream&) (pp-engine.cpp:306)
==5675==    by 0x1F23F67A: rpp::pp::handle_directive(QString
const&, 
rpp::Stream&, rpp::Stream&) (pp-engine.cpp:240)
==5675==
==5675== Use of uninitialised value of size 8
==5675==    at 0x1F243BC4: QHash<KDevelop::HashedString,

rpp::pp_macro*>::findNode(KDevelop::HashedString
const&, unsigned*) const 
(qhash.h:842)
==5675==    by 0x1F243C35: QHash<KDevelop::HashedString,

rpp::pp_macro*>::contains(KDevelop::HashedString
const&) const (qhash.h:829)
==5675==    by 0x1F24239A: 
rpp::Environment::retrieveStoredMacro(KDevelop::HashedString
const&) const 
(pp-environment.cpp:212)
==5675==    by 0x1EFAF8DE: 
Cpp::EnvironmentManager::lexedFile(KDevelop::HashedString
const&, 
rpp::Environment const*,
KDevelop::ParsingEnvironmentFileAcceptor*) 
(environmentmanager.cpp:151)
==5675==    by 0x1EFAFC3F: 
Cpp::EnvironmentManager::find(KDevelop::HashedString
const&, 
KDevelop::ParsingEnvironment const*, 
KDevelop::ParsingEnvironmentFileAcceptor*)
(environmentmanager.cpp:455)
==5675==    by 0xCF42FF1: 
KDevelop:UChain::
chainForDocument(KDevelop::HashedString const&, 
KDevelop::ParsingEnvironment const*,
KDevelop::TopDUContext::Flags) const 
(duchain.cpp:305)
==5675==    by 0x1ED0A906:
PreprocessJob::headerSectionEnded() 
(preprocessjob.cpp:262)
==5675==    by 0x1ED0BE5F: PreprocessJob::run()
(preprocessjob.cpp:222)
==5675==    by 0x1ED05238: CPPParseJob::parseForeground() 
(cppparsejob.cpp:101)
==5675==    by 0x1ED0A4EC:
PreprocessJob::sourceNeeded(QString&, 
rpp::Preprocessor::IncludeType, int, bool)
(preprocessjob.cpp:354)
==5675==    by 0x1F23F55A: rpp::pp::handle_include(bool,
rpp::Stream&, 
rpp::Stream&) (pp-engine.cpp:306)
==5675==    by 0x1F23F67A: rpp::pp::handle_directive(QString
const&, 
rpp::Stream&, rpp::Stream&) (pp-engine.cpp:240)
==5675==
==5675== Conditional jump or move depends on uninitialised
value(s)
==5675==    at 0x1F243AD5:
QHashNode<KDevelop::HashedString, 
rpp::pp_macro*>::same_key(unsigned,
KDevelop::HashedString const&) 
(qhash.h:200)
==5675==    by 0x1F243BD2: QHash<KDevelop::HashedString,

rpp::pp_macro*>::findNode(KDevelop::HashedString
const&, unsigned*) const 
(qhash.h:842)
==5675==    by 0x1F243C35: QHash<KDevelop::HashedString,

rpp::pp_macro*>::contains(KDevelop::HashedString
const&) const (qhash.h:829)
==5675==    by 0x1F24239A: 
rpp::Environment::retrieveStoredMacro(KDevelop::HashedString
const&) const 
(pp-environment.cpp:212)
==5675==    by 0x1EFAF8DE: 
Cpp::EnvironmentManager::lexedFile(KDevelop::HashedString
const&, 
rpp::Environment const*,
KDevelop::ParsingEnvironmentFileAcceptor*) 
(environmentmanager.cpp:151)
==5675==    by 0x1EFAFC3F: 
Cpp::EnvironmentManager::find(KDevelop::HashedString
const&, 
KDevelop::ParsingEnvironment const*, 
KDevelop::ParsingEnvironmentFileAcceptor*)
(environmentmanager.cpp:455)
==5675==    by 0xCF42FF1: 
KDevelop:UChain::
chainForDocument(KDevelop::HashedString const&, 
KDevelop::ParsingEnvironment const*,
KDevelop::TopDUContext::Flags) const 
(duchain.cpp:305)
==5675==    by 0x1ED0A906:
PreprocessJob::headerSectionEnded() 
(preprocessjob.cpp:262)
==5675==    by 0x1ED0BE5F: PreprocessJob::run()
(preprocessjob.cpp:222)
==5675==    by 0x1ED05238: CPPParseJob::parseForeground() 
(cppparsejob.cpp:101)
==5675==    by 0x1ED0A4EC:
PreprocessJob::sourceNeeded(QString&, 
rpp::Preprocessor::IncludeType, int, bool)
(preprocessjob.cpp:354)
==5675==    by 0x1F23F55A: rpp::pp::handle_include(bool,
rpp::Stream&, 
rpp::Stream&) (pp-engine.cpp:306)
==5675==
==5675== Use of uninitialised value of size 8
==5675==    at 0x1F243BA6: QHash<KDevelop::HashedString,

rpp::pp_macro*>::findNode(KDevelop::HashedString
const&, unsigned*) const 
(qhash.h:843)
==5675==    by 0x1F243C35: QHash<KDevelop::HashedString,

rpp::pp_macro*>::contains(KDevelop::HashedString
const&) const (qhash.h:829)
==5675==    by 0x1F24239A: 
rpp::Environment::retrieveStoredMacro(KDevelop::HashedString
const&) const 
(pp-environment.cpp:212)
==5675==    by 0x1EFAF8DE: 
Cpp::EnvironmentManager::lexedFile(KDevelop::HashedString
const&, 
rpp::Environment const*,
KDevelop::ParsingEnvironmentFileAcceptor*) 
(environmentmanager.cpp:151)
==5675==    by 0x1EFAFC3F: 
Cpp::EnvironmentManager::find(KDevelop::HashedString
const&, 
KDevelop::ParsingEnvironment const*, 
KDevelop::ParsingEnvironmentFileAcceptor*)
(environmentmanager.cpp:455)
==5675==    by 0xCF42FF1: 
KDevelop:UChain::
chainForDocument(KDevelop::HashedString const&, 
KDevelop::ParsingEnvironment const*,
KDevelop::TopDUContext::Flags) const 
(duchain.cpp:305)
==5675==    by 0x1ED0A906:
PreprocessJob::headerSectionEnded() 
(preprocessjob.cpp:262)
==5675==    by 0x1ED0BE5F: PreprocessJob::run()
(preprocessjob.cpp:222)
==5675==    by 0x1ED05238: CPPParseJob::parseForeground() 
(cppparsejob.cpp:101)
==5675==    by 0x1ED0A4EC:
PreprocessJob::sourceNeeded(QString&, 
rpp::Preprocessor::IncludeType, int, bool)
(preprocessjob.cpp:354)
==5675==    by 0x1F23F55A: rpp::pp::handle_include(bool,
rpp::Stream&, 
rpp::Stream&) (pp-engine.cpp:306)
==5675==    by 0x1F23F67A: rpp::pp::handle_directive(QString
const&, 
rpp::Stream&, rpp::Stream&) (pp-engine.cpp:240)
==5675==
==5675== Invalid read of size 4
==5675==    at 0xCD0FA70: KDevelop::HashedString::hash()
const 
(hashedstring.h:52)
==5675==    by 0xCD0FA8A:
KDevelop::qHash(KDevelop::HashedString const&) 
(hashedstring.h:83)
==5675==    by 0x1F243B1D: QHash<KDevelop::HashedString,

rpp::pp_macro*>::findNode(KDevelop::HashedString
const&, unsigned*) const 
(qhash.h:837)
==5675==    by 0x1F243C35: QHash<KDevelop::HashedString,

rpp::pp_macro*>::contains(KDevelop::HashedString
const&) const (qhash.h:829)
==5675==    by 0x1F24239A: 
rpp::Environment::retrieveStoredMacro(KDevelop::HashedString
const&) const 
(pp-environment.cpp:212)
==5675==    by 0x1EFAF8DE: 
Cpp::EnvironmentManager::lexedFile(KDevelop::HashedString
const&, 
rpp::Environment const*,
KDevelop::ParsingEnvironmentFileAcceptor*) 
(environmentmanager.cpp:151)
==5675==    by 0x1EFAFC3F: 
Cpp::EnvironmentManager::find(KDevelop::HashedString
const&, 
KDevelop::ParsingEnvironment const*, 
KDevelop::ParsingEnvironmentFileAcceptor*)
(environmentmanager.cpp:455)
==5675==    by 0xCF42FF1: 
KDevelop:UChain::
chainForDocument(KDevelop::HashedString const&, 
KDevelop::ParsingEnvironment const*,
KDevelop::TopDUContext::Flags) const 
(duchain.cpp:305)
==5675==    by 0x1ED0A906:
PreprocessJob::headerSectionEnded() 
(preprocessjob.cpp:262)
==5675==    by 0x1ED0BE5F: PreprocessJob::run()
(preprocessjob.cpp:222)
==5675==    by 0x1ED05238: CPPParseJob::parseForeground() 
(cppparsejob.cpp:101)
==5675==    by 0x1ED0A4EC:
PreprocessJob::sourceNeeded(QString&, 
rpp::Preprocessor::IncludeType, int, bool)
(preprocessjob.cpp:354)
==5675==  Address 0x2032fc28 is 4,040 bytes inside a block
of size 40,960 
free'd
==5675==    at 0x4C21F3B: free (vg_replace_malloc.c:323)
==5675==    by 0x1F475437: TokenStream::~TokenStream()
(lexer.h:83)
==5675==    by 0x1F47501F: ParseSession::~ParseSession()
(parsesession.cpp:40)
==5675==    by 0x1ED04EA9: CPPParseJob::~CPPParseJob()
(cppparsejob.cpp:150)
==5675==    by 0x1ED0A552:
PreprocessJob::sourceNeeded(QString&, 
rpp::Preprocessor::IncludeType, int, bool)
(preprocessjob.cpp:358)
==5675==    by 0x1F23F55A: rpp::pp::handle_include(bool,
rpp::Stream&, 
rpp::Stream&) (pp-engine.cpp:306)
==5675==    by 0x1F23F67A: rpp::pp::handle_directive(QString
const&, 
rpp::Stream&, rpp::Stream&) (pp-engine.cpp:240)
==5675==    by 0x1F23F97F:
rpp::pp::operator()(rpp::Stream&, rpp::Stream&) 
(pp-engine.cpp:370)
==5675==    by 0x1F240207: rpp::pp::processFile(QString
const&, 
rpp::pp::StringType, QString const&)
(pp-engine.cpp:104)
==5675==    by 0x1ED0BB3B: PreprocessJob::run()
(preprocessjob.cpp:206)
==5675==    by 0x1ED05238: CPPParseJob::parseForeground() 
(cppparsejob.cpp:101)
==5675==    by 0x1ED0A4EC:
PreprocessJob::sourceNeeded(QString&, 
rpp::Preprocessor::IncludeType, int, bool)
(preprocessjob.cpp:354)

Cheers,
Hamish.

_______________________________________________
KDevelop-devel mailing list
KDevelop-develkdevelop.org
https://barney.cs.uni-potsdam.de/mailman/listinf
o/kdevelop-devel

RE: EnvironmentManager crash
user name
2007-12-18 07:22:34
> I had a look at the code, is it using a sorted
std::set?  I
> don't think Qt has
> a direct equivalent, but we could use QSet and then
apply a
> sorting operator
> to the list, or use QMap which is ordered and just use
a dummy value.

I haven't looked at this code (and thus am not entirely sure
what you are commenting on), but just a quick comment - QSet
is a hash-based container.  i.e., it provides amortized
constant look up (and cannot be ordered).  I assume the
purpose of using such a container is for efficient look up,
in which case the Qt implementation would generally perform
better than its STL counterpart, which I believe is
tree-based.

Kris Wong

_______________________________________________
KDevelop-devel mailing list
KDevelop-develkdevelop.org
https://barney.cs.uni-potsdam.de/mailman/listinf
o/kdevelop-devel

[1-2]

about | contact  Other archives ( Real Estate discussion Medical topics )