armedbear-devel
Threads by month
- ----- 2025 -----
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
January 2017
- 10 participants
- 12 discussions
Here are some examples of new versus old stacktrace.
"!" means the frame was in the java exception stacktrace, but are no
longer present because the exception was caught
#### Generate error with: (#"new" 'bloh)
________________ New stacktrace
Java exception 'java.lang.ClassNotFoundException: BLOH'.
[Condition of type java-exception]
Restarts:
0: [retry] Retry SLIME REPL evaluation request.
1: [*abort] Return to SLIME's top level.
2: [abort] Abort thread.
Backtrace:
0: (invoke-debugger #<java:java-exception
java.lang.ClassNotFoundException: BLOH {5C19BF31}>)
1: org.armedbear.lisp.Lisp.error(Lisp.java:382)
2: ! java.net.URLClassLoader.findClass(URLClassLoader.java:381)
3: ! java.lang.ClassLoader.loadClass(ClassLoader.java:424)
4: ! org.armedbear.lisp.JavaClassLoader.loadClass(JavaClassLoader.java:60)
5: ! java.lang.Class.forName0(Native Method)
6: ! java.lang.Class.forName(Class.java:348)
7: ! java.lang.reflect.Method.invoke(Method.java:497)
8: (java:jstatic #<method public static java.lang.Class
java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader)
throws java.lang.ClassNotFoundException> "java.lang.Class" "BLOH" #<java.la
..
9: (jss:find-java-class "BLOH")
10: (#"new" common-lisp-user::bloh)
11: (#<anonymous-interpreted-function {7D30E302}> common-lisp-user::bloh)
12: (system::%eval (#"new" 'common-lisp-user::bloh))
13: (eval (#"new" 'common-lisp-user::bloh))
________________ Old stacktrace
Java exception 'java.lang.ClassNotFoundException: BLOH'.
[Condition of type java-exception]
Restarts:
0: [retry] Retry SLIME REPL evaluation request.
1: [*abort] Return to SLIME's top level.
2: [abort] Abort thread.
Backtrace:
0: (system:backtrace)
1: (system::new-backtrace #<java:java-exception
java.lang.ClassNotFoundException: BLOH {48D709DB}>)
2: (#<local-function in make-invoke-debugger-hook {FB48C75}>
#<java:java-exception java.lang.ClassNotFoundException: BLOH {48D709DB}>
#<local-function in make-invoke-debugger-hook {FB48C75}>)
3: (apply #<local-function in make-invoke-debugger-hook {FB48C75}>
(#<java:java-exception java.lang.ClassNotFoundException: BLOH {48D709DB}>
#<local-function in make-invoke-debugger-hook {FB48C75}>))
4: (system::run-hook system::*invoke-debugger-hook* #<java:java-exception
java.lang.ClassNotFoundException: BLOH {48D709DB}> #<local-function in
make-invoke-debugger-hook {FB48C75}>)
5: (invoke-debugger #<java:java-exception
java.lang.ClassNotFoundException: BLOH {48D709DB}>)
6: org.armedbear.lisp.Lisp.error(Lisp.java:382)
7: org.armedbear.lisp.Java.jstatic(Java.java:484)
8: org.armedbear.lisp.Java$pf_jstatic.execute(Java.java:510)
9: org.armedbear.lisp.Primitive.execute(Primitive.java:163)
10: (java:jstatic #<method public static java.lang.Class
java.lang.Class.forName(java.lang.String,boolean,java.lang.ClassLoader)
throws java.lang.ClassNotFoundException> "java.lang.Class" "BLOH" #<java.la
..
11: (jss:find-java-class "BLOH")
12: (#"new" common-lisp-user::bloh)
13: (#<anonymous-interpreted-function {641792AC}> common-lisp-user::bloh)
14: (system::%eval (#"new" 'common-lisp-user::bloh))
15: (eval (#"new" 'common-lisp-user::bloh))
################ Generate error with: (+ 1 nil)
________________ New stacktrace
The value nil is not of type number.
[Condition of type type-error]
Restarts:
0: [retry] Retry SLIME REPL evaluation request.
1: [*abort] Return to SLIME's top level.
2: [abort] Abort thread.
Backtrace:
0: (invoke-debugger #<type-error {4848F05A}>)
1: org.armedbear.lisp.Lisp.error(Lisp.java:382)
2: org.armedbear.lisp.Lisp.type_error(Lisp.java:435)
3: (+ 1 nil)
4: (system::%eval (+ 1 nil))
5: (eval (+ 1 nil))
________________ Old stacktrace
The value nil is not of type number.
[Condition of type type-error]
Restarts:
0: [retry] Retry SLIME REPL evaluation request.
1: [*abort] Return to SLIME's top level.
2: [abort] Abort thread.
Backtrace:
0: (system:backtrace)
1: (system::new-backtrace #<type-error {631F4DD}>)
2: (#<local-function in make-invoke-debugger-hook {FB48C75}> #<type-error
{631F4DD}> #<local-function in make-invoke-debugger-hook {FB48C75}>)
3: (apply #<local-function in make-invoke-debugger-hook {FB48C75}>
(#<type-error {631F4DD}> #<local-function in make-invoke-debugger-hook
{FB48C75}>))
4: (system::run-hook system::*invoke-debugger-hook* #<type-error
{631F4DD}> #<local-function in make-invoke-debugger-hook {FB48C75}>)
5: (invoke-debugger #<type-error {631F4DD}>)
6: org.armedbear.lisp.Lisp.error(Lisp.java:382)
7: org.armedbear.lisp.Lisp.type_error(Lisp.java:435)
8: org.armedbear.lisp.Fixnum.add(Fixnum.java:387)
9: org.armedbear.lisp.Primitives$pf_add.execute(Primitives.java:752)
10: (+ 1 nil)
11: (system::%eval (+ 1 nil))
12: (eval (+ 1 nil))
#### Generate error by typing #< then return into the slime repl
________________ New stacktrace
Illegal # macro character: #\<
[Condition of type reader-error]
Restarts:
0: [retry] Retry SLIME REPL evaluation request.
1: [*abort] Return to SLIME's top level.
2: [abort] Abort thread.
Backtrace:
0: (invoke-debugger #<reader-error {25D021FB}>)
1: (error #<reader-error {25D021FB}>)
2: org.armedbear.lisp.Lisp.error(Lisp.java:382)
3: org.armedbear.lisp.LispReader$22.execute(LispReader.java:350) =
#<function sharp-illegal {2EF7C108}>
4: org.armedbear.lisp.Stream.readDispatchChar(Stream.java:813)
5: org.armedbear.lisp.LispReader$6.execute(LispReader.java:130) =
#<function read-dispatch-char {153CFE29}>
6: org.armedbear.lisp.Stream.processChar(Stream.java:588)
7: org.armedbear.lisp.Stream.readPreservingWhitespace(Stream.java:557)
8: org.armedbear.lisp.Stream.readPreservingWhitespace(Stream.java:566)
9: (read #S(system::string-input-stream) nil
#S(system::string-input-stream))
________________ Old stacktrace
Illegal # macro character: #\<
[Condition of type reader-error]
Restarts:
0: [retry] Retry SLIME REPL evaluation request.
1: [*abort] Return to SLIME's top level.
2: [abort] Abort thread.
Backtrace:
0: (system:backtrace)
1: (system::new-backtrace #<reader-error {35F15D9A}>)
2: (#<local-function in make-invoke-debugger-hook {FB48C75}>
#<reader-error {35F15D9A}> #<local-function in make-invoke-debugger-hook
{FB48C75}>)
3: (apply #<local-function in make-invoke-debugger-hook {FB48C75}>
(#<reader-error {35F15D9A}> #<local-function in make-invoke-debugger-hook
{FB48C75}>))
4: (system::run-hook system::*invoke-debugger-hook* #<reader-error
{35F15D9A}> #<local-function in make-invoke-debugger-hook {FB48C75}>)
5: (invoke-debugger #<reader-error {35F15D9A}>)
6: (error #<reader-error {35F15D9A}>)
7: (#<local-function in eval-region {12C6FD1A}> #<reader-error
{35F15D9A}>)
8: (signal #<reader-error {35F15D9A}>)
9: org.armedbear.lisp.Lisp.error(Lisp.java:382)
10: org.armedbear.lisp.LispReader$22.execute(LispReader.java:350) =
#<function sharp-illegal {2EF7C108}>
11: org.armedbear.lisp.Stream.readDispatchChar(Stream.java:813)
12: org.armedbear.lisp.LispReader$6.execute(LispReader.java:130) =
#<function read-dispatch-char {153CFE29}>
13: org.armedbear.lisp.Stream.processChar(Stream.java:588)
14: org.armedbear.lisp.Stream.readPreservingWhitespace(Stream.java:557)
15: org.armedbear.lisp.Stream.readPreservingWhitespace(Stream.java:566)
16: org.armedbear.lisp.Stream.read(Stream.java:501)
17: org.armedbear.lisp.Stream$16.execute(Stream.java:2436) = #<function
read {7905182E}>
18: org.armedbear.lisp.Symbol.execute(Symbol.java:826)
19: org.armedbear.lisp.LispThread.execute(LispThread.java:851)
20: org.armedbear.lisp.swank_528.execute(swank.lisp:1732) = #<function
eval-region {6A067578}>
21: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
22: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
23: org.armedbear.lisp.swank_repl_47.execute(swank-repl.lisp:270) =
#<local-function in repl-eval {7AA59573}>
24: org.armedbear.lisp.LispThread.execute(LispThread.java:798)
25: org.armedbear.lisp.swank_repl_48.execute(swank-repl.lisp:283) =
#<function track-package {24491179}>
26: org.armedbear.lisp.Symbol.execute(Symbol.java:803)
27: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
28: org.armedbear.lisp.swank_repl_46.execute(swank-repl.lisp:270) =
#<local-function in repl-eval {6A4AF4AE}>
29: org.armedbear.lisp.LispThread.execute(LispThread.java:798)
30: org.armedbear.lisp.swank_272.execute(swank.lisp:490) = #<function
call-with-retry-restart {4E68726}>
31: org.armedbear.lisp.Symbol.execute(Symbol.java:814)
32: org.armedbear.lisp.LispThread.execute(LispThread.java:832)
33: org.armedbear.lisp.swank_repl_45.execute(swank-repl.lisp:270) =
#<local-function in repl-eval {18F59278}>
34: org.armedbear.lisp.LispThread.execute(LispThread.java:798)
35: abcl_027941ee_2c60_4fe0_8ae7_0a41efb34cac.execute(Unknown Source) =
#<function call-with-syntax-hooks {16BB516F}>
36: org.armedbear.lisp.LispThread.execute(LispThread.java:814)
37: org.armedbear.lisp.Lisp.funcall(Lisp.java:172)
38: org.armedbear.lisp.Primitives$pf_apply.execute(Primitives.java:2827) =
#<function apply {61157D6}>
39: (read #S(system::string-input-stream) nil
#S(system::string-input-stream))
40: (swank::eval-region "#<\n")
41: (#<local-function in repl-eval {78DF6AB0}>)
42: (swank-repl::track-package #<local-function in repl-eval {78DF6AB0}>)
43: (#<local-function in repl-eval {5C2443A9}>)
44: (swank::call-with-retry-restart "Retry SLIME REPL evaluation request."
#<local-function in repl-eval {5C2443A9}>)
45: (#<local-function in repl-eval {6386D83A}>)
46: (swank/backend:call-with-syntax-hooks #<local-function in repl-eval
{6386D83A}>)
47: (apply #<function call-with-syntax-hooks {16BB516F}> #<local-function
in repl-eval {6386D83A}> nil)
48: (swank/backend:call-with-syntax-hooks #<local-function in repl-eval
{6386D83A}>)
49: (swank::call-with-buffer-syntax nil #<local-function in repl-eval
{6386D83A}>)
50: (swank-repl::repl-eval "#<\n")
51: (swank-repl:listener-eval "#<\n")
52: (system::%eval (swank-repl:listener-eval "#<\n"))
53: (eval (swank-repl:listener-eval "#<\n"))
54: (swank:eval-for-emacs (swank-repl:listener-eval "#<\n")
"COMMON-LISP-USER" 418)
55: (apply #<function eval-for-emacs {347BE911}>
((swank-repl:listener-eval "#<\n") "COMMON-LISP-USER" 418))
56: (swank::process-requests nil)
57: (#<local-function in handle-requests {468DC77D}>)
58: (#<local-function in handle-requests {1FC34DCD}>)
59: (swank/backend:call-with-debugger-hook #<function swank-debugger-hook
{1C78BEE7}> #<local-function in handle-requests {1FC34DCD}>)
60: (apply #<function call-with-debugger-hook {2F2A561F}> #<function
swank-debugger-hook {1C78BEE7}> #<local-function in handle-requests
{1FC34DCD}> nil)
61: (swank/backend:call-with-debugger-hook #<function swank-debugger-hook
{1C78BEE7}> #<local-function in handle-requests {1FC34DCD}>)
62: (#<local-function in handle-requests {2E4ADDE3}>)
63: (swank::call-with-bindings ((*standard-input* .
#S(extensions:slime-input-stream)) (*standard-output* .
#S(extensions:slime-output-stream)) (*trace-output* .
#S(extensions:slime-output-stream)) ..) #<..
64: (swank::handle-requests #<swank::multithreaded-connection {245DAD99}>)
65: (swank-repl::repl-loop #<swank::multithreaded-connection {245DAD99}>)
66: (#<local-function in spawn-repl-thread {376522E}>)
67: (swank::call-with-bindings nil #<local-function in spawn-repl-thread
{376522E}>)
68: (#<local-function in spawn-repl-thread {5F73C8D9}>)
69: (#<local-function in g27583 {7AC7193C}>)
70: (threads::thread-function-wrapper #<local-function in g27583
{7AC7193C}>)
On Mon, Jan 2, 2017 at 6:35 PM, Alan Ruttenberg <alanruttenberg(a)gmail.com>
wrote:
> Well, I've gone and made an attempt at a "less leaky" version. (It became
> an obsession :( )
>
> Some features:
> - tries not to show internals of swank and abcl debugging calls
> - shows top of exception trace for java exceptions, marked with "!" to
> indicate they were caught.
> - names local functions, even if we only would see the java frame.
> - And some other nuisances. Read the code?
>
>
> I am soliciting beta testers - need to see whether it holds up under
> stress of use by other.
> You will need to check out my branch of ABCL https://github.com/
> alanruttenberg/abcl.git - use branch "stage"
> and you will need my branch of slime https://github.com/
> alanruttenberg/slime/ - use branch "beta"
>
> Build abcl with: ant abcl-aio.jar
>
> There are a number of other debugging goodies here, also worth testing:
> - Better inspectors for some things, like java classes
> - View source and disassemble from debugger should work on every frame
> - Most definition sources are recorded, including those compiled in a
> buffer.
> Try edit definitions 'print-object and you will see all the methods and
> their source locations
> - slime-edit-callers
>
> Alan
>
>
>
> On Sun, Jan 1, 2017 at 6:11 AM, Mark Evenson <evenson(a)panix.com> wrote:
>
>>
>>
>> On 12/31/16 20:37, Alan Ruttenberg wrote:
>> > 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
>>
>> The ABCL backtrace abstraction is perhaps a little bit leaky and noisy
>> with respect to its representation of Java calls, but it has been useful
>> in improving the implementation in its present form since Tobias and I
>> introduced it back in 2006-7 (?).
>>
>> My strong claim is that a user of ABCL never will see Java calls in the
>> backtrace, as they only result in errors in the ABCL implementation
>> which causes the "Lisp computation" to fail, thunking out into the
>> surrounding Java Try/Catch/Exception mechanism. So, "normally" (i.e.
>> when there are more bugs in your code than the implementation), these
>> verbose, confusing messages are not seen by the user.
>>
>> In your example, frames 87-69 show the Lisp-side computation which got
>> to the error being signaled in the ABCL implmentation. Then frames 4-68
>> provide the trace of Java attempting to deal with the error signaled by
>> the JVM when executing Primitives.java:2845. Frames 0-2 show the error
>> propagating back into the Lisp-side debugger machinery.
>>
>> I think the only real information I get as a developer here is that
>> there is an error occuring in org.armedbear.lisp.Primitives:2845; the
>> rest of the Java calls don't need to be shown. The backtrace from 4-67
>> can confirm/deny hypothesis about what exacly caused the Java error on
>> that line, but usually I would figure things out by starting ABCL under
>> JPDA, setting a break point before Primitives:2845, replicating the
>> error, and single-stepping through the JVM execution until I understand
>> the problem.
>>
>> The "logic" of javaPushStackFrames() (my code) is trying to elide noisy
>> frames. Here it fails to elide frames in your example, as the entry
>> point is in Primitive.java not Primitives.java, so this code should be
>> changed. I would go with a simpler implementation of
>> javaPushStackFrames() that doesn't try to elide frames, and place such a
>> mechanism on actually viewing the stack. Perhaps we can get SLIME to
>> "collapse" the Java portion of the backtrace (ala "the inspector") into
>> a single statement of the source location that the Lisp computation
>> enter the JVM error condition?
>>
>> Hopefully that provides some background for a proposal for a less noisy
>> backtrace for your purposes to be possible. Since I often get bug
>> reports consisting of little or more reproduction instructions than: "I
>> have a problem with ABCL: it gave me this error." and a paste of the
>> stack trace, it has been useful to have more information present than not.
>>
>> One could certainly somehow collapse frames 0-3 somehow into a single
>> frame that represents the debugger invocation.
>>
>>
>>
>>
>>
>>
>> >
>> > 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-F
>> ILE
>> > "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.ja
>> va: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-maco
>> sx-x64/Volumes/upstairs/repos/jnil/lisp/jnil/cl-utils-tmpUYPFRO0B.abcl"
>> > #P"/Users/lor..
>> > 86: (COMPILE-FILE #P"/Volumes/upstairs/repos/jni
>> l/lisp/jnil/cl-utils.lisp"
>> > :OUTPUT-FILE
>> > #P"/Users/lori/.cache/common-lisp/abcl-1.5.0-dev-fasl43-maco
>> sx-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-maco
>> sx-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--;
>> > }
>> > }
>> >
>>
>> --
>> "A screaming comes across the sky. It has happened before, but there
>> is nothing to compare to it now."
>>
>>
>
1
0
Hello,
This is a follow-up to my earlier post on stack overflow. That problem is
still not solved and here is one question.
On the user documentation page I found the instruction to "add abcl.jar to
your class path for ABCL projects"
How do I do that?
Thanks,
Mirko
2
3