zero-shot timers race condition demo: ------------------------------------- This trivial project counts 7-bit pending messages. Each message calls a zero-timer that resets the counter. To see the race condition, just move a 14-bit high resolution fader/knob, and then searchin the log when "ga" becomes "2" I would happily accept any lower-performance option that would remove this issue. Thank you. Just the rules: --------------- OK behavior: 228454 - RULE 1.2:1 assignment: (ga=0) = 0 228458 - RULE 1.1:1 expression: (ga=ga+1) = 1 228458 - RULE 1.2:1 assignment: (ga=0) = 0 228458 - RULE 1.1:1 expression: (ga=ga+1) = 1 228458 - RULE 1.2:1 assignment: (ga=0) = 0 Undesired behavior: 228461 - RULE 1.2:1 assignment: (ga=0) = 0 228465 - RULE 1.1:1 expression: (ga=ga+1) = 1 228465 - RULE 1.1:1 expression: (ga=ga+1) = 2 <<<<<<<<<<<<<<<<<<<< my problem 228465 - RULE 1.2:1 assignment: (ga=0) = 0 228465 - RULE 1.2:1 assignment: (ga=0) = 0 full log: --------- OK behavior: 228454 - RULE 1.2:1 assignment: (ga=0) = 0 228458 - MIDI IN [DDJ-1000]: B2 13 56 228458 - IN 1.1 MIDI B2 13 56, oo=0xB2 pp=0x13 qq=0x56 228458 - RULE 1.1:1 expression: (ga=ga+1) = 1 228458 - OUT 1.1 One-shot timer "post_process": 0 ms delay 228458 - IN 1.2 On timer "post_process" 228458 - RULE 1.2:1 assignment: (ga=0) = 0 228458 - MIDI IN [DDJ-1000]: B2 33 47 228458 - IN 1.1 MIDI B2 33 47, oo=0xB2 pp=0x33 qq=0x47 228458 - RULE 1.1:1 expression: (ga=ga+1) = 1 228458 - OUT 1.1 One-shot timer "post_process": 0 ms delay 228458 - IN 1.2 On timer "post_process" 228458 - RULE 1.2:1 assignment: (ga=0) = 0 Undesired behavior: 228461 - RULE 1.2:1 assignment: (ga=0) = 0 228465 - MIDI IN [DDJ-1000]: B2 13 56 228465 - IN 1.1 MIDI B2 13 56, oo=0xB2 pp=0x13 qq=0x56 228465 - RULE 1.1:1 expression: (ga=ga+1) = 1 228465 - MIDI IN [DDJ-1000]: B2 33 68 228465 - IN 1.1 MIDI B2 33 68, oo=0xB2 pp=0x33 qq=0x68 228465 - RULE 1.1:1 expression: (ga=ga+1) = 2 <<<<<<<<<<<<<<<<<<<< my problem 228465 - OUT 1.1 One-shot timer "post_process": 0 ms delay 228465 - IN 1.2 On timer "post_process" 228465 - RULE 1.2:1 assignment: (ga=0) = 0 228465 - OUT 1.1 One-shot timer "post_process": 0 ms delay 228465 - IN 1.2 On timer "post_process" 228465 - RULE 1.2:1 assignment: (ga=0) = 0