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
[1] 61589
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 [1]+ 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.