[Openmcl-devel] Request for advice on handling SERIOUS-CONDITIONs in ASDF tests
Gary Byers
gb at clozure.com
Mon Jul 25 09:13:28 PDT 2016
On 07/24/2016 09:10 PM, Robert P. Goldman wrote:
> Previously, in the ASDF test suite, we would run tests, checking for
> errors, and if there were errors, we would exit with a non-zero status,
> signaling to our shell script that a test had failed.
>
> However, experimenting with ECL, I found that there were cases where ECL
> would fail with a SERIOUS-CONDITION that was not an error. These were
> typically various flavors of STORAGE-CONDITION, and need to be caught so
> that non-interactive tests don't hang when there's some resource exhaustion.
>
> Accordingly, I modified the ASDF test suite to catch not just ERRORs,
> but also SERIOUS-CONDITIONs.
>
> Unfortunately, this breaks the tests on CCL.
>
> The problem appears in one of our tests where we call (EXIT-LISP 0).
> This is (ccl:quit 0) on CCL.
>
> Unfortunately, it seems that CCL signals a CCL:PROCESS-RESET when
> quitting and PROCESS-RESET is a SERIOUS-CONDITION.
>
> So how should I modify the tests so that I catch the other
> SERIOUS-CONDITIONs (like STORAGE-CONDITIONs) without mistakenly catching
> these PROCESS-RESET conditions? I suppose I can either catch all
> SERIOUS-CONDITIONs *except* PROCESS-RESET, and just decline those? Or
> could I have the definition of EXIT-LISP handle the PROCESS-RESET
> condition? Without more knowledge, it seems possible that could mess up
> graceful exit.
Of these two options, the former (not trying to handle the
CCL:PROCESS-RESET condition) makes more sense to me. I'm not entirely
sure that PROCESS-RESET should be a SERIOUS-CONDITION (or any other kind
of CONDITION) at all, and have no idea what it would mean to handle that
condition.
If the condition is not handled, no "interactive intervention" is involved,
I think that the idea of making PROCESS-RESET any kind of CONDITION was
likely based on the belief that doing so was a Good Thing, in that it
potentially allowed its handling to be specialized. The function
PROCESS-RESET is itself generic, so there may be better ways uf
achieving that goal.
> Could you clarify PROCESS-RESET a little for me? The spec indicates
> that SERIOUS-CONDITIONs are "All conditions serious enough to require
> interactive intervention if not handled should inherit from the type
> serious-condition." I'm not sure how that aligns with the use of
> PROCESS-RESET as described in the manual.
>
> Thanks,
> R
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> https://lists.clozure.com/mailman/listinfo/openmcl-devel
>
More information about the Openmcl-devel
mailing list