Bug 1426264 - [GSS](6.4.z) o.a.c.http11.InternalNioOutputBuffer.sendAck may improperly loop in the event of an exception
Summary: [GSS](6.4.z) o.a.c.http11.InternalNioOutputBuffer.sendAck may improperly loop...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: JBoss Enterprise Application Platform 6
Classification: JBoss
Component: Web
Version: 6.4.13
Hardware: All
OS: All
unspecified
urgent
Target Milestone: CR1
: EAP 6.4.15
Assignee: Petr Jurak
QA Contact: Radim Hatlapatka
URL:
Whiteboard:
Depends On:
Blocks: 1426611 eap6415-payload 1427196
TreeView+ depends on / blocked
 
Reported: 2017-02-23 14:59 UTC by Aaron Ogburn
Modified: 2020-04-15 15:21 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2017-05-19 08:04:41 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
bz1426264reproducer.zip (2.90 KB, application/octet-stream)
2017-02-24 13:56 UTC, Aaron Ogburn
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Knowledge Base (Solution) 2944611 0 None None None 2017-02-24 14:26:57 UTC

Description Aaron Ogburn 2017-02-23 14:59:28 UTC
Description of problem:

o.a.c.http11.InternalNioOutputBuffer.sendAck can cause a high CPU loop:

   sun.nio.ch.WindowsAsynchronousSocketChannelImpl.write0 line: not available [native method]
   sun.nio.ch.WindowsAsynchronousSocketChannelImpl.access$900 line: 43 
   sun.nio.ch.WindowsAsynchronousSocketChannelImpl$WriteTask.run line: 778 
   sun.nio.ch.WindowsAsynchronousSocketChannelImpl.implWrite line: 916 
   sun.nio.ch.AsynchronousSocketChannelImpl.write line: 382 
   sun.nio.ch.AsynchronousSocketChannelImpl.write line: 387 
   org.apache.tomcat.util.net.NioChannel.writeBytes line: 919 
   org.apache.coyote.http11.InternalNioOutputBuffer.blockingWrite line: 314 
   org.apache.coyote.http11.InternalNioOutputBuffer.sendAck line: 352


It appears NioChannel.writeBytes is raising an exception. InternalNioOutputBuffer.blockingWrite swallows that exception and returns 0, and the sendAck loop continues endlessly then over those repeated actions.


Version-Release number of selected component (if applicable):

7.5.20


How reproducible:


Steps to Reproduce:
1.Hit exception in NioChannel.writeBytes during InternalNioOutputBuffer.sendAc

Will see if there's a way to force that more deterministically

Actual results:


InternalNioOutputBuffer.sendAck hits high CPU loops in the event of an exception from NioChannel.writeBytes

Expected results:

InternalNioOutputBuffer.sendAck does not hit high CPU loop


Additional info:

Comment 2 Aaron Ogburn 2017-02-24 13:56:35 UTC
Created attachment 1257229 [details]
bz1426264reproducer.zip

Comment 3 Michael Cada 2017-04-18 09:08:21 UTC
Verified with EAP 6.4.15.CP.CR2

Comment 4 Petr Penicka 2017-05-19 08:04:41 UTC
Released on May 18 as part of EAP 6.4.15.


Note You need to log in before you can comment on or make changes to this bug.