
1 AlohaV2 Dec 27, 2020 via iPhone 开启 coredump,还原现场 |
2 lzr325 Dec 27, 2020 via Android coredump,backtrace |
3 learningman OP |
4 lewis89 Dec 27, 2020 @learningman #3 openwrt 上装个 gdb,哈哈 不过我路由器是 x86 内存 CPU 都很大,你如果是 mips 就难了 |
5 lewis89 Dec 27, 2020 @learningman #3 用 VPN 吧 这么玩 太折腾人了,而且内核态切换到用户态 开销很大,搞了半天可能还是 VPN 好用 |
6 lewis89 Dec 27, 2020 另外为啥不直接弄成 iptables 的内核模块,不过可能 debug 难度比应用态难度要大,应用态还能 coredump |
7 lewis89 Dec 27, 2020 给你 star 了 又了解了一个库 libnetfilter_queue 可以在应用态 定制规则过滤放行 packet |
8 zeroxia Dec 27, 2020 如果实在抓不到 coredump 。那么就拼命加 log 吧…… |
9 Hconk Dec 27, 2020 via iPhone breakpad |
10 learningman OP @lewis89 内核模块崩了整个系统就 boom 了,这样比较安全 流量不大,只需要清洗出方向流量,这个性能够用了 |
11 no1xsyzy Dec 28, 2020 > 父进程观察到子进程挂掉就重启 如果你用的是 systemd 的话就自动 coredump 了( |
13 wms Dec 28, 2020 @learningman 目前看有几个问题, pktb 分配后有好几个地方都直接 return 掉了, 没有释放, 会导致内存泄漏, 这样就会导致 str = malloc() 分配失败, 而 str 没有判断是否分配成功. 另外你可以编译的时候加上-g 标志,我看你段错误的地址是打印出来的, 可以用 addr2line 查看出错的地址. 还有调试内存错误的神器 -fsanitize=address, clang 和 gcc 4.8 以上都支持 |
14 lewis89 Dec 28, 2020 @bfdh #12 空间小,125mb ROM 的小米 我都是省着在用,用 x86 之后 我直接在路由器上编译 调试代码了,因为内存跟 CPU 闲置太多了,即使是 J1900 编译 Openwrt 也绰绰有余了 |
15 aneostart173 Dec 28, 2020 我感觉这种情况八成是很小的内存泄漏,最后导致内存分配失败。 |