Closed widavies closed 5 months ago
Hi! This is a known bug in the latest ART tester release. Please re-run the tests with the previous ART tester version.
@pyhys I just went through Profinet Conformance testing (and passed!) at the Profinet Conformance Center in Tennessee - I reported a handful of issues with ART, which got relayed to the development team on it, so hopefully we'll have a fixed version soon!
Thanks for taking a look
Great! Please reopen if there are more issues.
In Behavior - Scenario 8, ART sends a AR Connect request, waits for a AR success response, and then sends an identical AR connect request.
While the stack does raise an alarm, and essentially just ignores the duplicate AR Connect request, it does seem like the latest version of ART wants an explicit failure response like this:
This error is properly reconstructed within ART, however, the session is free'd too earlier that the response buffer is cleared before
pf_cmrpc_send_once
gets a chance to run.Diving into the code:
1) Within
pf_cmrpc_rm_connect_ind
, we have some code that checks for a duplicate session:Later on in this file, if we detect a duplicate session (
pr_ar_2 != NULL
), we callpf_cmdev_cm_abort(net, p_ar_2)
The issue with this, is that
pf_cmdev_cm_abort
eventually callspf_cmrpc_cmdev_state_ind
:pf_session_release
frees thep_session_info_t
, which subsequently clearsout_buffer
and related fields. Eventually, whenpf_cmrpc_send_once
is run, there is nothing to respond with, and the error message is not sent.I have a temporary workaround, I'm not sure if this may have other issues (or maybe a memory leak), but replacing the
if(p_ar_2 != NULL)
block inpf_cmrpc_rm_connect_ind
with the following fixes the test:Setting
p_sess->release_in_progress
is a hack, but it preventspf_session_release
from getting called right away, then it sets thep_sess->kill_session
flag to true so thatpf_session_release
is still called after the response is sent.Let me know if this issue is confirmed or if there is a better solution. Thanks.