Repository navigation
Conversation
netdev_cmd_ping() computed avg_time / received before checking that any reply arrived. When every request times out, received is 0 and the integer division traps (SIGFPE on the simulator, a fault on Cortex-M), taking the shell thread down. Only compute the average inside the existing received > 0 branch where it is printed. Fixes RT-Thread#11852
|
👋 感谢您对 RT-Thread 的贡献!Thank you for your contribution to RT-Thread! 为确保代码符合 RT-Thread 的编码规范,请在你的仓库中执行以下步骤运行代码格式化工作流(如果格式化CI运行失败)。 🛠 操作步骤 | Steps
完成后,提交将自动更新至 如有问题欢迎联系我们,再次感谢您的贡献!💐 |
📌 Code Review Assignment🏷️ Tag: componentsReviewers: @Maihuanyi Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2026-10-06 14:49 CST)
📝 Review Instructions
|
拉取/合并请求描述:(PR description)
为什么提交这份PR (why to submit this PR)
Fixes #11852.
netdev_cmd_ping()dividesavg_timebyreceivedbefore checking that any reply came back. When every request times out (unreachable target),receivedstays 0 and the integer division traps, which kills the shell thread (SIGFPE on the simulator, a fault on Cortex-M).你的解决方案是什么 (what is your solution)
Only compute the average inside the existing
if (received > 0)branch, which is the only place it is printed. No other behaviour change.请提供验证的bsp和config (provide the config and bsp)
bsp/simulator(Linux x86-64, GCC 14, ASan as enabled by the BSP)RT_USING_NETDEV,NETDEV_USING_PING). For the test I registered a local dummy netdev (UP + LINK_UP) whoseops->pingreturns-RT_ETIMEOUT; that harness is not part of this PR.Before:
ping 192.0.2.1prints four timeouts and thenAddressSanitizer: FPE ... netdev_cmd_ping components/net/netdev/src/netdev.c:1428.After: prints
4 packets transmitted, 0 received, 100% packet lossand returns tomsh />. With the dummypingreturning replies, the min/max/average line is printed as before.当前拉取/合并请求的状态 Intent for your PR
必须选择一项 Choose one (Mandatory):
代码质量 Code Quality:
我在这个拉取/合并请求中已经考虑了 As part of this pull request, I've considered the following:
#if 0代码,不包含已经被注释了的代码 All redundant code is removed and cleaned up