Bug ID 857845: ASSERTs in hudproxy_tcp_repick() converted into an OOPS

Last Modified: Mar 23, 2020

Bug Tracker

Affected Product:  See more info
BIG-IP LTM(all modules)

Known Affected Versions:
13.1.0, 13.1.0.1, 13.1.0.2, 13.1.0.3, 13.1.0.4, 13.1.0.5, 13.1.0.6, 13.1.0.7, 13.1.0.8, 13.1.1, 13.1.1.1, 13.1.1.2, 13.1.1.3, 13.1.1.4, 13.1.1.5, 13.1.3, 13.1.3.1, 13.1.3.2, 14.1.0, 14.1.0.1, 14.1.0.2, 14.1.0.3, 14.1.0.4, 14.1.0.5, 14.1.0.6, 14.1.2, 14.1.2.1, 14.1.2.2, 14.1.2.3, 15.0.0, 15.0.1, 15.0.1.1, 15.0.1.2

Opened: Dec 04, 2019
Severity: 3-Major

Symptoms

Hudproxy_tcp_repick() asserts that no data is present. Example of assertion in /var/log/tmm: notice panic: ../modules/hudproxy/tcp/tcp_proxy.c:1610: Assertion "server drained" failed.

Impact

BIG-IP fails to process traffic when asserts fail.

Conditions

If data is present, then assertion fails. Example of how to recreate ("server drained" failed): -The virtual server uses an iRule containing both the TCP::collect and LB::detach statements. -The LB::detach statement is not applied in a USER_REQUEST or USER_RESPONSE event. -The server-side connection is detached before the TCP::collect has been drained.

Workaround

There is no work around. To avoid ("server drained" failed): -Use TCP::notify to generate a USER_REQUEST or USER_RESPONSE event, and detach the server connection within the event. For more information, refer to DevCentral iRules on TCP::notify.

Fix Information

None

Behavior Change