Hey,

given scarce amount of details this may be inaccurate, but if I had such
issue I'd do what follows:

start main ECL thread and spawn a thread with the user script in
it. Function running in this process would look something in this
spirit:

(loop
  while (null *exit*)
  do (handler-case (si:toplevel)
       (serious-condition (c)
         (format *debug-io* "something is wrong:~%~a~%~@
                  Yes, starting over." c))))

Since it will be in a separate thread, you may safely interrupt it or
even destroy to start over. You may put your own repl in the
handler-case body and i.e wrap each REP iteration in with-timeout.

Regarding problems with cl_boot, cl_shutdown, cl_boot please report an
issue on our bugtracker.

N.b at some point of time I'd love to see a functionality in ECL where
whole runtime is stored in a single variable, so we could have N
different ECL instances running in the same process, but I don't think
it will happen anytime soon.

  ecl_call_with_runtime(ecl_ptr, "(si::toplevel)");

Best regards,
Daniel

Не Скажу writes:

> Some portion of program is scriptable with ECL, which runs in its own 
> separate thread. What I fear, however, is that users might do something 
> stupid and enter an infinite loop or break into debugger wondering why does 
> the scriptable part no longer responds. For the latter breaking into debugger 
> is disabled by default with an option to reenable it, but nevertheless 
> knowing Murphy's law I expect the worst to happen. I would like to keep the 
> program responsive no matter what.
>
> I was hoping I could restart ECL in such cases, so I tried terminating ECL 
> thread first but it results in a crash. And apparently after calling 
> cl_shutdown ECL shuts down for good and a second call to cl_boot does not 
> work so restarting does not appear as an option anyway.
>
> Is there anything I can do to keep the program running or just trust the user 
> to do the right thing?


--
Daniel Kochmański ;; aka jackdaniel | Przemyśl, Poland
TurtleWare - Daniel Kochmański      | www.turtleware.eu

"Be the change that you wish to see in the world." - Mahatma Gandhi

Reply via email to