Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

#361 Internal Error: statement in file "debug.d", line 1149

lisp error
closed-works-for-me
Sam Steingold
clisp (525)
5
2008-02-08
2006-08-11
Brian Smith
No

Hi,

I was playing around with clisp 2.39 on cygwin tonight
and hit an internal error. It asked me to notify the
authors, so here goes. I eventually narrowed the
problem down to this set of repeatable steps:

[1]> (set 'a '(eval b))
(EVAL B)
[2]> set 'b '(eval a)

*** - EVAL: variable SET has no value
The following restarts are available:
USE-VALUE :R1 You may input a value to be
used instead of SET.
STORE-VALUE :R2 You may input a new value for SET.
ABORT :R3 ABORT
Break 1 [3]> exit

*** - EVAL: variable EXIT has no value
The following restarts are available:
USE-VALUE :R1 You may input a value to be
used instead of EXIT.
STORE-VALUE :R2 You may input a new value for EXIT.
ABORT :R3 ABORT
ABORT :R4 ABORT
Break 2 [4]> quit
[5]> (set 'b '(eval a))
(EVAL A)
[6]> (eval a)

*** - Program stack overflow. RESET

*** - Internal error: statement in file "debug.d", line
1149 has been
reached!!
Please send the authors of the program a
description how you produced
this error!
Break 1 [7]>

Discussion

1 2 > >> (Page 1 of 2)
  • Sam Steingold
    Sam Steingold
    2006-08-11

    Logged In: YES
    user_id=5735

    "Program stack overflow. RESET" is to be expected (you are
    doing infinite recursion).
    i cannot reproduce "Internal error" though - could you
    please try to debug it?
    set a break in top_of_back_trace_frame and use "xout" or
    "zout" to print the valus of "fun".
    see http://clisp.cons.org/impnotes/faq.html#faq-debug

     
  • Brian Smith
    Brian Smith
    2006-08-11

    Logged In: YES
    user_id=46488

    I realize that the overflow is expected, that was the goal
    of the experiment. The "Internal error" was the issue I
    reported.

    If I do this on clisp 2.38/cygwin, I get a segmentation
    fault. 2.39 is a little better, in that it just reports an
    Internal Error.

    You have to do the exact set of steps I did, including the
    illegal statements.

    I would debug it if I knew more about clisp, but
    unfortunately for all those involved I'm just toying with it.

     
  • Sam Steingold
    Sam Steingold
    2006-08-11

    Logged In: YES
    user_id=5735

    I followed your example step-by-step on linux
    and I did not see the internal error.
    clisp developers do not have access to cygwin.
    it is up to you to do the debugging.

     
  • Brian Smith
    Brian Smith
    2006-08-11

    Logged In: YES
    user_id=46488

    Look, I'm just trying to be a good citizen. clisp asked me
    to report the error and I did.

     
  • Reini Urban
    Reini Urban
    2006-08-11

    Logged In: YES
    user_id=13755

    [1]> (set 'a '(eval b))
    (EVAL B)
    [2]> set 'b '(eval a)

    I hope you ARE aware the the original error is from the
    missing brackets in [2].

    I don't know if you get to the point where you infinitly
    recurse into (eval a) => eval b) => (eval a) ... statements,
    which in every language would blow up either the stack or
    the heap or even might freeze the system.
    Thanks for your report though.

    In my opinion it can be closed.
    After the great message
    "*** - Program stack overflow. RESET",
    do we want to fix the symptom in debug.d?

    -- reini urban - cygwin maintainer of clisp

     
  • Brian Smith
    Brian Smith
    2006-08-11

    Logged In: YES
    user_id=46488

    OK, from the responses I have received from you guys it is
    apparent that I should have fully qualified the error report
    and my user profile.

    1) I am not reporting any undesirable behavior, except for
    the Internal Error.

    2) I am not offering up these LISP statements up as an
    example of anything useful. I whittled down the use case
    into as small a set of steps as possible in order to help
    you guys reproduce the error.

    3) I am not a regular clisp user. This bug was found after
    playing with clisp for about 10 minutes.

    4) I am reporting this bug out of the goodness of my heart.
    It does not matter to me whether you fix it.

    5) Lastly, I am not an idiot. Please stop treating me as
    such. If you would carefully read my original report, I was
    only reporting the "Internal Error". I made no complaint
    about the REPL not accepting my bad s-expressions or the
    overflow. These were merely included to, as requested by the
    clisp error message, describe how I got the machine into the
    undesirable state.

    Apologies for the flames, but my frustration level has
    peaked. In the future, I will just ignore any requests from
    clisp for help. Thank you. I have learned my lesson.

     
  • Sam Steingold
    Sam Steingold
    2006-08-11

    Logged In: YES
    user_id=5735

    the internal error, if reproducible, should be fixed even if
    it is arrived at by a user blunder.

     
  • Sam Steingold
    Sam Steingold
    2006-08-11

    Logged In: YES
    user_id=5735

    Brian, your bug report is appreciated.
    please do not overreact.

     
  • Reini Urban
    Reini Urban
    2006-08-12

    Logged In: YES
    user_id=13755

    After blowing up the stack inside the debugger I inspected
    the bt->bt_stack and bt->bt_function with gdb:

    stackptr=0x7c9232f8, funcptr=0x7c91e3ed

    (gdb) x 0x7c9232f8
    0x7c9232f8 <ntdll!CsrProbeForWrite+87>: 0x850ffb3b
    (gdb) x 0x7c91e3ed
    0x7c91e3ed <ntdll!ZwRequestWaitReplyPort+12>: 0x90000cc2

    backtrace broken.

     
1 2 > >> (Page 1 of 2)