Windows Server 2003 SP2,VS2005,在 MFC 中通过 COM 调用 ADO 组件访问 SQL Server 数据库,在附加调试时常常卡在 RecordSet::BOF 的调用上,非调试下极偶然也会出现卡住的现象。
卡住时CPU单核占用 100%,等待过最长半个小时不返回,往往只要重现一次之后,重新启动程序再次调试仍然会卡在同一处,重现频率大概在 3/5,每 5 次调试卡 3 次。
COM 已初始化,Ole 已初始化,与该代码段相同的调用方式在系统中其他地方普遍使用但没卡住,ADO 连接超时 30s,卡住时 SQL Server 无死锁、无活动,暂时没查出明显的代码错误。
下面几张截图分别是代码和卡住时在 VS2005 上“暂停”调试时看到的堆栈。