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

诊断BEX事件:modbus.dll触发0xC0000409栈缓冲区溢出问题

程序崩溃问题排查求助

我用National Instruments的CVI/LabWindows IDE开发了一款程序,原本运行正常。后来引入了自己用Microsoft Visual C++ Express 2008编译的libmodbus动态链接库(dll)实现Modbus功能,整套程序运行数天后就会崩溃,通过事件查看器确认问题出在modbus.dll上。

我编译了更新版本V3.1.10(但dll内部版本号被错误标记为3.1.1.2),程序运行近一个月没崩溃,但现在问题又出现了。我推测问题仅在Modbus主站从这台PC获取数据时触发,也就是modbus.dll里的某些回复函数响应时才会出问题。

事件查看器错误信息

第一条错误

Faulting application name: HyF5674.exe, version: 0.1.16.0, time stamp: 0x647058bb
Faulting module name: modbus.dll, version: 3.1.1.2, time stamp: 0x645e1045
Exception code: 0xc0000409
Fault offset: 0x00005c2a
Faulting process id: 0x1a70
Faulting application start time: 0x01d98f9fa71ab269
Faulting application path: C:\Program Files (x86)\BBS\HyF5674\HyF5674.exe
Faulting module path: C:\Program Files (x86)\BBS\HyF5674\modbus.dll
Report Id: a551cd66-3b3d-46d0-a779-870d8c07ad93
Faulting package full name: 
Faulting package-relative application ID:

第二条错误

Faulting application name: HyF5674.exe, version: 0.1.16.0, time stamp: 0x647058bb
Faulting module name: unknown, version: 0.0.0.0, time stamp: 0x00000000
Exception code: 0xc0000005
Fault offset: 0x9b42782d
Faulting process id: 0x1a70
Faulting application start time: 0x01d98f9fa71ab269
Faulting application path: C:\Program Files (x86)\BBS\HyF5674\HyF5674.exe
Faulting module path: unknown
Report Id: d4833275-82d0-4b4f-8184-326f7fed350a
Faulting package full name: 
Faulting package-relative application ID:

信息条目

Fault bucket , type 0
Event Name: BEX
Response: Not available
Cab Id: 0

Problem signature:
P1: HyF5674.exe
P2: 0.1.16.0
P3: 647058bb
P4: modbus.dll
P5: 3.1.1.2
P6: 645e1045
P7: 00005c2a
P8: c0000409
P9: 00000015
P10: 

Attached files:
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER831A.tmp.mdmp
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER8609.tmp.WERInternalMetadata.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER8667.tmp.xml
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER8675.tmp.csv
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WER86C4.tmp.txt
\\?\C:\Users\benke\AppData\Local\Temp\WER8715.tmp.appcompat.txt
\\?\C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_HyF5674.exe_588ac012ed775396d11723c0afcf3145a6f825e7_bca12235_cab_431f876f\memory.hdmp

These files may be available here:
\\?\C:\ProgramData\Microsoft\Windows\WER\ReportQueue\AppCrash_HyF5674.exe_588ac012ed775396d11723c0afcf3145a6f825e7_bca12235_cab_431f876f

Analysis symbol: 
Rechecking for solution: 0
Report Id: a551cd66-3b3d-46d0-a779-870d8c07ad93
Report Status: 4
Hashed bucket: 
Cab Guid: 0

已做排查操作

我使用DbgHelper工具,将偏移地址0x00005c2a输入到“查询dll相对地址”功能中,工具定位到了modbus_report_slave_id函数,但右侧显示“文件和行号不可用,函数modbus_report_slave_id,地址0x00685C2A”。我之前从未调试过dll,不确定这个操作是否正确,希望有人能协助解决此问题。

当前已完成的核心操作:通过DbgHelp定位到触发栈缓冲区溢出的函数为modbus_report_slave_id。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 09:14:58