More crashes

Hamish Rodda rodda at kde.org
Tue Dec 18 22:22:02 UTC 2007


On Wed, 19 Dec 2007 01:59:15 am David Nolden wrote:
> On Tuesday 18 December 2007 15:03:48 Hamish Rodda wrote:
> > Hi,
> >
> > Here are a few more issues:
> > 1) I'm seeing tons of DeclarationBuilder::openDeclaration: Range
> > collapsed, was there a regression?
>
> See my last commit. :)
>
> > And some crashes..:
> >
> > This happens 44% of the way through kdevplatform + kdevelop:
> > ASSERT: "previousOfSameName || !m_definedMacroNames.contains(macro.name)"
> > in file
> > /opt/kde4/src/kdevelop/languages/cpp/cppduchain/environmentmanager.cpp,
> > line 259
>
> I will look into this now.

Thanks for the fixes ;)

> > And the following two backtraces look like QUrl threading issues:
> >
> > ==5675== Thread 4:
> > ==5675== Invalid read of size 1
> > ==5675==    at 0x4EEFBDF: _char(char**, char, ErrorInfo*) (qurl.cpp:282)
> > ==5675==    by 0x4EEFCC4: _pctEncoded(char**, char*, ErrorInfo*)
> > (qurl.cpp:309)
> > ==5675==    by 0x4EF2204: _regName(char**, QByteArray*, ErrorInfo*)
> > (qurl.cpp:744)
> > ==5675==    by 0x4EF446A: _host(char**, QByteArray*, ErrorInfo*)
> > (qurl.cpp:758)
> > ==5675==    by 0x4EF44FE: _authority(char**, QByteArray*, QByteArray*,
> > int*, ErrorInfo*) (qurl.cpp:820)
> > ==5675==    by 0x4EF4654: _hierPart(char**, QByteArray*, QByteArray*,
> > int*, QByteArray*, ErrorInfo*) (qurl.cpp:1016)
> > ==5675==    by 0x4EF570F: QUrlPrivate::parse(QUrlPrivate::ParseOptions)
> > const (qurl.cpp:3362)
> > ==5675==    by 0x4EF9263: QUrlPrivate::validate() const (qurl.cpp:3303)
> > ==5675==    by 0x4EF9551: QUrl::port() const (qurl.cpp:4059)
> > ==5675==    by 0x62CC500: KUrl::prettyUrl(KUrl::AdjustPathOption) const
> > (kurl.cpp:937)
> > ==5675==    by 0x1ED0AE7D: convertFromUrls(QList<KUrl> const&)
> > (preprocessjob.cpp:59)
> > ==5675==    by 0x1ED0B027: PreprocessJob::run() (preprocessjob.cpp:93)
> > ==5675==  Address 0x2c633567 is 31 bytes inside a block of size 128
> > free'd ==5675==    at 0x4C21F3B: free (vg_replace_malloc.c:323)
> > ==5675==    by 0x4E738F0: qFree(void*) (qglobal.cpp:1965)
> > ==5675==    by 0x4E7E32E: QByteArray::operator=(QByteArray const&)
> > (qbytearray.cpp:811)
> > ==5675==    by 0x4EF9246: QUrlPrivate::validate() const (qurl.cpp:3302)
> > ==5675==    by 0x4EF9551: QUrl::port() const (qurl.cpp:4059)
> > ==5675==    by 0x62CC500: KUrl::prettyUrl(KUrl::AdjustPathOption) const
> > (kurl.cpp:937)
> > ==5675==    by 0x1ED0AE7D: convertFromUrls(QList<KUrl> const&)
> > (preprocessjob.cpp:59)
> > ==5675==    by 0x1ED0B027: PreprocessJob::run() (preprocessjob.cpp:93)
> > ==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)
> >
> > ==8011== Thread 5:
> > ==8011== Invalid read of size 1
> > ==8011==    at 0x4EEFBDF: _char(char**, char, ErrorInfo*) (qurl.cpp:282)
> > ==8011==    by 0x4EEFCC4: _pctEncoded(char**, char*, ErrorInfo*)
> > (qurl.cpp:309)
> > ==8011==    by 0x4EF2204: _regName(char**, QByteArray*, ErrorInfo*)
> > (qurl.cpp:744)
> > ==8011==    by 0x4EF446A: _host(char**, QByteArray*, ErrorInfo*)
> > (qurl.cpp:758)
> > ==8011==    by 0x4EF44FE: _authority(char**, QByteArray*, QByteArray*,
> > int*, ErrorInfo*) (qurl.cpp:820)
> > ==8011==    by 0x4EF4654: _hierPart(char**, QByteArray*, QByteArray*,
> > int*, QByteArray*, ErrorInfo*) (qurl.cpp:1016)
> > ==8011==    by 0x4EF570F: QUrlPrivate::parse(QUrlPrivate::ParseOptions)
> > const (qurl.cpp:3362)
> > ==8011==    by 0x4EF9263: QUrlPrivate::validate() const (qurl.cpp:3303)
> > ==8011==    by 0x4EF95AB: QUrl::isValid() const (qurl.cpp:3656)
> > ==8011==    by 0x62CD803: KUrl::equals(KUrl const&,
> > QFlags<KUrl::EqualsOption> const&) const (kurl.cpp:517)
> > ==8011==    by 0x62CDC37: KUrl::isParentOf(KUrl const&) const
> > (kurl.cpp:1700) ==8011==    by 0x6668DEB:
> > KDevelop::Project::fileForUrl(KUrl const&) const (project.cpp:352)
> > ==8011==  Address 0xf2b1df7 is 31 bytes inside a block of size 128 free'd
> > ==8011==    at 0x4C21F3B: free (vg_replace_malloc.c:323)
> > ==8011==    by 0x4E738F0: qFree(void*) (qglobal.cpp:1965)
> > ==8011==    by 0x4E7E32E: QByteArray::operator=(QByteArray const&)
> > (qbytearray.cpp:811)
> > ==8011==    by 0x4EF9246: QUrlPrivate::validate() const (qurl.cpp:3302)
> > ==8011==    by 0x4EF95AB: QUrl::isValid() const (qurl.cpp:3656)
> > ==8011==    by 0x62CD803: KUrl::equals(KUrl const&,
> > QFlags<KUrl::EqualsOption> const&) const (kurl.cpp:517)
> > ==8011==    by 0x62CDC37: KUrl::isParentOf(KUrl const&) const
> > (kurl.cpp:1700) ==8011==    by 0x6668DEB:
> > KDevelop::Project::fileForUrl(KUrl const&) const (project.cpp:352)
> > ==8011==    by 0x1ECFFF08: CppLanguageSupport::findIncludePaths(KUrl
> > const&) const (cpplanguagesupport.cpp:257)
> > ==8011==    by 0x1ED070D0: CPPParseJob::includePaths() const
> > (cppparsejob.cpp:121)
> > ==8011==    by 0x1ED0D018: PreprocessJob::run() (preprocessjob.cpp:93)
> > ==8011==    by 0x96D8498:
> > ThreadWeaver::JobRunHelper::runTheJob(ThreadWeaver::Thread*,
> > ThreadWeaver::Job*) (Job.cpp:106)
>
> These aren't really crashes, just valgrind warnings, right?

They can sometimes result in a crash, i guess depending on the location of the 
invalid read + how easily the system detects it (whether it's a segmentation 
violation or not)

Cheers,
Hamish.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kdevelop-devel/attachments/20071219/ca2a6f78/attachment.sig>


More information about the KDevelop-devel mailing list