[
https://issues.apache.org/jira/browse/HTTPCLIENT-1229?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13445274#comment-13445274
]
Jonathan Burke edited comment on HTTPCLIENT-1229 at 8/31/12 7:38 AM:
---------------------------------------------------------------------
Test that will should result in a null-pointer exception (a stack trace should
also be attached to this issue.) I originally placed this test at the bottom
of of TestBasicConnManager.java but that might be a little unreasonable since
it relies on executing the test case iteratively until the thread ordering
produces the undesired series of steps.
was (Author: jburke42):
Test that will should result in a null-pointer exception (a stack trace
should also be attached to this issue.)
> @ThreadSafe BasicClientConnectionManager is not threadsafe with respect to
> shutdown
> -----------------------------------------------------------------------------------
>
> Key: HTTPCLIENT-1229
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1229
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpConn
> Affects Versions: 4.2.1
> Reporter: Jonathan Burke
> Priority: Minor
> Attachments: BasicClientConnectionManager.java, stackTrace.txt,
> test.txt
>
>
> Since the assignment to variable shutdown in the shutdown method (line 262)
> is not part of the synchronize block and none of the assertNotShutdown method
> calls are within the synchronized blocks of their enclosing methods, it is
> possible to have threads execute the commands of BasicClientConnectionManager
> methods in the following sequence.
> Thread 1
> releaseConnection (or some other method that uses assertNotShutdown is called)
> assertNotShutdown - Passes - Line 183
> Thread 2
> shutdown
> the shutdown flag becomes true - Line 262
> shutdown releases this.poolEntry and this.conn in the synchronized(this)
> block
>
> Thread 1
> release connection's synchronized(this) block get's executed
> this.poolEntry is null in the try block causing a null pointer
> exception - Line 211
> this.poolEntry is null in the finally block causing a null pointer
> exception - Line 224
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]