Download Firefox: WindowsMac OS X
logo       
Google Custom Search
    AddThis Social Bookmark Button

Error loading heap from jar: msg#00000

Subject: Error loading heap from jar
Greetings,

I'm getting a NullPointerException when SISC loads its heap from a  
jar file (this is within Tomcat).

The stack trace is below.  This is using the CVS HEAD as of 30-or-so  
minutes ago.  I'm using the default heap, loaded using the defaults- 
for-everything interface.

Though I'm not sure it's relevant, the code calling this is:

         Object o = Context.execute
             (new SchemeCaller() {
                  public Object execute(Interpreter i)
                          throws SchemeException {
                      try {
                          return i.eval(expr);
                      } catch (IOException e) {
                          return e;
                      }
                  }
              });

where the 'expr' is

"(with/fc (lambda (m e) (define (show-err r) (let ((parent (error- 
parent-error r))) (format #f \"Error at ~a: ~a~a\" (error-location r)  
(error-message r) (if parent (string-append \" :-- \" (show-err  
parent)) \"\")))) (show-err m)) (lambda () (load \"" + loadFile +  
"\") #t))"

and loadFile is .scm code.

This works OK in 1.13.5.

Bizarrely, this also fails in 1.13.7, with a different stack trace  
(also below).  This is bizarre since the only diffs between r1_13_5  
and r1_13_7 are the fixes to the comparing-null-lists bug, in src/ 
sisc/data/Nothing.java and src/sisc/data/EmptyList.java, plus a  
couple of minor changes in SRFIs (I haven't forgotten that I'm  
supposed to be reviewing the accumulated srfi-19 changes).  It's not  
obvious to me how they'd have such an effect (I have, by the way,  
remembered to extract sisc-heap.jar using scheme-src/build-heapjar.scm).

I'm rather up against a deadline this week (I really _must_ get  
started on that poster!), but if you think a further reduction would  
be useful I can try to produce one.

All the best,

Norman



SISC HEAD stack trace:

java.lang.NullPointerException
         sisc.util.FreeReference.hashCode(FreeReference.java:88)
         sisc.exprs.FreeReferenceExp.hashCode(FreeReferenceExp.java:68)
         java.util.HashMap.hash(HashMap.java:264)
         java.util.HashMap.put(HashMap.java:382)
         sisc.data.Expression.deserializeAnnotations(Expression.java:86)
         sisc.ser.SLL2Deserializer.initializeExpression 
(SLL2Deserializer.java:101)
         sisc.ser.SLL2Deserializer.deserLoop(SLL2Deserializer.java:95)
         sisc.ser.SLL2Deserializer.deserializeDetails 
(SLL2Deserializer.java:43)
         sisc.ser.SLL2Deserializer.readExpression 
(SLL2Deserializer.java:71)
         sisc.ser.BlockDeserializer.skipReadObject 
(BlockDeserializer.java:38)
         sisc.ser.SLL2Deserializer.readExpression 
(SLL2Deserializer.java:54)
         sisc.ser.SLL2Deserializer.readExpression 
(SLL2Deserializer.java:20)
         sisc.exprs.FillRibExp.deserialize(FillRibExp.java:75)
         sisc.ser.SLL2Deserializer.initializeExpression 
(SLL2Deserializer.java:100)
         sisc.ser.SLL2Deserializer.deserLoop(SLL2Deserializer.java:95)
         sisc.ser.SLL2Deserializer.deserializeDetails 
(SLL2Deserializer.java:43)
         sisc.ser.SLL2Deserializer.readExpression 
(SLL2Deserializer.java:71)
         sisc.ser.BlockDeserializer.skipReadObject 
(BlockDeserializer.java:38)
         sisc.ser.SLL2Deserializer.readExpression 
(SLL2Deserializer.java:54)
         sisc.ser.SLL2Deserializer.readExpression 
(SLL2Deserializer.java:20)
         sisc.ser.SLL2Deserializer.readSymbolicEnvironment 
(SLL2Deserializer.java:107)
         sisc.env.MemorySymEnv.deserializeSidecar(MemorySymEnv.java:219)
         sisc.ser.LibraryAE.deserialize(LibraryAE.java:172)
         sisc.ser.SLL2Deserializer.initializeExpression 
(SLL2Deserializer.java:100)
         sisc.ser.SLL2Deserializer.deserLoop(SLL2Deserializer.java:95)
         sisc.ser.SLL2Deserializer.deserializeDetails 
(SLL2Deserializer.java:43)
         sisc.ser.SLL2Deserializer.readExpression 
(SLL2Deserializer.java:71)
         sisc.ser.BlockDeserializer.skipReadObject 
(BlockDeserializer.java:38)
         sisc.ser.SLL2Deserializer.readExpression 
(SLL2Deserializer.java:54)
         sisc.ser.SLL2Deserializer.readExpression 
(SLL2Deserializer.java:20)
         sisc.ser.SLL2Deserializer.deser(SLL2Deserializer.java:87)
         sisc.ser.BlockDeserializer.fetchShared 
(BlockDeserializer.java:54)
         sisc.ser.Library.getExpression(Library.java:92)
         sisc.ser.LibraryAE.getLoc(LibraryAE.java:130)
         sisc.env.MemorySymEnv.lookup(MemorySymEnv.java:151)
         sisc.interpreter.AppContext.lookupContextEnv(AppContext.java: 
106)
         sisc.interpreter.Interpreter.lookupContextEnv 
(Interpreter.java:400)
         sisc.interpreter.Interpreter.lookup(Interpreter.java:441)
         sisc.interpreter.Interpreter.eval(Interpreter.java:332)
         sisc.interpreter.Interpreter.evalInput(Interpreter.java:301)
         sisc.interpreter.Interpreter.eval(Interpreter.java:319)
         sisc.interpreter.AppContext.addHeap(AppContext.java:170)
         sisc.interpreter.AppContext.addDefaultHeap(AppContext.java:197)
         sisc.interpreter.Context.getDefaultAppContext(Context.java:131)
         sisc.interpreter.Context.execute(Context.java:263)
         org.eurovotech.quaestor.SchemeWrapper.eval 
(SchemeWrapper.java:96)
         org.eurovotech.quaestor.SchemeWrapper.load 
(SchemeWrapper.java:192)
         org.eurovotech.quaestor.SchemeWrapper.loadOnce 
(SchemeWrapper.java:223)
         org.eurovotech.quaestor.Quaestor.init(Quaestor.java:27)
         javax.servlet.GenericServlet.init(GenericServlet.java:211)
         org.apache.catalina.valves.ErrorReportValve.invoke 
(ErrorReportValve.java:105)
         org.apache.catalina.connector.CoyoteAdapter.service 
(CoyoteAdapter.java:148)
         org.apache.coyote.http11.Http11Processor.process 
(Http11Processor.java:869)
         org.apache.coyote.http11.Http11BaseProtocol 
$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
         org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket 
(PoolTcpEndpoint.java:527)
         org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt 
(LeaderFollowerWorkerThread.java:80)
         org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run 
(ThreadPool.java:684)
         java.lang.Thread.run(Thread.java:613)



SISC 1.13.7 stack trace:

java.lang.RuntimeException: Error loading heap!
         sisc.interpreter.AppContext.addDefaultHeap(Unknown Source)
         sisc.interpreter.Context.getDefaultAppContext(Unknown Source)
         sisc.interpreter.Context.execute(Unknown Source)
         org.eurovotech.quaestor.SchemeWrapper.eval 
(SchemeWrapper.java:96)
         org.eurovotech.quaestor.SchemeWrapper.load 
(SchemeWrapper.java:192)
         org.eurovotech.quaestor.SchemeWrapper.loadOnce 
(SchemeWrapper.java:223)
         org.eurovotech.quaestor.Quaestor.init(Quaestor.java:27)
         javax.servlet.GenericServlet.init(GenericServlet.java:211)
         org.apache.catalina.valves.ErrorReportValve.invoke 
(ErrorReportValve.java:105)
         org.apache.catalina.connector.CoyoteAdapter.service 
(CoyoteAdapter.java:148)
         org.apache.coyote.http11.Http11Processor.process 
(Http11Processor.java:869)
         org.apache.coyote.http11.Http11BaseProtocol 
$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
         org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket 
(PoolTcpEndpoint.java:527)
         org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt 
(LeaderFollowerWorkerThread.java:80)
         org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run 
(ThreadPool.java:684)
         java.lang.Thread.run(Thread.java:613)


-- 
------------------------------------------------------------------------ 
----
Norman Gray  /  http://nxg.me.uk
eurovotech.org  /  University of Leicester, UK


<Prev in Thread] Current Thread [Next in Thread>