There are several problems with the way ping threads are set up.
- ChannelPinger sets up a master → agent ping, and also an agent → master ping. But Launcher sets up another slave → master ping for JNLP agents (not for master-initiated ones)...and is more awkward to disable, since you must pass a system property to each agent's launch line.
- As noted here, the agent → master ping from ChannelPinger does not work at all, due to a mistake in usage of PingFailureAnalyzer. (Oddly, kohsuke introduced this extension point claiming it could be implemented in ssh-slaves, but apparently never did so there, or anywhere else!)
- The Launcher variant fails to override the nondeprecated onDead variant that gets a stack trace.