DCE/RPC Fragmentation Problem with Community Stack and Automated RT Tester
Posted: 02 Dec 2025, 11:41
Hi everyone!
We are porting the community stack to one of our embedded Linux device by extending and adapting the Raspberry Pi example.
Now we test the device with the Automated RT tester, but unfortunately most of the tests (beyond DCP) fail at the DCE/RPC Connect Request step with this error
ART-Log:
The reason is that the community stack sends two FACKs as answer to the fragmented connection request, because somehow it processes the received connect request packet twice (or does not clear the receive buffer?),
and the second time processing it calls clrpc_sc_send_fack() from line 1087 in clrpc_sc.c
Community-Stack Log:
Is it a bug in the stack or are there any ideas how to suppress the double-processing and the sending of the second FACK packet?
Please find attached the wireshark trace, the ART tester log and the stack application log (CLRPC trace mode enabled with level CHAT) Thank you very much for your help!
We are porting the community stack to one of our embedded Linux device by extending and adapting the Raspberry Pi example.
Now we test the device with the Automated RT tester, but unfortunately most of the tests (beyond DCP) fail at the DCE/RPC Connect Request step with this error
ART-Log:
Code: Select all
11:16:57 - Starting Testcase: IP_UDP_RPC_I&M_EPM - SCENARIO 1 (CLRPC)
11:17:17 - Initializing Power Outlet
11:17:19 - First Scenario Part 1: First Scenario: Checking of RPC, IP and UDP Part 1
11:17:39 - First Scenario Part 1: Test step 1: Prepare the DUT for the test run.
11:17:39 - First Scenario Part 1: Test step 2: Sending and validating ICMP ping.
11:17:42 - First Scenario Part 1: Test step 3: Read and validate the I&M0FilterData from the dut.
11:17:42 - First Scenario Part 1: Test step 4: Establish an IOC-AR with 'little endianess'.
11:17:43 - ERROR: DCE/RPC Layer: FragmentNmb not valid.. Requirement: 0x0001. Data: 0x0000
11:17:43 - ERROR: First Scenario Part 1: Test step 5: Failed to establish an IOC-AR with little endianess.
and the second time processing it calls clrpc_sc_send_fack() from line 1087 in clrpc_sc.c
Community-Stack Log:
Code: Select all
[2025-12-02 10:16:57.869] CHAT libpncs CLRPC_SV sid(1) scall(00000000) ptype(4294967295)
[2025-12-02 10:16:57.966] CHAT libpncs CLRPC_LOWER <<< CLRPC_REQ_LOWER DONE --- lower(accbe0c0) opc(15) rsp(1), user_id(acadb0a8)
[2025-12-02 10:16:57.966] CHAT libpncs CLRPC_SV h(0) rsp(1) lower(accbe0c0) opcode(15)
[2025-12-02 10:16:57.966] CHAT libpncs CLRPC_SV recv.ind: lower(accbe0c0) lower.sock_fd(1) server.sock_fd(1)
[2025-12-02 10:16:57.966] NOTE libpncs CLRPC_SV <<< server_id(0) --- RECV.ind --- lower(accbe0c0) ip_addr(c0a80019:49351) len(1464)
[2025-12-02 10:16:57.966] NOTE_HIGH libpncs CLRPC_SV_PKT === RECV --- ip(c0a80019) port(49351) server_boot(0) serial(0) fragnum(0) drep0_1_2(0x10 0 0)
[2025-12-02 10:16:57.966] NOTE_HIGH libpncs CLRPC_SV_PKT .RECV ptype(0) opnum(0) len(1384) flags(0x24:F---i-) flags2(0)
[2025-12-02 10:16:57.966] NOTE_HIGH libpncs CLRPC_SV_PKT .RECV actuid(855ff737-cf70-11f0-91a8-a8bbcc000001) actseq(0)
[2025-12-02 10:16:57.966] NOTE_HIGH libpncs CLRPC_SV_PKT .RECV ifuuid(dea00001-6c97-11d1-8271-00a02442df7d) vers=0x00000001
[2025-12-02 10:16:57.966] NOTE_HIGH libpncs CLRPC_SV_PKT .RECV objuid(dea00000-6c97-11d1-8271-0001004102b3)
[2025-12-02 10:16:57.966] CHAT libpncs CLRPC_SV sid(0) if_uuid(e1af8308-5d1f-11c9-91a4-08002b14a0fa) !=
[2025-12-02 10:16:57.966] CHAT libpncs CLRPC_SV pkt.if_id(dea00001-6c97-11d1-8271-00a02442df7d)
[2025-12-02 10:16:57.966] CHAT libpncs CLRPC_SV epm_lookup_server found with find_method(1) sid(1)
[2025-12-02 10:16:57.966] NOTE libpncs CLRPC_SV FORWARDING from sid(0) to sid(1)
[2025-12-02 10:16:57.966] CHAT libpncs CLRPC_SV sid(1) scall_cnt(1) max_scalls(123)
[2025-12-02 10:16:57.966] CHAT libpncs CLRPC_SV sid(1) actuid(855ff737-cf70-11f0-91a8-a8bbcc000001)
[2025-12-02 10:16:57.966] CHAT libpncs CLRPC_SV sid(1) new cid(2)(accc67c0)
[2025-12-02 10:16:57.966] CHAT libpncs CLRPC_UPPER hash(acadae98) entry(accc67f0) user_ptr(accc67c0)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_UPPER timeout(7500 msec), running(0)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) DISPATCH: busy(0) in_queue(0) upper(00000000) lower(accbe0c0) oneshot(0) send(00000000)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) REQUEST: state(1) seq:pkt(0)sc(4294967295) op(0) sem(1) fragnum:pkt(0)sc(0) flags(36) len(1384)
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV cid(2) curr-state(1) new-state(CST_INIT)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_UPPER timeout(7500 msec), running(1)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) curr-state(1) new-state(CST_RECV) seq(4294967295) fragnum(0)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV pkt.opnum(0).seq(0).sem(1).fragnum(0).flags(0x24).len(1384)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV sid(1) upper(0xaccc1420)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV pkt.len(1384)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV alloc_size(66432)
[2025-12-02 10:16:57.967] UNEXP libpncs CLRPC_SV resize call.alloc_len(66432) to server.alloc_len(8084)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) from.ip(0xc0a80019) from.port(49351) opnum(0) drep(0) sem(1) alloc_len(8084)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) obj_id(dea00000-6c97-11d1-8271-0001004102b3)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_UPPER timeout(7500 msec), running(1)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) send.ptype = PT_FACK fack_serial(0)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) state(2)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV sid(1) scall(accc67c0) ptype(9)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV dequeue cid(2)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) DISPATCH: busy(1) in_queue(1) upper(00000000) lower(00000000) oneshot(0) send(accc3fc0)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) => busy.queueing
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV copy pktlen(1384) to offset(0)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV recv.provide: lower(accbe0c0) lower.sock_fd(1) server.sock_fd(2)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV clrpc_sc_dispatch:cid(2) sending(1) loop again: upper(00000000) lower(00000000) oneshot(0) send(accc3fc0)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) SEND_PREPARE: state(2) ptype(9)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV window_size(1) serial_num(0)
[2025-12-02 10:16:57.967] NOTE libpncs CLRPC_SV >>> server_id(1) --- SEND.req --- lower(accc3fc0) ip_addr(c0a80019:49351) len(100) ptype(9)
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT === SEND --- ip(c0a80019) port(49351) server_boot(2) serial(0) fragnum(0) drep0_1_2(0x10 0 0)
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT .SEND ptype(9) opnum(0) len(20) flags(0:------) flags2(0)
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT .SEND actuid(855ff737-cf70-11f0-91a8-a8bbcc000001) actseq(0)
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT .SEND ifuuid(dea00001-6c97-11d1-8271-00a02442df7d) vers=0x00000001
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT .SEND objuid(dea00000-6c97-11d1-8271-0001004102b3)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) state(2) next_state(2)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV clrpc_sc_dispatch:cid(2) sending(0) done.
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_LOWER <<< CLRPC_REQ_LOWER DONE --- lower(accbe750) opc(15) rsp(1), user_id(acadb0a8)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV h(0) rsp(1) lower(accbe750) opcode(15)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV recv.ind: lower(accbe750) lower.sock_fd(1) server.sock_fd(1)
[2025-12-02 10:16:57.967] NOTE libpncs CLRPC_SV <<< server_id(0) --- RECV.ind --- lower(accbe750) ip_addr(c0a80019:49351) len(1464)
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT === RECV --- ip(c0a80019) port(49351) server_boot(0) serial(0) fragnum(0) drep0_1_2(0x10 0 0)
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT .RECV ptype(0) opnum(0) len(1384) flags(0x24:F---i-) flags2(0)
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT .RECV actuid(855ff737-cf70-11f0-91a8-a8bbcc000001) actseq(0)
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT .RECV ifuuid(dea00001-6c97-11d1-8271-00a02442df7d) vers=0x00000001
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT .RECV objuid(dea00000-6c97-11d1-8271-0001004102b3)
[2025-12-02 10:16:57.967] NOTE_HIGH libpncs CLRPC_SV_PKT .RECV ifuuid scall(dea00001-6c97-11d1-8271-00a02442df7d)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) DISPATCH: busy(0) in_queue(0) upper(00000000) lower(accbe750) oneshot(0) send(00000000)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) REQUEST: state(2) seq:pkt(0)sc(0) op(0) sem(1) fragnum:pkt(0)sc(0) flags(36) len(1384)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV cid(2) curr-state(2) new-state(CST_RECV) seq(0) fragnum(0)
[2025-12-02 10:16:57.967] CHAT libpncs CLRPC_SV pkt.opnum(0).seq(0).sem(1).fragnum(0).flags(0x24).len(1384)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_UPPER timeout(7500 msec), running(1)
[2025-12-02 10:16:57.968] UNEXP libpncs CLRPC_SV frags out of order scall.fragnr(0) + 1 != pkt.fragnr(0), drop pkt
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV cid(2) send.ptype = PT_FACK fack_serial(0)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV cid(2) state(2)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV sid(1) scall(accc67c0) ptype(9)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV dequeue cid(2)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV cid(2) DISPATCH: busy(1) in_queue(1) upper(00000000) lower(00000000) oneshot(0) send(accc32a0)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV cid(2) => busy.queueing
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV recv.provide: lower(accbe750) lower.sock_fd(1) server.sock_fd(2)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV clrpc_sc_dispatch:cid(2) sending(1) loop again: upper(00000000) lower(00000000) oneshot(0) send(accc32a0)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV cid(2) SEND_PREPARE: state(2) ptype(9)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV window_size(1) serial_num(0)
[2025-12-02 10:16:57.968] NOTE libpncs CLRPC_SV >>> server_id(1) --- SEND.req --- lower(accc32a0) ip_addr(c0a80019:49351) len(100) ptype(9)
[2025-12-02 10:16:57.968] NOTE_HIGH libpncs CLRPC_SV_PKT === SEND --- ip(c0a80019) port(49351) server_boot(2) serial(0) fragnum(0) drep0_1_2(0x10 0 0)
[2025-12-02 10:16:57.968] NOTE_HIGH libpncs CLRPC_SV_PKT .SEND ptype(9) opnum(0) len(20) flags(0:------) flags2(0)
[2025-12-02 10:16:57.968] NOTE_HIGH libpncs CLRPC_SV_PKT .SEND actuid(855ff737-cf70-11f0-91a8-a8bbcc000001) actseq(0)
[2025-12-02 10:16:57.968] NOTE_HIGH libpncs CLRPC_SV_PKT .SEND ifuuid(dea00001-6c97-11d1-8271-00a02442df7d) vers=0x00000001
[2025-12-02 10:16:57.968] NOTE_HIGH libpncs CLRPC_SV_PKT .SEND objuid(dea00000-6c97-11d1-8271-0001004102b3)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV cid(2) state(2) next_state(2)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV clrpc_sc_dispatch:cid(2) sending(0) done.
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_LOWER <<< CLRPC_REQ_LOWER DONE --- lower(accc3fc0) opc(14) rsp(1), user_id(acadb1b0)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV h(0) rsp(1) lower(accc3fc0) opcode(14)
[2025-12-02 10:16:57.968] NOTE libpncs CLRPC_SV <<< server_id(1) --- SEND.cnf --- lower(accc3fc0) rsp(1)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV sid(1) scall(00000000) ptype(4294967295)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_LOWER <<< CLRPC_REQ_LOWER DONE --- lower(accc32a0) opc(14) rsp(1), user_id(acadb1b0)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV h(0) rsp(1) lower(accc32a0) opcode(14)
[2025-12-02 10:16:57.968] NOTE libpncs CLRPC_SV <<< server_id(1) --- SEND.cnf --- lower(accc32a0) rsp(1)
[2025-12-02 10:16:57.968] CHAT libpncs CLRPC_SV sid(1) scall(00000000) ptype(4294967295)
[2025-12-02 10:16:57.969] NOTE libpncs CLRPC_UPPER >>> rqb(0xacaca248) h(255) opc(5)Please find attached the wireshark trace, the ART tester log and the stack application log (CLRPC trace mode enabled with level CHAT) Thank you very much for your help!