proccontrol: fix double-increment while erasing a dead process
authorJosh Stone <jistone@redhat.com>
Fri, 18 Nov 2016 22:49:41 +0000 (14:49 -0800)
committerJosh Stone <jistone@redhat.com>
Fri, 18 Nov 2016 22:49:41 +0000 (14:49 -0800)
commit80111056ea99daeac08bb211caa74734cd6394ac
tree9410b6d2e6a758b9e068a7e87f045fb2fb655d5f
parent64edc81ee01131502e2568749f006e3511c44fb6
proccontrol: fix double-increment while erasing a dead process

In the attach loop over waitfor_startup(), processes which fail are
erased from the set.  However, the iterator was getting incremented
again, which will skip the next process or even cause undefined behavior
if already at the end of the list.

With GCC 6.2.1, that UB manifested as an infinite loop on a self-
referential rbtree node.

The simple solution is to `continue` the loop after `erase(i++)`, as is
done in many other places with this same pattern.
proccontrol/src/process.C