* bug#31594: Code causes guild compile to hang
2018-06-05 22:01 ` bug#31594: Code causes guild compile to hang Mark H Weaver
@ 2018-06-06 2:23 ` Mark H Weaver
0 siblings, 0 replies; 4+ messages in thread
From: Mark H Weaver @ 2018-06-06 2:23 UTC (permalink / raw)
To: Tommi Höynälänmaa; +Cc: 31594
Mark H Weaver <mhw@netris.org> writes:
> Tommi Höynälänmaa <tommi.hoynalanmaa@gmail.com> writes:
>
>> The following code causes command "guild compile" to hang:
>> ---cut here---
>> (define (select-nearest-methods binder
>> index v-fixed-args v-rest-arg vb-included)
>> (dwl4 "select-nearest-methods")
>> (assert (is-binder? binder))
>> (let ((n (vector-length vb-included)))
>> (do ((i 0 (+ i 1))) ((>= i n))
>> (if (vector-ref vb-included i)
>> (let ((t1 (get-item-at-index
>> (vector-ref v-fixed-args i)
>> (vector-ref v-rest-arg i)
>> index)))
>> (do ((j 0 (+ j 1))) ((>= j n))
>> (if (and (not (= i j))
>> (vector-ref vb-included j))
>> (let ((t2 (get-item-at-index
>> (vector-ref v-fixed-args j)
>> (vector-ref v-rest-arg j)
>> index)))
>> (if (is-t-subtype? binder t1 t2)
>> ;; t2 is excluded
>> (vector-set! vb-included j #f))))))))))
>> ---cut here---
Further investigation reveals that the loop in compute-significant-bits
in (language cps specialize-numbers) fails to terminate. I instrumented
it as follows:
--8<---------------cut here---------------start------------->8---
diff --git a/module/language/cps/specialize-numbers.scm b/module/language/cps/specialize-numbers.scm
index d5587037b..7be0b5e33 100644
--- a/module/language/cps/specialize-numbers.scm
+++ b/module/language/cps/specialize-numbers.scm
@@ -211,9 +211,21 @@
"Given the locally inferred types @var{types}, compute a map of VAR ->
BITS indicating the significant bits needed for a variable. BITS may be
#f to indicate all bits, or a non-negative integer indicating a bitmask."
- (let ((preds (invert-graph (compute-successors cps kfun))))
+ (pk 'compute-significant-bits cps types kfun)
+ (when (getenv "GUILE_DEBUG_CPS")
+ (format (current-warning-port) "CPS:\n")
+ (for-each (match-lambda
+ ((k . v) (format (current-warning-port) " ~s --> ~s\n" k v)))
+ (reverse (intmap-fold acons cps '())))
+ (format (current-warning-port) "TYPES:\n")
+ (for-each (match-lambda
+ ((k . v) (format (current-warning-port) " ~s --> ~s\n" k v)))
+ (reverse (intmap-fold acons types '()))))
+ (pk 'compute-significant-bits-result
+ (let ((preds (pk 'preds (invert-graph (compute-successors cps kfun)))))
(let lp ((worklist (intmap-keys preds)) (visited empty-intset)
(out empty-intmap))
+ (pk 'lp 'worklist worklist 'visited visited 'out out)
(match (intset-prev worklist)
(#f out)
(label
@@ -276,7 +288,7 @@
(add-unknown-uses out args))))
(($ $prompt escape? tag handler)
(add-unknown-use out tag)))))
- (_ out)))))))))
+ (_ out))))))))))
(define (specialize-operations cps)
(define (visit-cont label cont cps types sigbits)
--8<---------------cut here---------------end--------------->8---
and here's a reformatted version of the resulting output when compiling
Tommi's code above:
--8<---------------cut here---------------start------------->8---
;;; (compute-significant-bits #<intmap 0-103> #<intmap 13+0-90> 13)
CPS:
0 --> #<cps (kfun () 0 12 1)>
1 --> #<cps (kclause (() () #f () #f) 2)>
2 --> #<cps (kargs () () (continue 3 (primcall current-module)))>
3 --> #<cps (kargs (module) (1) (continue 4 (const 0)))>
4 --> #<cps (kargs (scope) (2) (continue 5 (primcall cache-current-module! 1 2)))>
5 --> #<cps (kargs () () (continue 6 (closure 13 0)))>
6 --> #<cps (kargs (arg) (3) (continue 7 (const select-nearest-methods)))>
7 --> #<cps (kargs (name) (4) (continue 8 (primcall define! 4)))>
8 --> #<cps (kargs (box) (5) (continue 9 (closure 13 0)))>
9 --> #<cps (kargs (#f) (6) (continue 10 (primcall box-set! 5 6)))>
10 --> #<cps (kargs () () (continue 11 (unspecified)))>
11 --> #<cps (kargs (unspecified) (7) (continue 12 (values 7)))>
12 --> #<cps (ktail)>
13 --> #<cps (kfun ((name . select-nearest-methods)) 8 103 14)>
14 --> #<cps (kclause ((binder index v-fixed-args v-rest-arg vb-included) () #f () #f) 15)>
15 --> #<cps (kargs (binder index v-fixed-args v-rest-arg vb-included) (9 10 11 12 13) (continue 16 (const dwl4)))>
16 --> #<cps (kargs (name) (14) (continue 17 (const #t)))>
17 --> #<cps (kargs (bound?) (15) (continue 18 (const 0)))>
18 --> #<cps (kargs (scope) (16) (continue 19 (primcall cached-toplevel-box 16 14 15)))>
19 --> #<cps (kargs (box) (17) (continue 20 (primcall box-ref 17)))>
20 --> #<cps (kargs (arg) (18) (continue 21 (const "select-nearest-methods")))>
21 --> #<cps (kargs (arg) (19) (continue 22 (call 18 19)))>
22 --> #<cps (kreceive () vals 23)>
23 --> #<cps (kargs (tmp) (20) (continue 24 (const assert)))>
24 --> #<cps (kargs (name) (21) (continue 25 (primcall cached-toplevel-box 16 21 15)))>
25 --> #<cps (kargs (box) (22) (continue 26 (primcall box-ref 22)))>
26 --> #<cps (kargs (arg) (23) (continue 27 (const is-binder?)))>
27 --> #<cps (kargs (name) (24) (continue 28 (primcall cached-toplevel-box 16 24 15)))>
28 --> #<cps (kargs (box) (25) (continue 29 (primcall box-ref 25)))>
29 --> #<cps (kargs (arg) (26) (continue 30 (call 26 9)))>
30 --> #<cps (kreceive (arg) rest 31)>
31 --> #<cps (kargs (tmp tmp) (27 28) (continue 32 (call 23 27)))>
32 --> #<cps (kreceive () vals 33)>
33 --> #<cps (kargs (tmp) (29) (continue 34 (primcall vector-length 13)))>
34 --> #<cps (kargs (u64) (30) (continue 35 (primcall u64->scm 30)))>
35 --> #<cps (kargs (n) (31) (continue 36 (branch 101 (primcall >= 16 31))))>
36 --> #<cps (kargs () () (continue 37 (primcall scm->u64 16)))>
37 --> #<cps (kargs (unboxed) (32) (continue 38 (primcall vector-ref 13 32)))>
38 --> #<cps (kargs (arg) (33) (continue 67 (branch 39 (values 33))))>
39 --> #<cps (kargs () () (continue 40 (const get-item-at-index)))>
40 --> #<cps (kargs (name) (34) (continue 41 (primcall cached-toplevel-box 16 34 15)))>
41 --> #<cps (kargs (box) (35) (continue 42 (primcall box-ref 35)))>
42 --> #<cps (kargs (arg) (36) (continue 43 (primcall vector-ref 11 32)))>
43 --> #<cps (kargs (arg) (37) (continue 44 (primcall vector-ref 12 32)))>
44 --> #<cps (kargs (arg) (38) (continue 45 (call 36 37 38 10)))>
45 --> #<cps (kreceive (t1) rest 46)>
46 --> #<cps (kargs (tmp tmp) (39 40) (continue 47 (values 16)))>
47 --> #<cps (kargs (j) (41) (continue 48 (branch 67 (primcall >= 41 31))))>
48 --> #<cps (kargs () () (continue 49 (branch 65 (primcall = 16 41))))>
49 --> #<cps (kargs () () (continue 50 (primcall scm->u64 41)))>
50 --> #<cps (kargs (unboxed) (42) (continue 51 (primcall vector-ref 13 42)))>
51 --> #<cps (kargs (arg) (43) (continue 65 (branch 52 (values 43))))>
52 --> #<cps (kargs () () (continue 53 (primcall box-ref 35)))>
53 --> #<cps (kargs (arg) (44) (continue 54 (primcall vector-ref 11 42)))>
54 --> #<cps (kargs (arg) (45) (continue 55 (primcall vector-ref 12 42)))>
55 --> #<cps (kargs (arg) (46) (continue 56 (call 44 45 46 10)))>
56 --> #<cps (kreceive (t2) rest 57)>
57 --> #<cps (kargs (tmp tmp) (47 48) (continue 58 (const is-t-subtype?)))>
58 --> #<cps (kargs (name) (49) (continue 59 (primcall cached-toplevel-box 16 49 15)))>
59 --> #<cps (kargs (box) (50) (continue 60 (primcall box-ref 50)))>
60 --> #<cps (kargs (arg) (51) (continue 61 (call 51 9 39 47)))>
61 --> #<cps (kreceive (arg) rest 62)>
62 --> #<cps (kargs (tmp tmp) (52 53) (continue 65 (branch 63 (values 52))))>
63 --> #<cps (kargs () () (continue 64 (const #f)))>
64 --> #<cps (kargs (arg) (54) (continue 65 (primcall vector-set! 13 42 54)))>
65 --> #<cps (kargs () () (continue 66 (const 1)))>
66 --> #<cps (kargs (arg) (55) (continue 47 (primcall add 41 55)))>
67 --> #<cps (kargs () () (continue 68 (const 1)))>
68 --> #<cps (kargs (arg) (56) (continue 69 (const 1)))>
69 --> #<cps (kargs (i) (57) (continue 70 (branch 101 (primcall >= 57 31))))>
70 --> #<cps (kargs () () (continue 71 (primcall scm->u64 57)))>
71 --> #<cps (kargs (unboxed) (58) (continue 72 (primcall vector-ref 13 58)))>
72 --> #<cps (kargs (arg) (59) (continue 100 (branch 73 (values 59))))>
73 --> #<cps (kargs () () (continue 74 (const get-item-at-index)))>
74 --> #<cps (kargs (name) (60) (continue 75 (primcall cached-toplevel-box 16 60 15)))>
75 --> #<cps (kargs (box) (61) (continue 76 (primcall box-ref 61)))>
76 --> #<cps (kargs (arg) (62) (continue 77 (primcall vector-ref 11 58)))>
77 --> #<cps (kargs (arg) (63) (continue 78 (primcall vector-ref 12 58)))>
78 --> #<cps (kargs (arg) (64) (continue 79 (call 62 63 64 10)))>
79 --> #<cps (kreceive (t1) rest 80)>
80 --> #<cps (kargs (tmp tmp) (65 66) (continue 81 (values 16)))>
81 --> #<cps (kargs (j) (67) (continue 82 (branch 100 (primcall >= 67 31))))>
82 --> #<cps (kargs () () (continue 83 (branch 99 (primcall = 57 67))))>
83 --> #<cps (kargs () () (continue 84 (primcall scm->u64 67)))>
84 --> #<cps (kargs (unboxed) (68) (continue 85 (primcall vector-ref 13 68)))>
85 --> #<cps (kargs (arg) (69) (continue 99 (branch 86 (values 69))))>
86 --> #<cps (kargs () () (continue 87 (primcall box-ref 61)))>
87 --> #<cps (kargs (arg) (70) (continue 88 (primcall vector-ref 11 68)))>
88 --> #<cps (kargs (arg) (71) (continue 89 (primcall vector-ref 12 68)))>
89 --> #<cps (kargs (arg) (72) (continue 90 (call 70 71 72 10)))>
90 --> #<cps (kreceive (t2) rest 91)>
91 --> #<cps (kargs (tmp tmp) (73 74) (continue 92 (const is-t-subtype?)))>
92 --> #<cps (kargs (name) (75) (continue 93 (primcall cached-toplevel-box 16 75 15)))>
93 --> #<cps (kargs (box) (76) (continue 94 (primcall box-ref 76)))>
94 --> #<cps (kargs (arg) (77) (continue 95 (call 77 9 65 73)))>
95 --> #<cps (kreceive (arg) rest 96)>
96 --> #<cps (kargs (tmp tmp) (78 79) (continue 99 (branch 97 (values 78))))>
97 --> #<cps (kargs () () (continue 98 (const #f)))>
98 --> #<cps (kargs (arg) (80) (continue 99 (primcall vector-set! 13 68 80)))>
99 --> #<cps (kargs () () (continue 81 (primcall add 67 56)))>
100 --> #<cps (kargs () () (continue 69 (primcall add 57 56)))>
101 --> #<cps (kargs () () (continue 102 (unspecified)))>
102 --> #<cps (kargs (val) (81) (continue 103 (values 81)))>
103 --> #<cps (ktail)>
TYPES:
13 --> #(#<intmap> #<intmap 8+0>)
14 --> #(#<intmap 8+0> #<intmap 8+0-5>)
15 --> #(#<intmap 8+0-5> #<intmap 8+0-6>)
16 --> #(#<intmap 8+0-6> #<intmap 8+0-7>)
17 --> #(#<intmap 8+0-7> #<intmap 8+0-8>)
18 --> #(#<intmap 8+0-8> #<intmap 8+0-9>)
19 --> #(#<intmap 8+0-9> #<intmap 8+0-10>)
20 --> #(#<intmap 8+0-10> #<intmap 8+0-11>)
21 --> #(#<intmap 8+0-11> #<intmap 8+0-11>)
22 --> #(#<intmap 8+0-11> #<intmap 8+0-12>)
23 --> #(#<intmap 8+0-12> #<intmap 8+0-13>)
24 --> #(#<intmap 8+0-13> #<intmap 8+0-14>)
25 --> #(#<intmap 8+0-14> #<intmap 8+0-15>)
26 --> #(#<intmap 8+0-15> #<intmap 8+0-16>)
27 --> #(#<intmap 8+0-16> #<intmap 8+0-17>)
28 --> #(#<intmap 8+0-17> #<intmap 8+0-18>)
29 --> #(#<intmap 8+0-18> #<intmap 8+0-18>)
30 --> #(#<intmap 8+0-18> #<intmap 8+0-20>)
31 --> #(#<intmap 8+0-20> #<intmap 8+0-20>)
32 --> #(#<intmap 8+0-20> #<intmap 8+0-21>)
33 --> #(#<intmap 8+0-21> #<intmap 8+0-22>)
34 --> #(#<intmap 8+0-22> #<intmap 8+0-23>)
35 --> #(#<intmap 8+0-23> #<intmap 8+0-23> #<intmap 8+0-23>)
36 --> #(#<intmap 8+0-23> #<intmap 8+0-24>)
37 --> #(#<intmap 8+0-24> #<intmap 8+0-25>)
38 --> #(#<intmap 8+0-25> #<intmap 8+0-25> #<intmap 8+0-25>)
39 --> #(#<intmap 8+0-25> #<intmap 8+0-26>)
40 --> #(#<intmap 8+0-26> #<intmap 8+0-27>)
41 --> #(#<intmap 8+0-27> #<intmap 8+0-28>)
42 --> #(#<intmap 8+0-28> #<intmap 8+0-29>)
43 --> #(#<intmap 8+0-29> #<intmap 8+0-30>)
44 --> #(#<intmap 8+0-30> #<intmap 8+0-30>)
45 --> #(#<intmap 8+0-30> #<intmap 8+0-32>)
46 --> #(#<intmap 8+0-32> #<intmap 8+0-33>)
47 --> #(#<intmap 8+0-33> #<intmap 8+0-33> #<intmap 8+0-33>)
48 --> #(#<intmap 8+0-33> #<intmap 8+0-33> #<intmap 8+0-33>)
49 --> #(#<intmap 8+0-33> #<intmap 8+0-34>)
50 --> #(#<intmap 8+0-34> #<intmap 8+0-35>)
51 --> #(#<intmap 8+0-35> #<intmap 8+0-35> #<intmap 8+0-35>)
52 --> #(#<intmap 8+0-35> #<intmap 8+0-36>)
53 --> #(#<intmap 8+0-36> #<intmap 8+0-37>)
54 --> #(#<intmap 8+0-37> #<intmap 8+0-38>)
55 --> #(#<intmap 8+0-38> #<intmap 8+0-38>)
56 --> #(#<intmap 8+0-38> #<intmap 8+0-40>)
57 --> #(#<intmap 8+0-40> #<intmap 8+0-41>)
58 --> #(#<intmap 8+0-41> #<intmap 8+0-42>)
59 --> #(#<intmap 8+0-42> #<intmap 8+0-43>)
60 --> #(#<intmap 8+0-43> #<intmap 8+0-43>)
61 --> #(#<intmap 8+0-43> #<intmap 8+0-45>)
62 --> #(#<intmap 8+0-45> #<intmap 8+0-45> #<intmap 8+0-45>)
63 --> #(#<intmap 8+0-45> #<intmap 8+0-46>)
64 --> #(#<intmap 8+0-46> #<intmap 8+0-46>)
65 --> #(#<intmap 8+0-33> #<intmap 8+0-33,47>)
66 --> #(#<intmap 8+0-33,47> #<intmap 8+0-33,47>)
67 --> #(#<intmap 8+0-25> #<intmap 8+0-25,48>)
68 --> #(#<intmap 8+0-25,48> #<intmap 8+0-25,48-49>)
69 --> #(#<intmap 8+0-25,48-49> #<intmap 8+0-25,48-49> #<intmap 8+0-25,48-49>)
70 --> #(#<intmap 8+0-25,48-49> #<intmap 8+0-25,48-50>)
71 --> #(#<intmap 8+0-25,48-50> #<intmap 8+0-25,48-51>)
72 --> #(#<intmap 8+0-25,48-51> #<intmap 8+0-25,48-51> #<intmap 8+0-25,48-51>)
73 --> #(#<intmap 8+0-25,48-51> #<intmap 8+0-25,48-52>)
74 --> #(#<intmap 8+0-25,48-52> #<intmap 8+0-25,48-53>)
75 --> #(#<intmap 8+0-25,48-53> #<intmap 8+0-25,48-54>)
76 --> #(#<intmap 8+0-25,48-54> #<intmap 8+0-25,48-55>)
77 --> #(#<intmap 8+0-25,48-55> #<intmap 8+0-25,48-56>)
78 --> #(#<intmap 8+0-25,48-56> #<intmap 8+0-25,48-56>)
79 --> #(#<intmap 8+0-25,48-56> #<intmap 8+0-25,48-58>)
80 --> #(#<intmap 8+0-25,48-58> #<intmap 8+0-25,48-59>)
81 --> #(#<intmap 8+0-25,48-59> #<intmap 8+0-25,48-59> #<intmap 8+0-25,48-59>)
82 --> #(#<intmap 8+0-25,48-59> #<intmap 8+0-25,48-59> #<intmap 8+0-25,48-59>)
83 --> #(#<intmap 8+0-25,48-59> #<intmap 8+0-25,48-60>)
84 --> #(#<intmap 8+0-25,48-60> #<intmap 8+0-25,48-61>)
85 --> #(#<intmap 8+0-25,48-61> #<intmap 8+0-25,48-61> #<intmap 8+0-25,48-61>)
86 --> #(#<intmap 8+0-25,48-61> #<intmap 8+0-25,48-62>)
87 --> #(#<intmap 8+0-25,48-62> #<intmap 8+0-25,48-63>)
88 --> #(#<intmap 8+0-25,48-63> #<intmap 8+0-25,48-64>)
89 --> #(#<intmap 8+0-25,48-64> #<intmap 8+0-25,48-64>)
90 --> #(#<intmap 8+0-25,48-64> #<intmap 8+0-25,48-66>)
91 --> #(#<intmap 8+0-25,48-66> #<intmap 8+0-25,48-67>)
92 --> #(#<intmap 8+0-25,48-67> #<intmap 8+0-25,48-68>)
93 --> #(#<intmap 8+0-25,48-68> #<intmap 8+0-25,48-69>)
94 --> #(#<intmap 8+0-25,48-69> #<intmap 8+0-25,48-69>)
95 --> #(#<intmap 8+0-25,48-69> #<intmap 8+0-25,48-71>)
96 --> #(#<intmap 8+0-25,48-71> #<intmap 8+0-25,48-71> #<intmap 8+0-25,48-71>)
97 --> #(#<intmap 8+0-25,48-71> #<intmap 8+0-25,48-72>)
98 --> #(#<intmap 8+0-25,48-72> #<intmap 8+0-25,48-72>)
99 --> #(#<intmap 8+0-25,48-59> #<intmap 8+0-25,48-59>)
100 --> #(#<intmap 8+0-25,48-51> #<intmap 8+0-25,48-51>)
101 --> #(#<intmap 8+0-23> #<intmap 8+0-23,73>)
102 --> #(#<intmap 8+0-23,73> #<intmap 8+0-23,73>)
103 --> #(#<intmap 8+0-23,73>)
;;; (preds #<intmap 13+0-90>)
;;; (lp worklist #<intset 13-103> visited #<intset> out #<intmap>)
;;; (lp worklist #<intset 13-102> visited #<intset 103> out #<intmap>)
;;; (lp worklist #<intset 13-101> visited #<intset 102-103> out #<intmap 81+0>)
;;; (lp worklist #<intset 13-100> visited #<intset 101-103> out #<intmap 81+0>)
;;; (lp worklist #<intset 13-99> visited #<intset 100-103> out #<intmap 56+0-1,25>)
;;; (lp worklist #<intset 13-98> visited #<intset 99-103> out #<intmap 56+0-1,11,25>)
;;; (lp worklist #<intset 13-97> visited #<intset 98-103> out #<intmap 13+0,43-44,54-55,67-68>)
;;; (lp worklist #<intset 13-96> visited #<intset 97-103> out #<intmap 13+0,43-44,54-55,67-68>)
;;; (lp worklist #<intset 13-95> visited #<intset 96-103> out #<intmap 13+0,43-44,54-55,65-68>)
;;; (lp worklist #<intset 13-94> visited #<intset 95-103> out #<intmap 13+0,43-44,54-55,65-68>)
;;; (lp worklist #<intset 13-93> visited #<intset 94-103> out #<intmap 9+0,4,47-48,56,58-59,64,68-72>)
;;; (lp worklist #<intset 13-92> visited #<intset 93-103> out #<intmap 9+0,4,47-48,56,58-59,64,67-72>)
;;; (lp worklist #<intset 13-91> visited #<intset 92-103> out #<intmap 9+0,4,6-7,47-48,56,58-59,64,66-72>)
;;; (lp worklist #<intset 13-90> visited #<intset 91-103> out #<intmap 9+0,4,6-7,47-48,56,58-59,64-72>)
;;; (lp worklist #<intset 13-89> visited #<intset 90-103> out #<intmap 9+0,4,6-7,47-48,56,58-59,64-72>)
;;; (lp worklist #<intset 13-88> visited #<intset 89-103> out #<intmap 9+0-1,4,6-7,47-48,56,58-59,61-72>)
;;; (lp worklist #<intset 13-87> visited #<intset 88-103> out #<intmap 9+0-1,3-4,6-7,47-48,56,58-59,61-72>)
;;; (lp worklist #<intset 13-86> visited #<intset 87-103> out #<intmap 9+0-4,6-7,47-48,56,58-59,61-72>)
;;; (lp worklist #<intset 13-85> visited #<intset 86-103> out #<intmap 9+0-4,6-7,47-48,52,56,58-59,61-72>)
;;; (lp worklist #<intset 13-84> visited #<intset 85-103> out #<intmap 9+0-4,6-7,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-83> visited #<intset 84-103> out #<intmap 9+0-4,6-7,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-82> visited #<intset 83-103> out #<intmap 9+0-4,6-7,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-81> visited #<intset 82-103> out #<intmap 9+0-4,6-7,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,99> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82,85,96,98> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82,85,96> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82,85> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-81> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,99> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82,85,96,98> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82,85,96> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82,85> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-81> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,99> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82,85,96,98> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82,85,96> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82,85> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-80,82> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; (lp worklist #<intset 13-81> visited #<intset 81-103> out #<intmap 9+0-4,6-7,22,47-48,52,56,58-72>)
;;; [the 6 loop states above repeat forever]
--8<---------------cut here---------------end--------------->8---
To be continued ...
Mark
^ permalink raw reply related [flat|nested] 4+ messages in thread