Anyone understand the logic of pushJavaStackFrames

Alan Ruttenberg alanruttenberg at gmail.com
Sat Dec 31 19:37:15 UTC 2016


I'm getting backtraces that are noisy and therefore impede comprehension.

For example, in the following stack trace, frames 68-4 seem to
recapitulate, for the most part, the java stack corresponding to frames
87-69

Thanks,
Alan


The value CL-UTILS::FORMS is not of type LIST.
   [Condition of type TYPE-ERROR]

Restarts:
 0: [RETRY] Retry compiling #<ASDF/LISP-ACTION:CL-SOURCE-FILE "jnil"
"cl-utils">.
 1: [ACCEPT] Continue, treating compiling #<ASDF/LISP-ACTION:CL-SOURCE-FILE
"jnil" "cl-utils"> as having been successful.
 2: [RETRY] Retry ASDF operation.
 3: [CLEAR-CONFIGURATION-AND-RETRY] Retry ASDF operation after resetting
the configuration.
 4: [ABORT] Abort compilation.
 5: [*ABORT] Return to SLIME's top level.
 --more--

Backtrace:
  0: (#<LOCAL-FUNCTION IN MAKE-INVOKE-DEBUGGER-HOOK {5108C7A9}>
#<TYPE-ERROR {D3CDE50}> #<LOCAL-FUNCTION IN MAKE-INVOKE-DEBUGGER-HOOK
{5108C7A9}>)
  1: (APPLY #<LOCAL-FUNCTION IN MAKE-INVOKE-DEBUGGER-HOOK {5108C7A9}>
(#<TYPE-ERROR {D3CDE50}> #<LOCAL-FUNCTION IN MAKE-INVOKE-DEBUGGER-HOOK
{5108C7A9}>))
  2: (SYSTEM::RUN-HOOK SYSTEM::*INVOKE-DEBUGGER-HOOK* #<TYPE-ERROR
{D3CDE50}> #<LOCAL-FUNCTION IN MAKE-INVOKE-DEBUGGER-HOOK {5108C7A9}>)
  3: (INVOKE-DEBUGGER #<TYPE-ERROR {D3CDE50}>)
  4: org.armedbear.lisp.Lisp.error(Lisp.java:382)
  5: org.armedbear.lisp.Lisp.type_error(Lisp.java:435)
  6: org.armedbear.lisp.LispObject.car(LispObject.java:165)
  7: org.armedbear.lisp.precompiler_51.execute(precompiler.lisp:381)
  8: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
  9: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 10: org.armedbear.lisp.precompiler_48.execute(precompiler.lisp:350)
 11: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 12: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 13: org.armedbear.lisp.precompiler_51.execute(precompiler.lisp:381)
 14: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 15: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 16: org.armedbear.lisp.precompiler_48.execute(precompiler.lisp:350)
 17: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 18: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 19: org.armedbear.lisp.precompiler_51.execute(precompiler.lisp:381)
 20: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 21: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 22: org.armedbear.lisp.precompiler_48.execute(precompiler.lisp:350)
 23: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 24: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 25: org.armedbear.lisp.precompiler_51.execute(precompiler.lisp:381)
 26: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 27: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 28: org.armedbear.lisp.precompiler_48.execute(precompiler.lisp:350)
 29: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 30: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 31: org.armedbear.lisp.precompiler_51.execute(precompiler.lisp:381)
 32: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 33: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 34: org.armedbear.lisp.precompiler_48.execute(precompiler.lisp:350)
 35: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 36: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 37: org.armedbear.lisp.precompiler_73.execute(precompiler.lisp:643)
 38: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 39: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 40: org.armedbear.lisp.precompiler_48.execute(precompiler.lisp:350)
 41: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 42: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 43: org.armedbear.lisp.precompiler_105.execute(precompiler.lisp:988)
 44: org.armedbear.lisp.CompiledClosure.execute(CompiledClosure.java:121)
 45: org.armedbear.lisp.Symbol.execute(Symbol.java:826)
 46: org.armedbear.lisp.compiler_pass2_362.execute(compiler-pass2.lisp:7380)
 47: org.armedbear.lisp.Symbol.execute(Symbol.java:867)
 48: org.armedbear.lisp.LispThread.execute(LispThread.java:918)
 49: org.armedbear.lisp.compile_file_19.execute(compile-file.lisp:175)
 50: org.armedbear.lisp.Symbol.execute(Symbol.java:814)
 51: org.armedbear.lisp.LispThread.execute(LispThread.java:832)
 52: org.armedbear.lisp.compile_file_51.execute(compile-file.lisp:655)
 53: org.armedbear.lisp.Symbol.execute(Symbol.java:826)
 54: org.armedbear.lisp.LispThread.execute(LispThread.java:851)
 55: org.armedbear.lisp.compile_file_59.execute(compile-file.lisp:780)
 56: org.armedbear.lisp.compiler_pass2_370.execute(compiler-pass2.lisp:7450)
 57: org.armedbear.lisp.CompiledClosure.execute(CompiledClosure.java:98)
 58: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
 59: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
 60: org.armedbear.lisp.compile_file_57.execute(compile-file.lisp:780)
 61: org.armedbear.lisp.Symbol.execute(Symbol.java:914)
 62: org.armedbear.lisp.LispThread.execute(LispThread.java:986)
 63: org.armedbear.lisp.compile_file_68.execute(compile-file.lisp:962)
 64: org.armedbear.lisp.CompiledClosure.execute(CompiledClosure.java:150)
 65: org.armedbear.lisp.Symbol.execute(Symbol.java:852)
 66: org.armedbear.lisp.LispThread.execute(LispThread.java:894)
 67: org.armedbear.lisp.Lisp.funcall(Lisp.java:180)
 68: org.armedbear.lisp.Primitives$pf_apply.execute(Primitives.java:2845)
 69: (PRECOMPILER::PRECOMPILE-FUNCTION-CALL (CL-UTILS::KEY .
CL-UTILS::FORMS))
 70: (PRECOMPILER::PRECOMPILE1 (CL-UTILS::KEY . CL-UTILS::FORMS))
 71: (PRECOMPILER::PRECOMPILE-FUNCTION-CALL (CL-UTILS::LOOP CL-UTILS::FOR
(CL-UTILS::KEY . CL-UTILS::FORMS) CL-UTILS::IN CL-UTILS::CLAUSES
CL-UTILS::DO ...))
 72: (PRECOMPILER::PRECOMPILE1 (CL-UTILS::LOOP CL-UTILS::FOR (CL-UTILS::KEY
. CL-UTILS::FORMS) CL-UTILS::IN CL-UTILS::CLAUSES CL-UTILS::DO ...))
 73: (PRECOMPILER::PRECOMPILE-FUNCTION-CALL (CL-UTILS::LET
((CL-UTILS::CLAUSE-COLLECTION (CL-UTILS::LIST))) ..))
 74: (PRECOMPILER::PRECOMPILE1 (CL-UTILS::LET ((CL-UTILS::CLAUSE-COLLECTION
(CL-UTILS::LIST))) ..))
 75: (PRECOMPILER::PRECOMPILE-FUNCTION-CALL (CL-UTILS::WITH-GENSYMS
(CL-UTILS::TEST) ..))
 76: (PRECOMPILER::PRECOMPILE1 (CL-UTILS::WITH-GENSYMS (CL-UTILS::TEST) ..))
 77: (PRECOMPILER::PRECOMPILE-FUNCTION-CALL (CL-UTILS::DEFMACRO
CL-UTILS::CASE* (CL-UTILS::KEYFORM CL-UTILS::&REST CL-UTILS::CLAUSES) ..))
 78: (PRECOMPILER::PRECOMPILE1 (CL-UTILS::DEFMACRO CL-UTILS::CASE*
(CL-UTILS::KEYFORM CL-UTILS::&REST CL-UTILS::CLAUSES) ..))
 79: (PRECOMPILER::PRECOMPILE-LAMBDA (LAMBDA NIL ..))
 80: (PRECOMPILER::PRECOMPILE1 (LAMBDA NIL (CL-UTILS::DEFMACRO
CL-UTILS::CASE* (CL-UTILS::KEYFORM CL-UTILS::&REST CL-UTILS::CLAUSES)
(CL-UTILS::WITH-GENSYMS (CL-UTILS::TEST) (CL-UTILS::LET # # #)))))
 81: (JVM:COMPILE-DEFUN NIL (LAMBDA NIL (CL-UTILS::DEFMACRO CL-UTILS::CASE*
(CL-UTILS::KEYFORM CL-UTILS::&REST CL-UTILS::CLAUSES)
(CL-UTILS::WITH-GENSYMS (CL-UTILS::TEST) (CL-UTILS::LET # # #)))) NIL
#P"/U..
 82: (SYSTEM::CONVERT-TOPLEVEL-FORM (CL-UTILS::DEFMACRO CL-UTILS::CASE*
(CL-UTILS::KEYFORM CL-UTILS::&REST CL-UTILS::CLAUSES) ..) NIL)
 83: (SYSTEM::PROCESS-TOPLEVEL-FORM (CL-UTILS::DEFMACRO CL-UTILS::CASE*
(CL-UTILS::KEYFORM CL-UTILS::&REST CL-UTILS::CLAUSES) ..) #<FILE-STREAM
{1773B7E}> NIL)
 84: (JVM::%WITH-COMPILATION-UNIT #<LOCAL-FUNCTION IN COMPILE-FROM-STREAM
{1FEBE62E}>)
 85: (SYSTEM::COMPILE-FROM-STREAM #<FILE-STREAM {744E75DD}>
#P"/Users/lori/.cache/common-lisp/abcl-1.5.0-dev-fasl43-macosx-x64/Volumes/upstairs/repos/jnil/lisp/jnil/cl-utils-tmpUYPFRO0B.abcl"
#P"/Users/lor..
 86: (COMPILE-FILE #P"/Volumes/upstairs/repos/jnil/lisp/jnil/cl-utils.lisp"
:OUTPUT-FILE
#P"/Users/lori/.cache/common-lisp/abcl-1.5.0-dev-fasl43-macosx-x64/Volumes/upstairs/repos/jnil/lisp/jnil/cl-utils-tm..
 87: (APPLY COMPILE-FILE
#P"/Volumes/upstairs/repos/jnil/lisp/jnil/cl-utils.lisp" :OUTPUT-FILE
#P"/Users/lori/.cache/common-lisp/abcl-1.5.0-dev-fasl43-macosx-x64/Volumes/upstairs/repos/jnil/lisp/jnil/cl-ut..





  private static final void pushJavaStackFrames()
  {
      final LispThread thread = LispThread.currentThread();
      final StackTraceElement[] frames = thread.getJavaStackTrace();

      // frames[0] java.lang.Thread.getStackTrace
      // frames[1] org.armedbear.lisp.LispThread.getJavaStackTrace
      // frames[2] org.armedbear.lisp.Lisp.pushJavaStackFrames

      if (frames.length > 5
        && frames[3].getClassName().equals("org.armedbear.lisp.Lisp")
        && frames[3].getMethodName().equals("error")
        && frames[4].getClassName().startsWith("org.armedbear.lisp.Lisp")
        && frames[4].getMethodName().equals("eval")) {
          // Error condition arising from within Lisp.eval(), so no
          // Java stack frames should be visible to the consumer of the
stack abstraction
          return;
      }
      // Search for last Primitive in the StackTrace; that was the
      // last entry point from Lisp.
      int last = frames.length - 1;
      for (int i = 0; i<= last; i++) {
          if
(frames[i].getClassName().startsWith("org.armedbear.lisp.Primitive"))
            last = i;
      }
      // Do not include the first three frames which, as noted above,
constitute
      // the invocation of this method.
      while (last > 2) {
        thread.pushStackFrame(new JavaStackFrame(frames[last]));
        last--;
      }
  }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/armedbear-devel/attachments/20161231/de1f0064/attachment.html>


More information about the armedbear-devel mailing list