[
https://issues.jboss.org/browse/JBTM-2758?page=com.atlassian.jira.plugin....
]
Issue was automatically transitioned when Ondra Chaloupka created pull request #1071 in
GitHub
----------------------------------------------------------------------------------------------
Status: Pull Request Sent (was: Open)
Static code analysis: potential lock collisions FileProcessId#getpid
- interned string used as a lock
-----------------------------------------------------------------------------------------------------
Key: JBTM-2758
URL:
https://issues.jboss.org/browse/JBTM-2758
Project: JBoss Transaction Manager
Issue Type: Bug
Components: Transaction Core
Affects Versions: 5.3.4.Final
Reporter: Ondra Chaloupka
Assignee: Ondra Chaloupka
Priority: Minor
_CID-17581_: Bad choice of lock object - Potential lock collisions
at class `FileProcessId`[6] method `getpid` with error message
{quote}
Interned string as a lock may cause deadlocks or performance problems if a library also
uses the interned string as a lock.
string_literal: The string literal "0x" is an interned string.
interned_string_lock: Locking on an interned string can cause unexpected locking
collisions with third party code.
Instead of using "0x" as a lock, create a final field of type Object which is
only used as a lock.
{quote}
See Java examples at Coverity page [7]. The explanation there is that
String literals are centrally interned and could also be locked on by a
library, causing you to potentially have deadlocks or lock collisions
with other code.
There are several places [8] on net when searching for `java synchronzation on strings`.
[6]
https://github.com/jbosstm/narayana/blob/master/ArjunaCore/arjuna/classes...
[7]
https://ondemand.coverity.com/reference/7.6.1/en/coverity#N5069A
[8]
http://www.javalobby.org/java/forums/t96352.html
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)