yamt commented on a change in pull request #5252:
URL: https://github.com/apache/incubator-nuttx/pull/5252#discussion_r793195538
##########
File path: net/tcp/tcp_send_buffered.c
##########
@@ -355,10 +355,39 @@ static uint16_t psock_send_eventhandler(FAR struct
net_driver_s *dev,
FAR void *pvconn, FAR void *pvpriv,
uint16_t flags)
{
- FAR struct tcp_conn_s *conn = (FAR struct tcp_conn_s *)pvconn;
+ /* FAR struct tcp_conn_s *conn = (FAR struct tcp_conn_s *)pvconn;
+ *
+ * Do not use pvconn argument to get the TCP connection pointer (the above
+ * commented line) because pvconn is normally NULL for some events like
+ * NETDEV_DOWN. Instead, the TCP connection pointer can be reliably
+ * obtained from the corresponding TCP socket.
+ */
+
FAR struct socket *psock = (FAR struct socket *)pvpriv;
+ FAR struct tcp_conn_s *conn;
bool rexmit = false;
+ DEBUGASSERT(psock != NULL);
+
+ /* Get the TCP connection pointer reliably from
+ * the corresponding TCP socket.
+ */
+
+ conn = psock->s_conn;
+ DEBUGASSERT(conn != NULL);
+
+ /* The TCP socket is connected and, hence, should be bound to a device.
+ * Make sure that the polling device is the one that we are bound to.
+ */
+
+ DEBUGASSERT(conn->dev != NULL);
Review comment:
> I think it is reasonable to add this debug assert soon to the code
(possibly more complex condition with a better debug). Let's investigate the
discovered issue first.
it rarely happens in our CI. actually i have noticed it only once.
i don't want to introduce a CI job dedicated to this investigation.
if you think the assertions make sense, just add them.
our CI will consume it sooner or later. (it's usually a few days behind
nuttx master)
> have you tried to revert PR #5252 locally?
no. it isn't reproducible enough to do such bisecting.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]