Starting :init: with pid 0
  1:	proc  0 (:init:) line 102 "qrcu.spin" (state 1)	[ctr[idx] = 1]
  2:	proc  0 (:init:) line 103 "qrcu.spin" (state 2)	[ctr[ !(idx)] = 0]
  3:	proc  0 (:init:) line 104 "qrcu.spin" (state 3)	[i = 0]
  4:	proc  0 (:init:) line 106 "qrcu.spin" (state 4)	[((i<2))]
  5:	proc  0 (:init:) line 107 "qrcu.spin" (state 5)	[readerprogress[i] = 0]
Starting qrcu_reader with pid 1
  6:	proc  0 (:init:) line 108 "qrcu.spin" (state 6)	[(run qrcu_reader(i))]
  6:	proc  0 (:init:) line 109 "qrcu.spin" (state 7)	[i = (i+1)]
  7:	proc  1 (qrcu_reader) line  16 "qrcu.spin" (state 1)	[(1)]
  8:	proc  0 (:init:) line 106 "qrcu.spin" (state 4)	[((i<2))]
  9:	proc  1 (qrcu_reader) line  19 "qrcu.spin" (state 2)	[((ctr[idx]>0))]
  9:	proc  1 (qrcu_reader) line  20 "qrcu.spin" (state 3)	[ctr[idx] = (ctr[idx]+1)]
  9:	proc  1 (qrcu_reader) line  21 "qrcu.spin" (state 4)	[myidx = idx]
 10:	proc  1 (qrcu_reader) line  15 "qrcu.spin" (state 13)	[break]
 11:	proc  1 (qrcu_reader) line  27 "qrcu.spin" (state 14)	[readerprogress[me] = 1]
 12:	proc  1 (qrcu_reader) line  28 "qrcu.spin" (state 15)	[readerprogress[me] = 2]
 13:	proc  1 (qrcu_reader) line  29 "qrcu.spin" (state 16)	[ctr[myidx] = (ctr[myidx]-1)]
 14: proc 1 terminates
 15:	proc  0 (:init:) line 107 "qrcu.spin" (state 5)	[readerprogress[i] = 0]
Starting qrcu_reader with pid 1
 16:	proc  0 (:init:) line 108 "qrcu.spin" (state 6)	[(run qrcu_reader(i))]
 16:	proc  0 (:init:) line 109 "qrcu.spin" (state 7)	[i = (i+1)]
 17:	proc  1 (qrcu_reader) line  16 "qrcu.spin" (state 1)	[(1)]
 18:	proc  0 (:init:) line 110 "qrcu.spin" (state 8)	[((i>=2))]
 18:	proc  0 (:init:) line 112 "qrcu.spin" (state 13)	[i = 0]
 19:	proc  0 (:init:) line 114 "qrcu.spin" (state 14)	[((i<3))]
Starting qrcu_updater with pid 2
 20:	proc  0 (:init:) line 115 "qrcu.spin" (state 15)	[(run qrcu_updater(i))]
 20:	proc  0 (:init:) line 116 "qrcu.spin" (state 16)	[i = (i+1)]
 21:	proc  0 (:init:) line 114 "qrcu.spin" (state 14)	[((i<3))]
Starting qrcu_updater with pid 3
 22:	proc  0 (:init:) line 115 "qrcu.spin" (state 15)	[(run qrcu_updater(i))]
 22:	proc  0 (:init:) line 116 "qrcu.spin" (state 16)	[i = (i+1)]
 23:	proc  0 (:init:) line 114 "qrcu.spin" (state 14)	[((i<3))]
Starting qrcu_updater with pid 4
 24:	proc  0 (:init:) line 115 "qrcu.spin" (state 15)	[(run qrcu_updater(i))]
 24:	proc  0 (:init:) line 116 "qrcu.spin" (state 16)	[i = (i+1)]
 25:	proc  0 (:init:) line 117 "qrcu.spin" (state 17)	[((i>=3))]
 26:	proc  4 (qrcu_updater) line  54 "qrcu.spin" (state 1)	[i = 0]
 27:	proc  4 (qrcu_updater) line  56 "qrcu.spin" (state 2)	[((i<2))]
 27:	proc  4 (qrcu_updater) line  57 "qrcu.spin" (state 3)	[readerstart[i] = readerprogress[i]]
 27:	proc  4 (qrcu_updater) line  58 "qrcu.spin" (state 4)	[i = (i+1)]
 28:	proc  4 (qrcu_updater) line  56 "qrcu.spin" (state 2)	[((i<2))]
 28:	proc  4 (qrcu_updater) line  57 "qrcu.spin" (state 3)	[readerstart[i] = readerprogress[i]]
 28:	proc  4 (qrcu_updater) line  58 "qrcu.spin" (state 4)	[i = (i+1)]
 29:	proc  4 (qrcu_updater) line  59 "qrcu.spin" (state 5)	[((i>=2))]
 30:	proc  4 (qrcu_updater) line  55 "qrcu.spin" (state 9)	[break]
 31:	proc  4 (qrcu_updater) line  64 "qrcu.spin" (state 11)	[(1)]
 32:	proc  4 (qrcu_updater) line  64 "qrcu.spin" (state 12)	[sum = ctr[0]]
 33:	proc  4 (qrcu_updater) line  64 "qrcu.spin" (state 13)	[i = 1]
 34:	proc  4 (qrcu_updater) line  64 "qrcu.spin" (state 22)	[sum = (sum+ctr[i])]
 35:	proc  4 (qrcu_updater) line  66 "qrcu.spin" (state 23)	[((sum<=1))]
 36:	proc  4 (qrcu_updater) line  66 "qrcu.spin" (state 24)	[(1)]
 37:	proc  4 (qrcu_updater) line  66 "qrcu.spin" (state 25)	[sum = ctr[0]]
 38:	proc  4 (qrcu_updater) line  66 "qrcu.spin" (state 26)	[i = 1]
 39:	proc  4 (qrcu_updater) line  66 "qrcu.spin" (state 35)	[sum = (sum+ctr[i])]
 40:	proc  4 (qrcu_updater) line  80 "qrcu.spin" (state 66)	[else]
 41:	proc  4 (qrcu_updater) line  80 "qrcu.spin" (state 67)	[(1)]
 42:	proc  4 (qrcu_updater) line  86 "qrcu.spin" (state 70)	[i = 0]
 43:	proc  4 (qrcu_updater) line  88 "qrcu.spin" (state 71)	[((i<2))]
 43:	proc  4 (qrcu_updater) line  89 "qrcu.spin" (state 72)	[sum = (sum+((readerstart[i]==1)&&(readerprogress[i]==1)))]
 43:	proc  4 (qrcu_updater) line  91 "qrcu.spin" (state 73)	[i = (i+1)]
 44:	proc  4 (qrcu_updater) line  88 "qrcu.spin" (state 71)	[((i<2))]
 44:	proc  4 (qrcu_updater) line  89 "qrcu.spin" (state 72)	[sum = (sum+((readerstart[i]==1)&&(readerprogress[i]==1)))]
 44:	proc  4 (qrcu_updater) line  91 "qrcu.spin" (state 73)	[i = (i+1)]
 45:	proc  4 (qrcu_updater) line  92 "qrcu.spin" (state 74)	[((i>=2))]
spin: line  93 "qrcu.spin", Error: assertion violated
spin: text of failed assertion: assert((sum==0))
 45:	proc  4 (qrcu_updater) line  93 "qrcu.spin" (state 75)	[assert((sum==0))]
spin: trail ends after 45 steps
#processes: 5
		idx = 0
		ctr[0] = 1
		ctr[1] = 0
		readerprogress[0] = 2
		readerprogress[1] = 0
		mutex = 0
 45:	proc  4 (qrcu_updater) line  87 "qrcu.spin" (state 79)
 45:	proc  3 (qrcu_updater) line  53 "qrcu.spin" (state 10)
 45:	proc  2 (qrcu_updater) line  53 "qrcu.spin" (state 10)
 45:	proc  1 (qrcu_reader) line  17 "qrcu.spin" (state 10)
 45:	proc  0 (:init:) line 119 "qrcu.spin" (state 22) <valid end state>
6 processes created
