This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 254962 - [newcodemodel] Code model uses dead objects (java.lang.ArrayIndexOutOfBoundsException: 4096)
Summary: [newcodemodel] Code model uses dead objects (java.lang.ArrayIndexOutOfBoundsE...
Status: RESOLVED FIXED
Alias: None
Product: cnd
Classification: Unclassified
Component: Code Model (show other bugs)
Version: 8.1
Hardware: PC Solaris
: P1 normal (vote)
Assignee: Vladimir Voskresensky
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-09-03 10:26 UTC by Alexander Simon
Modified: 2015-09-06 05:07 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexander Simon 2015-09-03 10:26:03 UTC
Exception from log of IncrementalParseRepositoryComposite test:

java.lang.Exception: ERROR /var/tmp/alsimon-cnd-test-downloads/pkg-config-0.25/glib-1.2.10/garray.c
	at org.clang.tools.services.impl.PreprocessorSupport.preprocessEntries(PreprocessorSupport.java:231)
	at org.clang.tools.services.impl.PreprocessorSupport.preprocess(PreprocessorSupport.java:167)
	at org.clang.tools.services.ClankPreprocessorServices.preprocess(ClankPreprocessorServices.java:67)
	at org.netbeans.modules.cnd.apt.impl.support.clank.ClankDriverImpl.preprocessImpl(ClankDriverImpl.java:153)
	at org.netbeans.modules.cnd.apt.support.ClankDriver.preprocess(ClankDriver.java:98)
	at org.netbeans.modules.cnd.modelimpl.parser.clank.ClankTokenStreamProducer.getTokenStream(ClankTokenStreamProducer.java:148)
	at org.netbeans.modules.cnd.modelimpl.csm.core.FileImpl.createAndCacheFullTokenStream(FileImpl.java:1185)
	at org.netbeans.modules.cnd.modelimpl.csm.core.FileImpl.getTokenStream(FileImpl.java:1238)
	at org.netbeans.modules.cnd.modelimpl.csm.deep.LazyStatementImpl.renderStatements(LazyStatementImpl.java:129)
	at org.netbeans.modules.cnd.modelimpl.csm.deep.LazyStatementImpl.createStatements(LazyStatementImpl.java:116)
	at org.netbeans.modules.cnd.modelimpl.csm.deep.LazyStatementImpl.getStatements(LazyStatementImpl.java:88)
	at org.netbeans.modules.cnd.api.model.util.CsmTracer.dumpStatement(CsmTracer.java:531)
	at org.netbeans.modules.cnd.api.model.util.CsmTracer.dumpStatement(CsmTracer.java:493)
	at org.netbeans.modules.cnd.api.model.util.CsmTracer.dumpModel(CsmTracer.java:414)
	at org.netbeans.modules.cnd.api.model.util.CsmTracer.dumpModel(CsmTracer.java:851)
	at org.netbeans.modules.cnd.api.model.util.CsmTracer.dumpModel(CsmTracer.java:707)
	at org.netbeans.modules.cnd.api.model.util.CsmTracer.dumpModel(CsmTracer.java:673)
	at org.netbeans.modules.cnd.repository.util.RepositoryTestSupport.dumpCsmProject(RepositoryTestSupport.java:103)
	at org.netbeans.modules.cnd.repository.impl.RepositoryValidationBase.postTest(RepositoryValidationBase.java:108)
	at org.netbeans.modules.cnd.modelimpl.trace.TraceModelTestBase.doTest(TraceModelTestBase.java:208)
	at org.netbeans.modules.cnd.repository.impl.RepositoryValidationBase.doTest(RepositoryValidationBase.java:78)
	at org.netbeans.modules.cnd.repository.impl.IncrementalParseRepositoryComposite.testRepository(IncrementalParseRepositoryComposite.java:85)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at junit.framework.TestCase.runTest(TestCase.java:176)
	at org.netbeans.junit.NbTestCase.access$200(NbTestCase.java:102)
	at org.netbeans.junit.NbTestCase$2.doSomething(NbTestCase.java:478)
	at org.netbeans.junit.NbTestCase$1Guard.run(NbTestCase.java:404)
	at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 4096
	at org.clank.support.aliases.char$ptr$array.$at(char$ptr$array.java:69)
	at org.clank.java.std.strlen(std.java:862)
	at org.clank.support.Casts.toCharSequence(Casts.java:221)
	at org.clank.support.Casts.toJavaString(Casts.java:217)
	at org.netbeans.modules.cnd.apt.impl.support.clank.ClankPPCallback$ClankMacroDirectiveWrapper.getFileOwnerNameImpl(ClankPPCallback.java:607)
	at org.netbeans.modules.cnd.apt.impl.support.clank.ClankPPCallback$ClankMacroDirectiveWrapper.<init>(ClankPPCallback.java:540)
	at org.netbeans.modules.cnd.apt.impl.support.clank.ClankPPCallback$ClankMacroDirectiveWrapper.create(ClankPPCallback.java:515)
	at org.netbeans.modules.cnd.apt.impl.support.clank.ClankPPCallback$ClankFileInfoWrapper.prepareConvertedMacroExpansions(ClankPPCallback.java:750)
	at org.netbeans.modules.cnd.apt.impl.support.clank.ClankPPCallback$ClankFileInfoWrapper.prepareCaches(ClankPPCallback.java:917)
	at org.netbeans.modules.cnd.apt.impl.support.clank.ClankPPCallback$ClankFileInfoWrapper.prepareCachesIfPossible(ClankPPCallback.java:909)
	at org.netbeans.modules.cnd.apt.support.ClankDriver.extractPreparedCachedTokenStream(ClankDriver.java:92)
	at org.netbeans.modules.cnd.modelimpl.parser.clank.ClankTokenStreamProducer$FileTokenStreamCallback.onExit(ClankTokenStreamProducer.java:358)
	at org.netbeans.modules.cnd.apt.impl.support.clank.ClankPPCallback.onExit(ClankPPCallback.java:375)
	at org.clang.tools.services.support.FileInfoCallback.FileExitImpl(FileInfoCallback.java:749)
	at org.clang.tools.services.support.FileInfoCallback.EndOfMainFile(FileInfoCallback.java:325)
	at org.clang.lex.Preprocessor.EndSourceFile(Preprocessor.java:2070)
	at org.clang.tools.services.impl.PreprocessorSupport.ConsumePreprocessedInput(PreprocessorSupport.java:409)
	at org.clang.tools.services.impl.PreprocessorSupport.dumpPreprocessedEntry(PreprocessorSupport.java:285)
	at org.clang.tools.services.impl.PreprocessorSupport.preprocessEntries(PreprocessorSupport.java:214)
	... 30 more
Comment 1 Vladimir Kvashin 2015-09-03 11:56:15 UTC
workaround that seems to work:
test.run.args=-Dapt.always.use.filesystem=true
Comment 2 Vladimir Kvashin 2015-09-03 13:18:06 UTC
As I understand, running IDE with 
-J-Dorg.clank.trace_memory=true 
might help localizing the problem
Comment 3 Vladimir Voskresensky 2015-09-04 14:09:43 UTC
any time opening file /var/tmp/alsimon-cnd-test-downloads/pkg-config-0.25/glib-1.2.10/garray.c of parsed pkg-config project I see this issue
Comment 4 Vladimir Voskresensky 2015-09-04 14:17:56 UTC
The issue is the pointer returned from SrcMgr.getBufferName(Loc) - underlying Slab is already cleaned
Comment 5 Vladimir Voskresensky 2015-09-04 18:21:17 UTC
The issue was with name's of MemoryBufferMMapFile - they are copied in native while were passed as reference (which is destroyed later) in Java
Comment 6 Vladimir Voskresensky 2015-09-04 18:54:23 UTC
http://hg.netbeans.org/cnd-main/rev/5fb562071bab
Comment 7 Quality Engineering 2015-09-06 05:07:55 UTC
Integrated into 'main-silver', will be available in build *201509060314* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)

Changeset: http://hg.netbeans.org/main-silver/rev/5fb562071bab
User: Vladimir Voskresensky <vv159170@netbeans.org>
Log: update binaries
- fixed #254962 - [newcodemodel] Code model uses dead objects (java.lang.ArrayIndexOutOfBoundsException: 4096)
and hopefully
- fixed #253714 - [newcodemodel] lack of watchers