Details
Description
In the quickfix.SocketInitiator class, lines [77, 84] are as follows (version 1.1.0 source code):
private void initialize() throws ConfigError {
synchronized (isStarted) {
if (isStarted == Boolean.FALSE)
isStarted = Boolean.TRUE;
}
}
which incorrectly uses the synchronized keyword because Java locks on objects not variables. In other words, threads would lock on Boolean.TRUE and Boolean.FALSE, which could in turn cause deadlocks.