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 257133 - [newcodemodel] AssertionError: Cannot modify const object!
Summary: [newcodemodel] AssertionError: Cannot modify const object!
Status: VERIFIED FIXED
Alias: None
Product: cnd
Classification: Unclassified
Component: Code Model (show other bugs)
Version: 8.1
Hardware: All All
: P3 normal (vote)
Assignee: Vladimir Kvashin
URL:
Keywords:
: 257132 (view as bug list)
Depends on:
Blocks:
 
Reported: 2015-12-14 07:07 UTC by Vladimir Kvashin
Modified: 2016-02-01 09:37 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter: 221661


Attachments
stacktrace (6.44 KB, text/plain)
2015-12-14 07:07 UTC, Vladimir Kvashin
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Kvashin 2015-12-14 07:07:57 UTC
Build: NetBeans IDE 8.1 (Build 20151212-e2c7bc09ac51)
VM: Java HotSpot(TM) 64-Bit Server VM, 24.71-b01, Java(TM) SE Runtime Environment, 1.7.0_71-b14
OS: Linux

User Comments:
vkvashin: Opened a couple of simple test projects




Stacktrace: 
java.lang.AssertionError: Cannot modify const object!
   at org.clank.support.AbstractArrayPointerType.$preDec(AbstractArrayPointerType.java:58)
   at org.clank.support.AbstractArrayPointerType.$preDec(AbstractArrayPointerType.java:18)
   at org.clang.lex.StringLiteralParser.init(StringLiteralParser.java:506)
   at org.clang.lex.StringLiteralParser.<init>(StringLiteralParser.java:133)
   at org.clang.lex.StringLiteralParser.<init>(StringLiteralParser.java:112)
   at org.clang.lex.Preprocessor.FinishLexStringLiteral(Preprocessor.java:2493)
Comment 1 Vladimir Kvashin 2015-12-14 07:07:58 UTC
Created attachment 157779 [details]
stacktrace
Comment 2 Vladimir Kvashin 2015-12-14 07:09:07 UTC
*** Bug 257132 has been marked as a duplicate of this bug. ***
Comment 3 Vladimir Kvashin 2015-12-14 10:29:34 UTC
The code that produces assertion is
      // Strip the end quote.
      ThisTokEnd.$preDec();
in StringLiteralParser.init

What is strange about that I pass the same line in tye following stack and the pointer is NOT const:

"Code Model Parser 1: ONE FILE Reparsing /home/vkvashin/NetBeansProjects/iz_256626/iz_256626.c"
	at org.clang.lex.StringLiteralParser.init(StringLiteralParser.java:506)
	at org.clang.lex.StringLiteralParser.<init>(StringLiteralParser.java:133)
	at org.clang.lex.StringLiteralParser.<init>(StringLiteralParser.java:112)
	at org.clang.lex.Preprocessor.HandleDigitDirective(Preprocessor.java:7494)
	at org.clang.lex.Preprocessor.HandleDirective(Preprocessor.java:4256)
	at org.clang.lex.Lexer.LexTokenInternal(Lexer.java:2798)
	at org.clang.lex.Lexer.Lex(Lexer.java:378)
	at org.clang.lex.Preprocessor.Lex(Preprocessor.java:2367)
	at org.clang.tools.services.impl.PreprocessorSupport.ConsumePreprocessedInput(PreprocessorSupport.java:386)
	at org.clang.tools.services.impl.PreprocessorSupport.dumpPreprocessedEntry(PreprocessorSupport.java:296)
	at org.clang.tools.services.impl.PreprocessorSupport.preprocessEntries(PreprocessorSupport.java:233)
	at org.clang.tools.services.impl.PreprocessorSupport.preprocess(PreprocessorSupport.java:176)
	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:120)
	at org.netbeans.modules.cnd.modelimpl.parser.clank.ClankTokenStreamProducer.preprocessWithHandler(ClankTokenStreamProducer.java:297)
	at org.netbeans.modules.cnd.modelimpl.parser.clank.ClankTokenStreamProducer.getPreprocessorOutputForInterestedFile(ClankTokenStreamProducer.java:273)
	at org.netbeans.modules.cnd.modelimpl.parser.clank.ClankTokenStreamProducer.preprocessAndGetFileTokenStream(ClankTokenStreamProducer.java:231)
	at org.netbeans.modules.cnd.modelimpl.parser.clank.ClankTokenStreamProducer.getTokenStreamForParsingAndCaching(ClankTokenStreamProducer.java:180)
	at org.netbeans.modules.cnd.modelimpl.csm.core.FileImpl.doParse(FileImpl.java:1509)
	at org.netbeans.modules.cnd.modelimpl.csm.core.FileImpl._reparse(FileImpl.java:997)
	at org.netbeans.modules.cnd.modelimpl.csm.core.FileImpl.ensureParsedImpl(FileImpl.java:784)
	at org.netbeans.modules.cnd.modelimpl.csm.core.FileImpl.ensureParsed(FileImpl.java:641)
	at org.netbeans.modules.cnd.modelimpl.csm.core.ParserThread._run(ParserThread.java:148)
	at org.netbeans.modules.cnd.modelimpl.csm.core.ParserThread.run(ParserThread.java:74)
	at org.netbeans.modules.cnd.modelimpl.csm.core.ParserThreadManager$Wrapper.run(ParserThreadManager.java:92)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1443)
	at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:68)
	at org.openide.util.lookup.Lookups.executeWith(Lookups.java:303)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2058)
Comment 4 Vladimir Kvashin 2015-12-14 10:35:18 UTC
to reproduce, get the file with the following line and a space after unclosed qupte:

#pragma message "
Comment 5 Vladimir Kvashin 2015-12-14 17:44:23 UTC
fixed in sputnik:
2ab996cff41d
Comment 6 Vladimir Kvashin 2015-12-15 12:53:37 UTC
The fix was incomplete.
If the line has trailing spaces, this leads to 
java.lang.ArrayIndexOutOfBoundsException: 22
	at org.clank.support.aliases.char$ptr$array.$at(char$ptr$array.java:76)
	at org.clang.lex.StringLiteralParser.init(StringLiteralParser.java:569)
	at org.clang.lex.StringLiteralParser.<init>(StringLiteralParser.java:133)
	at org.clang.lex.StringLiteralParser.<init>(StringLiteralParser.java:112)
	at org.clang.lex.Preprocessor.FinishLexStringLiteral(Preprocessor.java:2493)
	at org.clang.lex.impl.PragmaStatics$PragmaMessageHandler.HandlePragma(PragmaStatics.java:413)
	at org.clang.lex.PragmaNamespace.HandlePragma(PragmaNamespace.java:146)
	at org.clang.lex.Preprocessor.HandlePragmaDirective(Preprocessor.java:8825)
	at org.clang.lex.Preprocessor.HandleDirective(Preprocessor.java:4316)
	at org.clang.lex.Lexer.LexTokenInternal(Lexer.java:2798)
	at org.clang.lex.Lexer.Lex(Lexer.java:378)
	at org.clang.lex.Preprocessor.Lex(Preprocessor.java:2367)
	at org.clang.tools.services.impl.PreprocessorSupport.ConsumePreprocessedInput(PreprocessorSupport.java:386)
...
Comment 7 Vladimir Kvashin 2015-12-15 17:17:26 UTC
Additional fix in sputnik (and test):
  c5512799b618
not closing as the binaries are not updated yet
Comment 8 Vladimir Kvashin 2015-12-17 19:58:06 UTC
Binaries update:
  ecc4c9530fa7
Comment 9 Quality Engineering 2015-12-22 02:27:48 UTC
Integrated into 'main-silver', will be available in build *201512220002* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)

Changeset: http://hg.netbeans.org/main-silver/rev/f71f4a88985a
User: Vladimir Kvashin <vkvashin@netbeans.org>
Log: updated binaries after fixing #256628, #257133 and  #256629 (Bug 256628 - [newcodemodel] AssertionError: Invalid token lexed. #57133 - [newcodemodel] AssertionError: Cannot modify const object! and #Bug 256629 - [newcodemodel] StringIndexOutOfBoundsException: String index out of range: -8)
(transplanted from ecc4c9530fa77a51bd0c0ac1c32ec8a993aaf4b1)
Comment 10 ilia 2016-01-27 14:52:27 UTC
  Fixes of this bug:
    http://hg.netbeans.org/releases/rev/ecc4c9530fa7
Comment 11 soldatov 2016-02-01 09:37:32 UTC
Verified in NetBeans IDE 8.1 (Build 201601300101)