[ 
https://issues.apache.org/jira/browse/LANG-369?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sebb reopened LANG-369:
-----------------------


I think the wrong lock object is used in the synchronization.

The code uses the CAUSE_METHOD_NAMES object as the lock and then changes it in 
the synchronized block, i.e. the lock object is changed.

This occurs in removeCauseMethodName() and addCauseMethodName().

Either lock on the class, or use a dummy static final Object as the lock.

This applies to 2.4 branch and trunk


> ExceptionUtils not thread-safe
> ------------------------------
>
>                 Key: LANG-369
>                 URL: https://issues.apache.org/jira/browse/LANG-369
>             Project: Commons Lang
>          Issue Type: Bug
>            Reporter: Sebb
>             Fix For: 2.4
>
>         Attachments: LANG-369.patch
>
>
> The ExceptionUtils class does not appear to be thread-safe:
> - CAUSE_METHOD_NAMES is not final, so may not be visible to all threads
> - addCauseMethodName() and removeCauseMethodName() can update 
> CAUSE_METHOD_NAMES but are not synch.
> - all accesses to CAUSE_METHOD_NAMES probably need to be synchronised
> The documentation does not state whether or not the class is thread-safe, but 
> given that it only has static methods it does not make any sense unless it is 
> thread-safe.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to