一、现象描述:
1、THRM 主界面关闭后,后台核心服务 THRM Core.exe 和桥接程序 THRM TempBridge.exe 会不定时自动退出(进程消失),无错误弹窗,无 Windows 事件日志中的崩溃记录,“logs”日志的记录也没有多少信息。
logs.zip
2、我个人习惯“Windows睡眠”(非休眠),必要时才会选择“重启Windows”。
有时候,《THRM》是在“唤醒Windows”没多久后会自己悄无声息的莫名退出;
有时重新打开《THRM》软件后,在正常使用Windows(期间不睡眠,不重启)情况下,《THRM》也会悄无声息的莫名退出。
——————
二、我的Windows环境(笔记本电脑):
处理器 13th Gen Intel(R) Core(TM) i7-13650HX (2.60 GHz)
机带 RAM 32.0 GB (31.8 GB 可用)
图形卡 NVIDIA GeForce RTX 4060 Laptop GPU (8 GB)
NVIDIA驱动程序版本:591.86
系统类型 64 位操作系统, 基于 x64 的处理器
Windows电源模式:平衡
版本 Windows 11 家庭版
版本号 25H2
安装日期 2025/11/6
操作系统版本 26200.8737
功能包 Windows 功能体验包 1000.26100.334.0
——————
三、排查过程:
由于我个人并不熟知编程领域,对计算机知识只是懂得皮毛。
所以我排查问题的过程是在AI(deepseek、Gemini)的帮助下进行的。
根据AI的帮助,我得到了《THRM》对应进程(THRM Core.exe、THRM TempBridge.exe)的Dump 文件(使用 Procdump 抓取,请查看附件“Dumps.7z”)
“Dumps.7z”附件OneDrive云盘:https://1drv.ms/u/c/d1649f6bddf541ce/IQApKEqj1OKqTqjLBzBQp55JAf5Kxsi_FWjty9E_T7o2X30
以下是AI根据Dump 文件的简述,不是专业答复,我也知道仅供参考,希望能帮助到作者您解决问题:
deepseek:
THRM 版本: 3.3.0
2、捕获转储文件:
使用 procdump64.exe -ma -e -t 分别监控 THRM Core.exe 和 THRM TempBridge.exe,捕获到多个转储文件。
核心服务转储分析(THRM Core.exe):
异常代码:0x80000003(断点异常,非崩溃)
堆栈显示进程在 GetMessage 消息循环中正常退出。
退出码 99 为程序自定义,表示主动退出。
3、桥接程序转储分析(THRM TempBridge.exe):
第一次(正常退出): 堆栈显示 .NET 运行时正常关闭(mscoreei!RuntimeDesc::ShutdownAllActiveRuntimes)。
第二次(异常触发): 堆栈明确显示异常发生在 LibreHardwareMonitor.Hardware.Gpu.NvidiaGroup.Close,异常经由 clr!RaiseTheExceptionInternalOnly 抛出,最终导致进程退出。转储中加载了 nvml.dll 和 nvapi64.dll,表明正在访问 NVIDIA GPU。
第三次(正常退出): 与第一次类似,为正常关闭。
4、结论:
桥接程序在监控 NVIDIA GPU 时,LibreHardwareMonitorLib 库会不定期抛出异常(尤其在系统长时间运行或睡眠唤醒后),导致桥接程序主动退出。
核心服务检测到桥接程序进程退出后,认为无法继续工作,于是主动调用 ExitProcess(99) 退出。
三、根本原因推断
THRM TempBridge.exe 依赖 LibreHardwareMonitorLib 读取硬件传感器数据。
该库在访问 NVIDIA GPU(通过 NVML/NVAPI)时存在稳定性问题,在某些系统状态下会触发未处理异常。
异常发生后,桥接程序没有进行健壮的异常恢复,而是直接退出,进而导致核心服务也退出。
——————
Gemini:
发现该问题是由主程序在 Windows 消息循环中死锁以及桥接程序在释放 LibHardwareMonitor 监控时触发未捕获异常共同导致的。
通过 WinDbg 分析最近的三次进程快照,问题的演变过程和深层原因如下:
- 主程序死锁:THRM Core.exe 永久挂起 (时间戳:17:25:10)
现象:主程序在运行约 37 分钟后彻底失去响应,界面卡死。
核心调用栈:
00 ntdll!KiUserCallbackDispatch
01 win32u!NtUserGetMessage+0x14
02 user32!GetMessageW+0x22
03 THRM_Core+0x160a9
...
11 THRM_Core+0x8cea1
原因分析:主程序(Go 运行时)阻塞在 Windows 原生消息循环 user32!GetMessageW 中。程序在进入 KiUserCallbackDispatch 阶段处理某些全局系统消息(如电源状态切换 WM_POWERBROADCAST、休眠唤醒或硬件设备热插拔 WM_DEVICECHANGE)时,由于底层驱动或外部硬件监控 API 没有及时响应且缺乏超时机制,导致主线程发生硬死锁 (Deadlock)。
-
桥接程序崩溃:THRM TempBridge.exe 闪退 (时间戳:15:31:01)
现象:后台温度读取突然中断,桥接程序异常结束。
原因分析:由于系统硬件状态发生改变(或显卡驱动级断开),主程序尝试重置监控。桥接程序在尝试显式关闭和清理 LibreHardwareMonitor 相关的后台异步显卡/硬件监控任务时,由于底层库抛出了未捕获的异步异常,导致桥接进程被动崩溃闪退。
-
桥接程序正常关闭行为 (时间戳:16:29:45)
现象:此 Dump 记录了进程正常退出的瞬间。
核心调用栈:mscoreei!RuntimeDesc::ShutdownAllActiveRuntimes -> kernel32!ExitProcessImplementation -> ntdll!NtTerminateProcess
原因分析:该记录表明,在未触发上述异步异常的正常情况下,主程序通过标准 stdio 管道通知桥接程序清理退出时,.NET 运行时的标准销毁释放逻辑(clr!HandleExitProcessHelper)可以优雅地完成,桥接程序本身的退出协议设计是完全正确的。
一、现象描述:
1、THRM 主界面关闭后,后台核心服务 THRM Core.exe 和桥接程序 THRM TempBridge.exe 会不定时自动退出(进程消失),无错误弹窗,无 Windows 事件日志中的崩溃记录,“logs”日志的记录也没有多少信息。
logs.zip
2、我个人习惯“Windows睡眠”(非休眠),必要时才会选择“重启Windows”。
有时候,《THRM》是在“唤醒Windows”没多久后会自己悄无声息的莫名退出;
有时重新打开《THRM》软件后,在正常使用Windows(期间不睡眠,不重启)情况下,《THRM》也会悄无声息的莫名退出。
——————
二、我的Windows环境(笔记本电脑):
处理器 13th Gen Intel(R) Core(TM) i7-13650HX (2.60 GHz)
机带 RAM 32.0 GB (31.8 GB 可用)
图形卡 NVIDIA GeForce RTX 4060 Laptop GPU (8 GB)
NVIDIA驱动程序版本:591.86
系统类型 64 位操作系统, 基于 x64 的处理器
Windows电源模式:平衡
版本 Windows 11 家庭版
版本号 25H2
安装日期 2025/11/6
操作系统版本 26200.8737
功能包 Windows 功能体验包 1000.26100.334.0
——————
三、排查过程:
由于我个人并不熟知编程领域,对计算机知识只是懂得皮毛。
所以我排查问题的过程是在AI(deepseek、Gemini)的帮助下进行的。
根据AI的帮助,我得到了《THRM》对应进程(THRM Core.exe、THRM TempBridge.exe)的Dump 文件(使用 Procdump 抓取,请查看附件“Dumps.7z”)
“Dumps.7z”附件OneDrive云盘:https://1drv.ms/u/c/d1649f6bddf541ce/IQApKEqj1OKqTqjLBzBQp55JAf5Kxsi_FWjty9E_T7o2X30
以下是AI根据Dump 文件的简述,不是专业答复,我也知道仅供参考,希望能帮助到作者您解决问题:
deepseek:
THRM 版本: 3.3.0
2、捕获转储文件:
使用 procdump64.exe -ma -e -t 分别监控 THRM Core.exe 和 THRM TempBridge.exe,捕获到多个转储文件。
核心服务转储分析(THRM Core.exe):
异常代码:0x80000003(断点异常,非崩溃)
堆栈显示进程在 GetMessage 消息循环中正常退出。
退出码 99 为程序自定义,表示主动退出。
3、桥接程序转储分析(THRM TempBridge.exe):
第一次(正常退出): 堆栈显示 .NET 运行时正常关闭(mscoreei!RuntimeDesc::ShutdownAllActiveRuntimes)。
第二次(异常触发): 堆栈明确显示异常发生在 LibreHardwareMonitor.Hardware.Gpu.NvidiaGroup.Close,异常经由 clr!RaiseTheExceptionInternalOnly 抛出,最终导致进程退出。转储中加载了 nvml.dll 和 nvapi64.dll,表明正在访问 NVIDIA GPU。
第三次(正常退出): 与第一次类似,为正常关闭。
4、结论:
桥接程序在监控 NVIDIA GPU 时,LibreHardwareMonitorLib 库会不定期抛出异常(尤其在系统长时间运行或睡眠唤醒后),导致桥接程序主动退出。
核心服务检测到桥接程序进程退出后,认为无法继续工作,于是主动调用 ExitProcess(99) 退出。
三、根本原因推断
THRM TempBridge.exe 依赖 LibreHardwareMonitorLib 读取硬件传感器数据。
该库在访问 NVIDIA GPU(通过 NVML/NVAPI)时存在稳定性问题,在某些系统状态下会触发未处理异常。
异常发生后,桥接程序没有进行健壮的异常恢复,而是直接退出,进而导致核心服务也退出。
——————
Gemini:
发现该问题是由主程序在 Windows 消息循环中死锁以及桥接程序在释放 LibHardwareMonitor 监控时触发未捕获异常共同导致的。
通过 WinDbg 分析最近的三次进程快照,问题的演变过程和深层原因如下:
现象:主程序在运行约 37 分钟后彻底失去响应,界面卡死。
核心调用栈:
00 ntdll!KiUserCallbackDispatch
01 win32u!NtUserGetMessage+0x14
02 user32!GetMessageW+0x22
03 THRM_Core+0x160a9
...
11 THRM_Core+0x8cea1
原因分析:主程序(Go 运行时)阻塞在 Windows 原生消息循环 user32!GetMessageW 中。程序在进入 KiUserCallbackDispatch 阶段处理某些全局系统消息(如电源状态切换 WM_POWERBROADCAST、休眠唤醒或硬件设备热插拔 WM_DEVICECHANGE)时,由于底层驱动或外部硬件监控 API 没有及时响应且缺乏超时机制,导致主线程发生硬死锁 (Deadlock)。
桥接程序崩溃:THRM TempBridge.exe 闪退 (时间戳:15:31:01)
现象:后台温度读取突然中断,桥接程序异常结束。
原因分析:由于系统硬件状态发生改变(或显卡驱动级断开),主程序尝试重置监控。桥接程序在尝试显式关闭和清理 LibreHardwareMonitor 相关的后台异步显卡/硬件监控任务时,由于底层库抛出了未捕获的异步异常,导致桥接进程被动崩溃闪退。
桥接程序正常关闭行为 (时间戳:16:29:45)
现象:此 Dump 记录了进程正常退出的瞬间。
核心调用栈:mscoreei!RuntimeDesc::ShutdownAllActiveRuntimes -> kernel32!ExitProcessImplementation -> ntdll!NtTerminateProcess
原因分析:该记录表明,在未触发上述异步异常的正常情况下,主程序通过标准 stdio 管道通知桥接程序清理退出时,.NET 运行时的标准销毁释放逻辑(clr!HandleExitProcessHelper)可以优雅地完成,桥接程序本身的退出协议设计是完全正确的。