You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言strcat数百次迭代后缓冲区溢出问题排查求助

DWM状态栏工具缓冲区溢出崩溃问题

我为DWM窗口管理器编写了一款C语言状态栏工具,用于显示时间、日期、CPU温度及电池电量。近期程序频繁崩溃并生成coredump,添加调试符号重新编译后,启动约10分钟仍会崩溃。通过coredumpctl debug分析回溯信息,发现崩溃触发于strcat(status, battery_buff);行,系统检测到缓冲区溢出,但我排查代码后仍未找到问题根源。相关代码及问题详情见我的代码仓库。

系统信息

  • OS: Arch Linux (6.10.5-arch1-1)
  • Window Manager: DWM (6.4.r5-3)
  • X11: libx11 (1.8.10-1)
  • CC: GCC (14.2.1+r32+geccf707e5ce-1)

GDB完整回溯信息

Thread 1 (Thread 0x716af50ce2c0 (LWP 1963)):
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at pthread_kill.c:44
        tid = <optimized out>
        ret = 0
        pd = <optimized out>
        old_mask = {__val = {23}}
        ret = <optimized out>
#1  0x0000716af519d463 in __pthread_kill_internal (threadid=<optimized out>, signo=6) at pthread_kill.c:78
No locals.
#2  0x0000716af5144120 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
        ret = <optimized out>
#3  0x0000716af512b4c3 in __GI_abort () at abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x20, sa_sigaction = 0x20}, sa_mask = {__val = {6786648855210017280, 0, 140721397189936, 101591911342992, 101591911411072, 100, 32, 140721397190128, 124704192526143, 101591911343744, 101591911343751, 101591911343752, 0, 140720308486146, 124704193122162, 1088703904}}, sa_flags = 907723264, sa_restorer = 0xb}
#4  0x0000716af512c354 in __libc_message_impl (fmt=fmt@entry=0x716af52ba16c "*** %s ***: terminated\n") at ../sysdeps/posix/libc_fatal.c:132
        ap = {{gp_offset = 16, fp_offset = 23653, overflow_arg_area = 0x7ffc40e44ec0, reg_save_area = 0x7ffc40e44e50}}
        fd = 2
        iov = {{iov_base = 0x716af52ba16c, iov_len = 4}, {iov_base = 0x716af52ba153, iov_len = 24}, {iov_base = 0x716af52ba172, iov_len = 17}, {iov_base = 0x3000000030, iov_len = 140721397190376}, {iov_base = 0x7ffc40e44e20, iov_len = 6786648855210017280}, {iov_base = 0x7ffc40e44e60, iov_len = 124704192628220}, {iov_base = 0x5c65b5c98010, iov_len = 528}}
        iovcnt = <optimized out>
        total = <optimized out>
        cp = <optimized out>
#5  0x0000716af522c799 in __GI___fortify_fail (msg=msg@entry=0x716af52ba153 "buffer overflow detected") at fortify_fail.c:24
No locals.
#6  0x0000716af522c124 in __GI___chk_fail () at chk_fail.c:28
No locals.
#7  0x0000716af522db1a in __strcat_chk (dest=dest@entry=0x5c65b5c9a390 " 12:17:25 PM | 08/18/2024 | 100°C | 100% ", src=src@entry=0x5c65b5c9a680 "| 100% ", destlen=<optimized out>, destlen@entry=42) at strcat_chk.c:34
        s1 = <optimized out>
        s2 = <optimized out>
        c = <optimized out>
#8  0x00005c658482c381 in strcat (__dest=0x5c65b5c9a390 " 12:17:25 PM | 08/18/2024 | 100°C | 100% ", __src=0x5c65b5c9a680 "| 100% ") at /usr/include/bits/string_fortified.h:140
No locals.
#9  main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/dmenustatus/dmenustatus/src/dmenustatus.c:87
        step = 1
        status = 0x5c65b5c9a390 " 12:17:25 PM | 08/18/2024 | 100°C | 100% "
        datetime_buff = 0x5c65b5c9a9a0 " 12:17:25 PM | 08/18/2024 "
        cputemp_buff = 0x5c65b5c9a450 "| 100°C "
        battery_buff = 0x5c65b5c9a680 "| 100% "

内容的提问来源于stack exchange,提问作者Quadsam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 10:17:03