code: func (d *Daemon) execCommandGC() {
  	for range time.Tick(5 * time.Minute) {
  		var (
  			cleaned          int
  			liveExecCommands = d.containerExecIds()
  		)
  		for id, config := range d.execCommands.Commands() {
  			if config.CanRemove {
  				cleaned++
  				d.execCommands.Delete(id, config.Pid)
  			} else {
  				if _, exists := liveExecCommands[id]; !exists {
  					config.CanRemove = true
  				}
  			}
  		}
  		if cleaned > 0 {
  			logrus.Debugf("clean %d unused exec commands", cleaned)
  		}
  	}
  }
docs: // execCommandGC runs a ticker to clean up the daemon references
  // of exec configs that are no longer part of the container.