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
|