Bug 60743

Summary: Stopping / Shutting down Test might create a deadlock due to HTTPCORE-446
Product: JMeter - Now in Github Reporter: Philippe Mouawad <p.mouawad>
Component: HTTPAssignee: JMeter issues mailing list <issues>
Status: RESOLVED FIXED    
Severity: minor CC: p.mouawad
Priority: P2    
Version: 3.1   
Target Milestone: ---   
Hardware: All   
OS: All   

Description Philippe Mouawad 2017-02-17 22:22:45 UTC
Thread Dump:
Found one Java-level deadlock:
=============================
"Thread-225":
  waiting for ownable synchronizer 0x00000007bd3b9968, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "Thread Group 1-4"
"Thread Group 1-4":
  waiting to lock monitor 0x00007f87de802888 (object 0x00000007bd62bcc8, a org.apache.http.pool.AbstractConnPool$2),
  which is held by "ResDownload-Thread-191"
"ResDownload-Thread-191":
  waiting for ownable synchronizer 0x00000007bd3c1968, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "Thread Group 1-4"

Java stack information for the threads listed above:
===================================================
"Thread-225":
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007bd3b9968> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
	at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
	at org.apache.jmeter.threads.JMeterThread.interrupt(JMeterThread.java:704)
	at org.apache.jmeter.threads.ThreadGroup.stopThread(ThreadGroup.java:414)
	at org.apache.jmeter.threads.ThreadGroup.tellThreadsToStop(ThreadGroup.java:451)
	at org.apache.jmeter.engine.StandardJMeterEngine$StopTest.tellThreadGroupsToStop(StandardJMeterEngine.java:294)
	at org.apache.jmeter.engine.StandardJMeterEngine$StopTest.run(StandardJMeterEngine.java:326)
	at java.lang.Thread.run(Thread.java:745)
"Thread Group 1-4":
	at org.apache.http.pool.AbstractConnPool$2.cancel(AbstractConnPool.java:207)
	- waiting to lock <0x00000007bd62bcc8> (a org.apache.http.pool.AbstractConnPool$2)
	at org.apache.http.pool.RouteSpecificPool.shutdown(RouteSpecificPool.java:155)
	at org.apache.http.pool.AbstractConnPool.shutdown(AbstractConnPool.java:152)
	at org.apache.http.impl.conn.JMeterPoolingClientConnectionManager.shutdown(JMeterPoolingClientConnectionManager.java:308)
	at org.apache.http.impl.client.AbstractHttpClient.close(AbstractHttpClient.java:965)
	at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.closeThreadLocalConnections(HTTPHC4Impl.java:1553)
	at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.threadFinished(HTTPHC4Impl.java:1540)
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.threadFinished(HTTPSamplerProxy.java:83)
	at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:671)
	at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:996)
	at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:978)
	at org.apache.jmeter.threads.JMeterThread.threadFinished(JMeterThread.java:643)
	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:308)
	at java.lang.Thread.run(Thread.java:745)
"ResDownload-Thread-191":
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x00000007bd3c1968> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
	at org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:377)
	at org.apache.http.pool.AbstractConnPool.access$200(AbstractConnPool.java:67)
	at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:243)
	- locked <0x00000007bd62bcc8> (a org.apache.http.pool.AbstractConnPool$2)
	at org.apache.http.pool.AbstractConnPool$2.get(AbstractConnPool.java:191)
	at org.apache.http.impl.conn.JMeterPoolingClientConnectionManager.leaseConnection(JMeterPoolingClientConnectionManager.java:239)
	at org.apache.http.impl.conn.JMeterPoolingClientConnectionManager$2.getConnection(JMeterPoolingClientConnectionManager.java:226)
	at org.apache.jmeter.protocol.http.sampler.MeasuringConnectionManager$MeasuringConnectionRequest.getConnection(MeasuringConnectionManager.java:90)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:422)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
	at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:660)
	at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:414)
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:74)
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase$ASyncSample.call(HTTPSamplerBase.java:2018)
	at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase$ASyncSample.call(HTTPSamplerBase.java:1986)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

Found 1 deadlock.
Comment 1 Philippe Mouawad 2017-02-17 22:24:00 UTC
It seems we are affected by:
 https://issues.apache.org/jira/browse/HTTPCORE-446
Comment 2 Philippe Mouawad 2017-09-16 21:58:00 UTC
Author: pmouawad
Date: Sat Sep 16 21:17:39 2017
New Revision: 1808592

URL: http://svn.apache.org/viewvc?rev=1808592&view=rev
Log:
Updated to httpcore 4.4.7 (from 4.4.6)

Modified:
    jmeter/trunk/LICENSE
    jmeter/trunk/build.properties
    jmeter/trunk/eclipse.classpath
    jmeter/trunk/lib/   (props changed)
    jmeter/trunk/lib/aareadme.txt
    jmeter/trunk/licenses/bin/README.txt
    jmeter/trunk/res/maven/ApacheJMeter_parent.pom
    jmeter/trunk/xdocs/changes.xml

Author: pmouawad
Date: Sat Sep 16 21:57:30 2017
New Revision: 1808597

URL: http://svn.apache.org/viewvc?rev=1808597&view=rev
Log:
Bug 60743 - Stopping / Shutting down Test might create a deadlock due to HTTPCORE-446
Bugzilla Id: 60743

Modified:
    jmeter/trunk/xdocs/changes.xml
Comment 3 The ASF infrastructure team 2022-09-24 20:38:07 UTC
This issue has been migrated to GitHub: https://github.com/apache/jmeter/issues/4285