Bug ID 757653: Using TCP::close with ASM may cause a crash.

Last Modified: Apr 28, 2025

Affected Product(s):
BIG-IP LTM(all modules)

Known Affected Versions:
11.5.4, 11.5.4 HF1, 11.5.4 HF2, 11.5.4 HF3, 11.5.4 HF4, 11.5.5, 11.5.6, 11.5.7, 11.5.8, 11.5.9, 11.5.10, 11.6.0, 11.6.0 HF1, 11.6.0 HF2, 11.6.0 HF3, 11.6.0 HF4, 11.6.0 HF5, 11.6.0 HF6, 11.6.0 HF7, 11.6.0 HF8, 11.6.1, 11.6.1 HF1, 11.6.1 HF2, 11.6.2, 11.6.2 HF1, 11.6.3, 11.6.3.1, 11.6.3.2, 11.6.3.3, 11.6.3.4, 11.6.4, 11.6.5, 11.6.5.1, 11.6.5.2, 11.6.5.3, 12.0.0, 12.0.0 HF1, 12.0.0 HF2, 12.0.0 HF3, 12.0.0 HF4, 12.1.0, 12.1.0 HF1, 12.1.0 HF2, 12.1.1, 12.1.1 HF1, 12.1.1 HF2, 12.1.2, 12.1.2 HF1, 12.1.2 HF2, 12.1.3, 12.1.3.1, 12.1.3.2, 12.1.3.3, 12.1.3.4, 12.1.3.5, 12.1.3.6, 12.1.3.7, 12.1.4, 12.1.4.1, 12.1.5, 12.1.5.1, 12.1.5.2, 12.1.5.3, 12.1.6

Opened: Feb 05, 2019

Severity: 3-Major

Symptoms

ASM may hold HTTP requests, which prevents connection establishment to the backend. When ASM prevents connection establishment this way, it also prevents TCP::close from terminating the connection to the client. Repeated calls to TCP::close on a pipelined connection while ASM holds connection establishment may cause a counter to overflow, which triggers an assertion failure.

Impact

ASM blocks HTTP requests that are not responded to from the iRule. The client sends pipelined HTTP requests. Traffic is interrupted while the TMM restarts.

Conditions

-- A virtual server is configured with ASM. -- An iRule which calls HTTP::respond and TCP::close for some requests.

Workaround

TCP::close should be called once per connection, not once per HTTP request. A workaround is to guard the TCP::close call this way within the HTTP_REQUEST event: if {![info exists closed]} { set closed 1 TCP::close }

Fix Information

None

Behavior Change

Guides & references

K10134038: F5 Bug Tracker Filter Names and Tips