Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Compliance with LCK00-J. Use private final lock objects to synchronize classes that may interact with untrusted code can reduce the likelihood of misuse by ensuring that untrusted callers cannot access the lock object.

Exceptions

VNA00-J-EX0: Class objects are created by the virtual machine; their initialization always precedes any subsequent use. Consequently, cross-thread visibility of Class objects is already assured by default.

...

Failing to ensure the visibility of a shared primitive variable may result in a thread observing a stale value of the variable.

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

VNA00-J

Medium

Probable

Medium

P8

L2

Automated Detection

Some static analysis tools are capable of detecting violations of this rule.

ToolVersionCheckerDescription
CodeSonar
Include Page
CodeSonar_V
CodeSonar_V

JAVA.CONCURRENCY.LOCK.ICS
JAVA.CONCURRENCY.SYNC.MSS
JAVA.CONCURRENCY.LOCK.STATIC
JAVA.CONCURRENCY.UG.FIELD
JAVA.CONCURRENCY.UG.PARAM
JAVA.CONCURRENCY.VOLATILE

Impossible Client Side Locking (Java)
Missing synchronized Statement (Java)
Synchronization on static (Java)
Unguarded Field (Java)
Unguarded Parameter (Java)
Useless volatile Modifier (Java)

Eclipse4.2.0
 

Not Implemented
FindBugs2.0.1
 

Not Implemented
Parasoft Jtest
Include Page
Parasoft_V
Parasoft_V
CERT.VNA00.LORD
CERT.VNA00.MRAV
Ensure that nested locks are ordered correctly
Access related Atomic variables in a synchronized block
PMD5.0.0
 

Not Implemented
Fortify
  


Not Implemented
Coverity7.5SERVLET_ATOMICITYImplemented
ThreadSafe
Include Page
ThreadSafe_V
ThreadSafe_V

CCE_SL_INCONSISTENT
CCE_CC_CALLBACK_ACCESS
CCE_SL_MIXED
CCE_SL_INCONSISTENT_COL
CCE_SL_MIXED_COL
CCE_CC_UNSAFE_CONTENT
CCE_FF_VOLATILE

Implemented

Related Guidelines

MITRE CWE

CWE-413, Improper Resource Locking
CWE-567, Unsynchronized Access to Shared Data in a Multithreaded Context
CWE-667, Improper Locking

Bibliography

[Bloch 2008]

Item 66, "Synchronize Access to Shared Mutable Data"

[Goetz 2006]

Section 3.4.2, "Example: Using Volatile to Publish Immutable Objects"

[JLS 2015]

Chapter 17, "Threads and Locks"
§17.4.3, "Programs and Program Order"
§17.4.5, "Happens-before Order"
§17.4.8, "Executions and Causality Requirements"

[JPL 2006]

Section 14.10.3, "The Happens-Before Relationship"

...


...