Hello,
Why does my RTCS and application TASK crash sometimes if there are a burst of ARP or NBNS packs a few micro seconds apart? Is there a way to prevent the stack from crashing?
Task stats while running:
Interrupt stack: | size 00001024 | used 00000684 |
SIZE | USED | TASK ID | NAME |
00013000(000032C8) | 00002988(00000BAC) 00010001 | Bridge | |
00003000(00000BB8) | 00002024(000007E8) 00010002 | TCP/IP |
M52259EVB running MQX 3.4 on CW ver 7.1.2
More info:
I caught the failure in the "_int_unexpected_isr"
Data values:
vector 2
offset 8
TASK_ID 0x0010002 (this is the TCP/IP)
td_ptr 0x40001000
basic_frame_ptr 0x2000A598
kernel_data -> IN_ISR 1
basic_frame_ptr -> FRAME.RETURN_ADDRESS 0x0005640C <RTCS_part_alloc>
basic_frame_ptr -> FRAME.STATUS_REGISTER 0x2004
If this problem cant be corrected or fixed is there a way to have this unexpected_isr reset the task rather than just doing a _task_block()?
Yes. The default for an 'unexpected' isr is to block the task. You can install a new default isr with _int_install_default_isr().
Regarding ARP Floods, although possibly not your problem... we found an ARP flood with a switch loop (oops!) can cause MQX to completely consume the CPU. 100% of the processing was in the Ethernet ISRs and TCPIP_Task; our application was totally starved.
We chose to add protection in the Ethernet driver.
Hope that helps!
+Joel.
Hi Joel,
Can you please let me know how did you protect the switch loop issue in Ehternet driver?
Thanks,
Mohsin