[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Had anybody problems with clisp-1996-07-22 before me?



unk6 <unk6@rz.uni-karlsruhe.de> wrote:

> I am just wondering. I am currently hacking using clisp-1996-07-22 and
> it seems to have some problems:
> 
>  - Sometimes CLISP dies badly with no appearing reason. Even
>    evaluating a symbol from the REP could do that. This could be
>    pretty nice my own code, but I am clueless here.

I don't know whether this is the reason, but I recently found a bug in
the REP which has been around for a long time. The bug is that the
jmpbuf used to store the return point for the REP has gone out of scope,
but a lot of compilers might not be bothered since the space may have
still been allocated on the stack.

Here is the patch (for clisp-1996-07-22, but it should apply to all
versions)

Pete

*** debug.d.old	Sun Jul 21 16:04:50 1996
--- debug.d	Wed Oct 23 02:43:55 1996
***************
*** 281,295 ****
          returner_and_data.old_NUM_STACK_normal = NUM_STACK_normal;
          #endif
          finish_entry_frame(DRIVER,&!returner_and_data.returner,,;);
        }
-       # Hier ist der Einsprungpunkt.
-       loop
-         { # (SYS::READ-EVAL-PRINT "> ") ausf|hren:
-           pushSTACK(O(prompt_string)); # Prompt "> "
-           funcall(L(read_eval_print),1);
-           if (eq(value1,T)) break; # EOF gelesen -> Schleife beenden
-         }
-       skipSTACK(2); # Driver-Frame auflvsen
      }
  
  # Startet einen untergeordneten Driver (Read-Eval-Print-Loop)
--- 281,295 ----
          returner_and_data.old_NUM_STACK_normal = NUM_STACK_normal;
          #endif
          finish_entry_frame(DRIVER,&!returner_and_data.returner,,;);
+         # Hier ist der Einsprungpunkt.
+         loop
+           { # (SYS::READ-EVAL-PRINT "> ") ausf|hren:
+             pushSTACK(O(prompt_string)); # Prompt "> "
+             funcall(L(read_eval_print),1);
+             if (eq(value1,T)) break; # EOF gelesen -> Schleife beenden
+           }
+         skipSTACK(2); # Driver-Frame auflvsen
        }
      }
  
  # Startet einen untergeordneten Driver (Read-Eval-Print-Loop)