Versions Compared

Key

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

...

Failure to encase the wait() or await() methods inside a while loop can lead to indefinite blocking and denial of service (DoS).

Rule

Severity

Likelihood

Remediation Cost

Priority

Level

THI03-J

Low

Unlikely

Medium

P2

L3

Automated Detection

ToolVersionCheckerDescription
CodeSonar
Include Page
CodeSonar_V
CodeSonar_V
FB.MT_CORRECTNESS.WA_AWAIT_NOT_IN_LOOP
FB.MT_CORRECTNESS.WA_NOT_IN_LOOP
Condition.await() not in loop
Wait not in loop
Parasoft Jtest
Include Page
java:
Parasoft_V
java:
Parasoft_V
TRS.UWILImplemented
SonarQube Java Plugin
Include Page
SonarQube Java Plugin_V
SonarQube Java Plugin_V
S2274
 
- "Object.wait(...)" and "Condition.await(...)" should be called inside a "while" loopImplemented

Bibliography

[API 2014]

Class Object
Interface Condition

[Bloch 2001]

Item 50, "Never Invoke wait Outside a Loop"

[Goetz 2006]

Section 14.2, "Using Condition Queues"

[Lea 2000]

Section 1.3.2, "Liveness"
Section 3.2.2, "Monitor Mechanics"

...


...