bugKawa - Bugs: bug #40649, NPE in inline-compiler for CallCC

 
 

bug #40649: NPE in inline-compiler for CallCC

Submitter:  John Tobey <jtobey>
Submitted:  Wed 20 Nov 2013 05:46:08 PM UTC
   
 
Category:  Code generation Severity:  3 - Normal
Item Group:  Compile-time exception Status:  Fixed
Privacy:  Public Assigned to:  bothner
Open/Closed:  Closed
* Mandatory Fields

Add a New Comment Rich Markup
   

Wed 27 Nov 2013 03:31:15 PM UTC, comment #5: 

OK, thanks.  This test case passes, but my original program still gives the following stack trace.  I will whittle it down and post another bug.


     [java] /home/heather/jtobey/Sched/src/jt/stepfn.scm:139:25: caught exception in inline-compiler for #<procedure +> - java.lang.NullPointerException
     [java]     gnu.expr.LambdaExp.addMethodFor(LambdaExp.java:975)
     [java]     gnu.expr.LambdaExp.addMethodFor(LambdaExp.java:873)
     [java]     gnu.expr.LambdaExp.allocMethod(LambdaExp.java:1276)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:226)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:132)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:127)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:409)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:137)
     [java]     gnu.kawa.functions.CompileArith.compile(CompileArith.java:160)
     [java]     gnu.expr.ApplyExp.inlineCompile(ApplyExp.java:624)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:196)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:132)
     [java]     gnu.expr.Expression.compile(Expression.java:176)
     [java]     gnu.expr.SetExp.compile(SetExp.java:303)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:127)
     [java]     gnu.expr.BeginExp.compile(BeginExp.java:145)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:127)
     [java]     gnu.expr.IfExp.compile(IfExp.java:137)
     [java]     gnu.expr.IfExp.compile(IfExp.java:52)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:130)
     [java]     gnu.expr.IfExp.compile(IfExp.java:137)
     [java]     gnu.expr.IfExp.compile(IfExp.java:52)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:142)
     [java]     gnu.expr.LambdaExp.compileBody(LambdaExp.java:1730)
     [java]     gnu.expr.LambdaExp.compileAsMethod(LambdaExp.java:1706)
     [java]     gnu.expr.LambdaExp.compileSetField(LambdaExp.java:720)
     [java]     gnu.expr.LambdaExp.compile(LambdaExp.java:820)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:127)
     [java]     gnu.expr.LetExp.compile(LetExp.java:163)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:127)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:335)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:132)
     [java]     gnu.kawa.functions.CompileMisc.compileCallCC(CompileMisc.java:598)
     [java]     gnu.kawa.functions.CallCC.compile(CallCC.java:63)
     [java]     gnu.expr.ApplyExp.inlineCompile(ApplyExp.java:624)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:196)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:132)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:127)
     [java]     gnu.expr.BeginExp.compile(BeginExp.java:145)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:127)
     [java]     gnu.expr.LetExp.compile(LetExp.java:193)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:142)
     [java]     gnu.expr.LambdaExp.compileBody(LambdaExp.java:1730)
     [java]     gnu.expr.LambdaExp.compileAsMethod(LambdaExp.java:1706)
     [java]     gnu.expr.LambdaExp.compileSetField(LambdaExp.java:720)
     [java]     gnu.expr.LambdaExp.compile(LambdaExp.java:820)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:127)
     [java]     gnu.expr.LetExp.compile(LetExp.java:163)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:127)
     [java]     gnu.expr.LetExp.compile(LetExp.java:193)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:142)
     [java]     gnu.expr.LambdaExp.compileBody(LambdaExp.java:1730)
     [java]     gnu.expr.LambdaExp.compileAsMethod(LambdaExp.java:1706)
     [java]     gnu.expr.LambdaExp.compile(LambdaExp.java:814)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:130)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:409)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:132)
     [java]     gnu.expr.Expression.compile(Expression.java:176)
     [java]     gnu.expr.SetExp.compile(SetExp.java:303)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:130)
     [java]     gnu.kawa.functions.AppendValues.compile(AppendValues.java:43)
     [java]     gnu.expr.ApplyExp.inlineCompile(ApplyExp.java:624)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:196)
     [java]     gnu.expr.ApplyExp.compile(ApplyExp.java:132)
     [java]     gnu.expr.Expression.compileNotePosition(Expression.java:156)
     [java]     gnu.expr.Expression.compileWithPosition(Expression.java:142)
     [java]     gnu.expr.LambdaExp.compileBody(LambdaExp.java:1730)
     [java]     gnu.expr.Compilation.generateBytecode(Compilation.java:2095)
     [java]     gnu.expr.Compilation.process(Compilation.java:1972)
     [java]     gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:305)
     [java]     gnu.expr.ModuleExp.evalToClass(ModuleExp.java:59)
     [java]     gnu.expr.ModuleExp.evalModule1(ModuleExp.java:251)
     [java]     kawa.Shell.compileSource(Shell.java:519)
     [java]     kawa.Shell.runFile(Shell.java:487)
     [java]     kawa.Shell.runFileOrClass(Shell.java:420)
     [java]     kawa.repl.main(repl.java:862)


John Tobey <jtobey>
Wed 27 Nov 2013 08:21:33 AM UTC, comment #4: 

I checked in a fix so Kawa should no longer require Java 7.

Per Bothner <bothner>
Group administrator
Wed 27 Nov 2013 07:33:22 AM UTC, comment #3: 

"Thanks! I will try it when I get to my Java 7 system, since Kawa seems to require it now."

Oops.  That's a bug.

Per Bothner <bothner>
Group administrator
Wed 27 Nov 2013 07:16:49 AM UTC, comment #2: 

Thanks!  I will try it when I get to my Java 7 system, since Kawa seems to require it now:


make[1]: Entering directory `/home/heather/jtobey/src/kawa/gnu/mapping'
javac -d ../.. -classpath "../..:./../..:$CLASSPATH" -g BinaryOutPort.java InPort.java OutPort.java
BinaryOutPort.java:5: cannot find symbol
symbol  : class StandardCharsets
location: package java.nio.charset
import java.nio.charset.StandardCharsets;
                       ^
BinaryOutPort.java:63: package StandardCharsets does not exist


John Tobey <jtobey>
Wed 27 Nov 2013 03:30:49 AM UTC, comment #1: 

I checked in a fix, and the testcase (thanks!).

This was a problem in inlining - it worked if I disabled an optimization.

Per Bothner <bothner>
Group administrator
Wed 20 Nov 2013 05:46:08 PM UTC, original submission:  

bug.scm

(define (f1 f2) (f2))
(define (f x)
  (call-with-current-continuation
   (lambda (k)
     (define (f3) x)
     (f1 f3))))



$ kawa -C bug.scm
(compiling bug.scm to bug)
bug.scm:6:10: caught exception in inline-compiler for #<procedure gnu.kawa.functions.CallCC> - java.lang.NullPointerException
    gnu.expr.LambdaExp.loadHeapFrame(LambdaExp.java:575)
    gnu.expr.Declaration.loadOwningObject(Declaration.java:258)
    gnu.expr.Declaration.load(Declaration.java:355)
    gnu.expr.ReferenceExp.compile(ReferenceExp.java:169)
    gnu.expr.Expression.compileNotePosition(Expression.java:156)
    gnu.expr.PrimProcedure.compileArgs(PrimProcedure.java:591)
    gnu.expr.PrimProcedure.compile(PrimProcedure.java:710)
    gnu.expr.ApplyExp.compile(ApplyExp.java:254)
    gnu.expr.ApplyExp.compile(ApplyExp.java:132)
    gnu.expr.Expression.compileNotePosition(Expression.java:156)
    gnu.expr.Expression.compileWithPosition(Expression.java:127)
    gnu.expr.BeginExp.compile(BeginExp.java:153)
    gnu.expr.Expression.compileNotePosition(Expression.java:156)
    gnu.expr.Expression.compileWithPosition(Expression.java:127)
    gnu.expr.LetExp.compile(LetExp.java:193)
    gnu.kawa.functions.CompileMisc.compileCallCC(CompileMisc.java:584)
    gnu.kawa.functions.CallCC.compile(CallCC.java:63)
    gnu.expr.ApplyExp.inlineCompile(ApplyExp.java:624)
    gnu.expr.ApplyExp.compile(ApplyExp.java:196)
    gnu.expr.ApplyExp.compile(ApplyExp.java:132)
    gnu.expr.Expression.compileNotePosition(Expression.java:156)
    gnu.expr.Expression.compileWithPosition(Expression.java:142)
    gnu.expr.LambdaExp.compileBody(LambdaExp.java:1730)
    gnu.expr.LambdaExp.compileAsMethod(LambdaExp.java:1706)
    gnu.expr.LambdaExp.compileSetField(LambdaExp.java:720)
    gnu.expr.SetExp.compile(SetExp.java:170)
    gnu.expr.Expression.compileNotePosition(Expression.java:156)
    gnu.expr.Expression.compileWithPosition(Expression.java:127)
    gnu.kawa.functions.AppendValues.compile(AppendValues.java:43)
    gnu.expr.ApplyExp.inlineCompile(ApplyExp.java:624)
    gnu.expr.ApplyExp.compile(ApplyExp.java:196)
    gnu.expr.ApplyExp.compile(ApplyExp.java:132)
    gnu.expr.Expression.compileNotePosition(Expression.java:156)
    gnu.expr.Expression.compileWithPosition(Expression.java:142)
    gnu.expr.LambdaExp.compileBody(LambdaExp.java:1730)
    gnu.expr.Compilation.generateBytecode(Compilation.java:2096)
    gnu.expr.Compilation.process(Compilation.java:1973)
    gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:305)
    gnu.expr.ModuleInfo.loadByStages(ModuleInfo.java:290)
    kawa.repl.compileFiles(repl.java:804)
    kawa.repl.processArgs(repl.java:428)
    kawa.repl.main(repl.java:850)


Such a joy to work with an actively maintained project!

John Tobey <jtobey>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by bothner (Posted a comment)
  • -email is unavailable- added by jtobey (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only logged-in users can vote.

     

    Follow 3 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2013-11-27 bothner StatusNone Fixed
        Assigned toNone bothner
        Open/ClosedOpen Closed

    Back to the top

    Powered by Savane 3.13-bb6a.
    Corresponding source code