cslibu-3-0.dll非托管崩溃

2020-09-02 00:21发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我使用的是13_0_23,有时会通过下面的调用堆栈在我的应用中发生非托管崩溃。

我们正在Windows 10(x64)上运行,但使用的是32位.Net进程。

是否有可能是24或25个已知/已修复的问题?

谢谢!

> mfc140u.dll!ATL :: CSimpleStringT :: CloneData(ATL :: CStringData * pData)882C ++行[Inline Frame] mfc140u.dll!ATL :: CSimpleStringT :: { ctor}(const ATL :: CSimpleStringT &)行213C ++ mfc140u.dll!ATL :: CStringT >> :: CStringT >>(const ATL :: CStringT >>&strSrc)行1027C ++ cslibu-3-0.dll!54dadea8()未知[ 以下框架可能不正确和/或丢失,没有为cslibu-3-0.dll加载任何符号]未知cslibu-3-0.dll!54daf20b()未知cslibu-3-0.dll!54daf35d()未知cslibu-3 -0.dll!54db22ed()未知cslibu-3-0.dll!54dae687()未知cslibu-3-0.dll!54db2bb2()未知mfc140u.dll!ATL :: CStringData :: Release()92C ++ cslibu- 3-0.dll!54db16ba()未知cslibu-3-0.dll!54db148c()未知cslibu-3-0.dll!54db14fa()未知cslibu-3-0.dll!54db0b95()未知cslibu-3- 0.dll!54daefee()未知cslibu-3-0.dll! 54daef4e()未知crpe32.dll!553a5de9()未知crpe32.dll!553a5611()未知crpe32.dll!553be8a0()未知crpe32.dll!553bd022()未知crpe32.dll!553ba372()未知crpe32.dll!553b6de1( )未知crpe32.dll!551d6707()未知crpe32.dll!550213f5()未知crpe32.dll!55049888()未知rptdefmodel.dll!53604aba()未知localcon.dll!537fd222()未知crpe32.dll!54febcb6()未知 mfc140u.dll!CSingleLock :: Unlock()行116C ++ crpe32.dll!54ff8e1d()未知ntdll.dll!_KiUserCallbackDispatcher@12()未知win32u.dll!_NtUserMsgWaitForMultipleObjectsEx@20()未知[Inline Frame] mfc140u。 CSingleLock :: Lock(无符号长整数)行108C ++ mfc140u.dll!CSingleLock :: CSingleLock(CSyncObject * pObject,int bInitialLock)100C ++ ntdll.dll!_NtClose@4()Unknown mfc140u.dll!_AfxThreadEntry(void * pParam)行 109C ++

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我使用的是13_0_23,有时会通过下面的调用堆栈在我的应用中发生非托管崩溃。

我们正在Windows 10(x64)上运行,但使用的是32位.Net进程。

是否有可能是24或25个已知/已修复的问题?

谢谢!

> mfc140u.dll!ATL :: CSimpleStringT :: CloneData(ATL :: CStringData * pData)882C ++行[Inline Frame] mfc140u.dll!ATL :: CSimpleStringT :: { ctor}(const ATL :: CSimpleStringT &)行213C ++ mfc140u.dll!ATL :: CStringT >> :: CStringT >>(const ATL :: CStringT >>&strSrc)行1027C ++ cslibu-3-0.dll!54dadea8()未知[ 以下框架可能不正确和/或丢失,没有为cslibu-3-0.dll加载任何符号]未知cslibu-3-0.dll!54daf20b()未知cslibu-3-0.dll!54daf35d()未知cslibu-3 -0.dll!54db22ed()未知cslibu-3-0.dll!54dae687()未知cslibu-3-0.dll!54db2bb2()未知mfc140u.dll!ATL :: CStringData :: Release()92C ++ cslibu- 3-0.dll!54db16ba()未知cslibu-3-0.dll!54db148c()未知cslibu-3-0.dll!54db14fa()未知cslibu-3-0.dll!54db0b95()未知cslibu-3- 0.dll!54daefee()未知cslibu-3-0.dll! 54daef4e()未知crpe32.dll!553a5de9()未知crpe32.dll!553a5611()未知crpe32.dll!553be8a0()未知crpe32.dll!553bd022()未知crpe32.dll!553ba372()未知crpe32.dll!553b6de1( )未知crpe32.dll!551d6707()未知crpe32.dll!550213f5()未知crpe32.dll!55049888()未知rptdefmodel.dll!53604aba()未知localcon.dll!537fd222()未知crpe32.dll!54febcb6()未知 mfc140u.dll!CSingleLock :: Unlock()行116C ++ crpe32.dll!54ff8e1d()未知ntdll.dll!_KiUserCallbackDispatcher@12()未知win32u.dll!_NtUserMsgWaitForMultipleObjectsEx@20()未知[Inline Frame] mfc140u。 CSingleLock :: Lock(无符号长整数)行108C ++ mfc140u.dll!CSingleLock :: CSingleLock(CSyncObject * pObject,int bInitialLock)100C ++ ntdll.dll!_NtClose@4()Unknown mfc140u.dll!_AfxThreadEntry(void * pParam)行 109C ++

付费偷看设置
发送
5条回答
Nan4612
1楼 · 2020-09-02 00:59.采纳回答

SP 23有很多Viewer问题,请尝试SP 25。

SAP浪
2楼-- · 2020-09-02 01:02

我已更新到SP25,但不幸的是仍然遇到相同的问题。

我对此进行了更多测试,并且我相信我已将原因归结为ReportClass构造函数(实际上是ReportDocument或它的基础,因为ReportClass的反编译代码看起来很安全)中的争用条件和/或 SetDataSource()方法。 到目前为止的轶事测试表明,当我对这些活动应用独占访问锁时,崩溃消失了。

因此,为了解决这个问题,我创建了一个单元测试,该单元测试创​​建了30个任务,每个任务都将创建一个报告对象并将PDF保存到磁盘。 运行测试时,我发现失败率约为15%。 到目前为止,在我使用同步锁进行的有限测试中,我还没有遇到崩溃。

这对于单元测试并不是真正有用,因为失败场景是导致过程中断的非托管崩溃,因此不会导致断言失败或类似失败。 但这对于自动化测试非常有用。

基本单元测试结构:

var task = new List ();

for(int i = 0; i <30; ++ i)

{

tasks.Add(新任务(

()=>

{

//报告服务有一些包装器内容,但是出于本讨论的目的,它收集数据以填充数据集,构造报告对象,将数据集馈入报告并呈现pdf。

var response = _reportService.GenerateReport();

Assert.IsNotNull(response);

}

));

}

tasks.Each(x => x.Start());

tasks.Each(x => x.Wait());

用于构建报告/保存到磁盘的基本相关代码:

MyReport rpt;

lock(SyncRoot)////-删除同步锁会导致非托管崩溃。

{

rpt = new MyReport();

rpt.SetDataSource(reportData.DataSet);

}

foreach(reportParams中的KeyValuePair 条目)

{

rpt.SetParameterValue(entry.Key,entry.Value);

}

rpt.ExportToDisk(request.CrystalFormatType,fileName);

rpt.Close();

rpt.Dispose();

哎,真难
3楼-- · 2020-09-02 01:00

请参阅上述问题的最新评论。

小熊yu生菜
5楼-- · 2020-09-02 01:00

谢谢你的建议。 您知道何时/如何开始报告引擎限制吗? 它是否与在报表对象的构造函数或SetDataSource()方法中具有多个线程有关? 我猜想它应该在ExportToDisk()方法中,但是我不确定。

对于我在这里运行的报告测试场景,我传入的数据集也是空的,在页眉/页脚元素中仅使用了十几个参数。 没有子报告。

一周热门 更多>