<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 5, 2014 at 11:03 PM, Faré <span dir="ltr"><<a href="mailto:fahree@gmail.com" target="_blank">fahree@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">test-try-refinding.script is a relatively new test (introduced shortly<br>
before the 3.1.3 release), so its failure might not be a regression in<br>
ASDF if none of us tested 3.1.3 with MKCL (did we?). Now, infinite<br>
looping is certainly a bad failure mode in the test. This looks like a<br>
MKCL-specific bug, though:<br>
<br>
If I replace the culprit loop (just before (DBG "Refinding test<br>
successful.")) by this debugging variant, I find that the variable<br>
tried-once is somehow magically reset to NIL after having been set to<br>
T, and that, even if it's a defparameter instead of a lexical variable<br>
(I tried both), but happily not with a defvar (where the script only<br>
fails, doesn't infinitely loops). The problem is that it restarts the<br>
wrong frame! Instead of resuming after the handler-bind handlers from<br>
test-try-refinding.script, it resumes a frame way up there in the call<br>
stack in function run-test-script in script-support.lisp, that has its<br>
own handler-bind (but no restart) via macro with-test. Looks like a<br>
MKCL compiler bug.<br>
<br>
(defvar tried-once nil)<br>
(assert<br>
 ;;(let ((tried-once nil))<br>
  (with-asdf-cache (:override t)<br>
    (handler-bind<br>
        ((asdf:missing-component<br>
           #'(lambda (c)<br>
               (DBG "Caught MISSING-COMPONENT condition.")<br>
               (nest<br>
                (progn (DBG 1 tried-once))<br>
                (if tried-once (error c)) ;; avoid infinite looping<br>
                (progn (DBG 2))<br>
                (progn (setf tried-once t))<br>
                (progn (DBG 3 tried-once))<br>
                (let ((missing (asdf::missing-requires c)))<br>
                  (assert (equal missing "test-asdf/force1"))<br>
                  (setf asdf:*central-registry* *old-registry*)<br>
                  (invoke-restart 'asdf:retry))))))<br>
      (asdf:find-system "test-asdf/force1" t))));;)<br>
<br>
Output:<br>
Running test-try-refinding.script with mkcl-1.1.10-linux-x64<br>
;;; Loading "test-try-refinding.script"<br>
; Loading system definition for test-asdf from<br>
/home/tunes/cl/asdf/test/test-asdf.asd<br>
;;; Loading "/home/tunes/cl/asdf/test/test-asdf.asd"<br>
; Registering #<SYSTEM "test-asdf"><br>
; Registering #<SYSTEM "test-asdf/force1"><br>
Clearing the caches and finding.<br>
Correctly failed to find system.<br>
Caught MISSING-COMPONENT condition.<br>
1<br>
  ASDF-TEST::TRIED-ONCE => NIL<br>
2<br>
3<br>
  ASDF-TEST::TRIED-ONCE => T<br>
Running test-try-refinding.script with mkcl-1.1.10-linux-x64<br>
;;; Loading "test-try-refinding.script"<br>
... repeat ad vitam aeternam<br>
<br></blockquote><div><br></div><div>Wow! That is bad indeed! I will try to fix it in the coming 24 hours.<br></div><div>Thank you for the bug report.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
PS: unrelatedly, several bugs were recently fixed in clasp and ECL<br>
that may or may not be present in MKCL; check the (not very active,<br>
this year) git log of ECL for details.<br></blockquote><div><br></div><div>I do read the ECL git log and bug list on a frequent and regular basis and I try in MKCL<br></div><div>each test case mentioned in them when they seem relevant. But the fact is that by now<br></div><div>MKCL and ECL have evolved far enough apart that a large (and growing larger) part<br></div><div>of those ECL bug reports/fix don't apply to MKCL anymore. I keep on reading though...<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Robert: I suggest we disable this test for MKCL until JCB fixes his<br>
compiler bug, and/or use defvar as above.<br></blockquote><div><br></div><div>As I said here below, I may take a day or two before I have a fix for this one.<br></div><div>So, please, do the workaround in the meantime.<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class=""><br>
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• <a href="http://fare.tunes.org" target="_blank">http://fare.tunes.org</a><br>
</span>As the Chinese say, 1001 words is worth more than a picture.  — John McCarthy<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
On Sun, Oct 5, 2014 at 9:20 PM, Jean-Claude Beaudoin<br>
<<a href="mailto:jean.claude.beaudoin@gmail.com">jean.claude.beaudoin@gmail.com</a>> wrote:<br>
><br>
> On Sun, Oct 5, 2014 at 8:57 PM, Faré <<a href="mailto:fahree@gmail.com">fahree@gmail.com</a>> wrote:<br>
>><br>
>> Dear JCB,<br>
>><br>
>> You suggestion indeed fixes test-bundle.script, but now<br>
>> this test loops indefinitely for me, using the latest mkcl from git:<br>
>> make t l=mkcl t=test-try-refinding.script<br>
>><br>
><br>
> This one does not look like a mere typo. I will have to investigate deeper<br>
> but I don't have much spare cycles right now so it may take a little while<br>
> (1-2 days, I hope).<br>
><br>
> I hope this is not blocking something essential, is it?<br>
><br>
> Cheers,<br>
><br>
> Jean-Claude<br>
</div></div></blockquote></div><br></div></div>