I would expect the following loop to exit after one (or maybe two) iterations but it runs until PIDs get recycled:
$ : & while [[ $(jobs) ]]; do :; done
TRACE: pid 51259: delete_old_job: found pid 61589 in job 0 with state 4
The loop does not terminate because
jobs just keeps printing
+ Done :.
Hitting ^C during this loop sometimes puts the shell in a really weird state, with half the output echoed back and half seemingly going to readline but not echoed back. Sometimes
bash: wait_for: No record of process xxxxx is printed.