<div dir="ltr"><div><div>Try this patch:<br><br>diff --git a/serialization/itemrepository.h b/serialization/itemrepository.h<br>index 7cb0650..1d9612a 100644<br>--- a/serialization/itemrepository.h<br>+++ b/serialization/itemrepository.h<br>@@ -96,7 +96,8 @@ namespace KDevelop {<br> */<br> <br> enum {<br>- ItemRepositoryBucketSize = 1<<16<br>+ ItemRepositoryBucketSize = 1<<16,<br>+ ItemRepositoryBucketLimit = 1<<16<br> };<br> <br> /**<br>@@ -1298,6 +1299,7 @@ class ItemRepository : public AbstractItemRepository {<br> <br> convertMonsterBucket(useBucket, needMonsterExtent);<br> m_currentBucket += 1 + needMonsterExtent;<br>+ Q_ASSERT(m_currentBucket < ItemRepositoryBucketLimit);<br> Q_ASSERT(m_buckets[m_currentBucket - 1 - needMonsterExtent] && m_buckets[m_currentBucket - 1 - needMonsterExtent]->monsterBucketExtent() == needMonsterExtent);<br> }<br> Q_ASSERT(useBucket);<br>@@ -1389,6 +1391,7 @@ class ItemRepository : public AbstractItemRepository {<br> putIntoFreeList(useBucket, bucketPtr);<br> <br> ++m_currentBucket;<br>+ Q_ASSERT(m_currentBucket < ItemRepositoryBucketLimit);<br> useBucket = m_currentBucket;<br> }<br> }<br><br></div>Also, when you reproduce the crash next time, it would be useful if you could dump the object returned by the "ItemRepository::statistics()" function of the corresponding item repository, it should be possible to call that function from within GDB.<br><br></div>Greetings, David<br><div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2015-03-18 2:10 GMT+01:00 Lucas Tanure <span dir="ltr"><<a href="mailto:tanure@linux.com" target="_blank">tanure@linux.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><span class=""><br clear="all"><div><div><div dir="ltr"><div>--</div>Lucas Tanure <br><a href="tel:%2B55%20%2819%29%20988176559" value="+5519988176559" target="_blank">+55 (19) 988176559</a><br></div></div></div>
<br></span><div class="gmail_quote"><span class="">On Tue, Mar 17, 2015 at 9:22 AM, David Nolden <span dir="ltr"><<a href="mailto:david.nolden.kdevelop@art-master.de" target="_blank">david.nolden.kdevelop@art-master.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Actually, the absolute limit on the size of the item repository is 4GB, because the index is a 32 bit number, and there can be 1<<16 buckets, each of size 1<<16, i.e. 1<<32=4.3GB. Maybe this limit is hit in your case. Can you add some assertion which avoids "wrapping" of the bucket number (especially of the buckets spanned by the "monster bucket extent")?<br></div></div></div></blockquote><div><br></div></span><div>How ? I don't understand this code yet. </div><div><div class="h5"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><br></div>However, that limit applies to each item repository separately. In your case it seems to be the persistent symbol table. IMO it should never become that huge, not even for the linux kernel. So I guess this is a problem in kdevelop-clang, which puts too much stuff in the symbol table (just a guess).<br><br></div>Greetings, David<br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>2015-03-15 2:15 GMT+01:00 Lucas Tanure <span dir="ltr"><<a href="mailto:tanure@linux.com" target="_blank">tanure@linux.com</a>></span>:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr">Hi,<br><br>I'm trying to use kdevelop for develop linux kernel, but it's crashing while parsing.<div>I imported the main makefile from linux kernel source and after a few minutes the kdevelop crashes.<br><br>Take a look at:<br><b>kdevelop</b> <b>binaries</b> : <a href="https://www.dropbox.com/s/g01t1uzpkkwihwt/kdevelop.tar.xz?dl=0" target="_blank">https://www.dropbox.com/s/g01t1uzpkkwihwt/kdevelop.tar.xz?dl=0</a><br><br><b>llvm</b> <b>binaries</b> :<a href="https://www.dropbox.com/s/j8xarqu6leufk8s/llvm.tar.xz?dl=0" target="_blank">https://www.dropbox.com/s/j8xarqu6leufk8s/llvm.tar.xz?dl=0</a><br><br><b>kdevelop</b> <b>log</b> : <a href="https://www.dropbox.com/s/ke4iovxx8alis9j/kdev.log?dl=0" target="_blank">https://www.dropbox.com/s/ke4iovxx8alis9j/kdev.log?dl=0</a><br><br><b>gdb</b> <b>coredump</b> : <a href="https://www.dropbox.com/s/1q7l8pi67kug59r/core.24956.xz?dl=0" target="_blank">https://www.dropbox.com/s/1q7l8pi67kug59r/core.24956.xz?dl=0</a><br><br>I created the bug:</div><div><a href="https://bugs.kde.org/show_bug.cgi?id=343950" target="_blank">https://bugs.kde.org/show_bug.cgi?id=343950</a></div><div><br></div><div>and I thought it was the same as:<br><a href="https://bugs.kde.org/show_bug.cgi?id=272408" target="_blank">https://bugs.kde.org/show_bug.cgi?id=272408</a> ( not enough memory ram ). </div><div>But it's not, it's a real crash. I tested with a 24Gbytes of Ram, and kdevelop took like 5Gb to parse 50% of linux kernel. </div><div><br></div><div>Please help.</div><div>Thanks</div><div><br></div><div>--<br>Lucas Tanure<br><a href="tel:%2B55%20%2819%29%20988176559" value="+5519988176559" target="_blank">+55 (19) 988176559</a></div></div>
<br></div></div><span>_______________________________________________<br>
KDevelop-devel mailing list<br>
<a href="mailto:KDevelop-devel@kde.org" target="_blank">KDevelop-devel@kde.org</a><br>
<a href="https://mail.kde.org/mailman/listinfo/kdevelop-devel" target="_blank">https://mail.kde.org/mailman/listinfo/kdevelop-devel</a><br>
<br></span></blockquote></div><br></div>
</blockquote></div></div></div><br></div></div>
</blockquote></div><br></div>