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