I believe this is related to concurrent message processing of multiple suspect messages. Timer needs to be started while holding a lock - we properly publish thread references as well.
java.lang.IllegalThreadStateException
at java.lang.Thread.start(Unknown Source)
at org.jgroups.protocols.VERIFY_SUSPECT.startTimer(VERIFY_SUSPECT.java:293)
at org.jgroups.protocols.VERIFY_SUSPECT.verifySuspect(VERIFY_SUSPECT.java:240)
at org.jgroups.protocols.VERIFY_SUSPECT.up(VERIFY_SUSPECT.java:122)
at org.jgroups.protocols.FD.up(FD.java:269)
at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:309)
at org.jgroups.protocols.MERGE2.up(MERGE2.java:144)
at org.jgroups.protocols.Discovery.up(Discovery.java:244)
at org.jgroups.protocols.TP.passMessageUp(TP.java:1266)
at org.jgroups.protocols.TP.access$100(TP.java:49)
at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1809)
at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1788)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)