想知道这个例外是关于什么的?
NTUnhandledExceptionHandler@NTExceptionHandler@@CGJPAU_EXCEPTION_POINTERS@@@Z! jdenet_k.exe
?
=====Call stack of thread 5612=====
_LogNTCallStackDump@8! jdel.dll
?NTUnhandledExceptionHandler@NTExceptionHandler@@CGJPAU_EXCEPTION_POINTERS@@@Z! jdenet_k.exe
0x78c65b6.<nosymbols>! qstatus.dll
0x771bd29e.<nosymbols>! ntdll.dll
0x771bd45f.<nosymbols>! ntdll.dll
====> Exception C0000005 ACCESS_VIOLATION occurred in thread 5612 with call stack:
_jdeStrcmp@8! jdeunicode.dll
_IB4210030_SetCrossReferenceItemData@20! CSALES.dll
_IB4210030_ReconcileSalesOrderLineData@24! CSALES.dll
_IB4210030_IProcessSalesOrderLine@20! CSALES.dll
_IB4210030_ProcessNextUnprocessedSalesOrderLine@20! CSALES.dll
_ProcessNextUnprocessedSalesOrderLine@20! CSALES.dll
_IB4210900_ProcessUnprocessedLines@12! CSALES.dll
_IB4210900_PerformSalesOrderAction@32! CSALES.dll
_SalesOrderApplCtrlEX@12! CSALES.dll
_jdeCallObjectV2@44! jdekrnl.dll
There is also another related error in one of the log files:
====> Exception C0000005 ACCESS_VIOLATION occurred in thread 5612
call stack dumped in file <E:\JDEdwards\E812\DDP\log\jde_11740_1310990285_1_dmp.log>: iParam: 0000000000
INFO: Entering kernel signal handler, process exiting soon: iParam: 1310990289
INFO: Done setting IPC Handle State structures to abandoned, process exiting immediately: iParam: 1310990289
答案 0 :(得分:1)
强调文字看起来jdeStrcmp()
中的函数stdcall
(jdeunicode.dll
函数)导致异常(访问违规,换句话说,某些指针坏或没有)。
在我看来,一个好的DLL不会让异常逃脱,但显然这个就行了。
对于使用与DLL相同的语言编写的调用者来说,让异常转义通常没有问题。对于没有的呼叫者来说,这可能是灾难性的。我是根据这里的经验说的。该功能当然应以某种方式向呼叫者发出信号,表明发生了某些事情。如何发生这是一个设计问题。让异常逃脱当然是错误的方式。
关于跨越模块边界的异常,请参见this SO question。或this one(相同语言,不同版本!)。或谷歌为它。您将看到许多原因和示例,说明为什么跨越模块边界的异常是坏主意(tm)。
无法 捕获转义(本机)DLL的异常的语言的一个示例是C#,例如在this SO question。我认为这同样适用于其他.NET语言,以及一些本地语言。
答案 1 :(得分:0)
显然,你有一些“JD Edwards”应用程序,它使用.dll的jdeunicode.dll和jdekrnl.dll。失败位于jdeunicode.dll中的函数“JdeStrcmp()”。
JdeStrcmp():
a)有一个错误
... or ...
b)未能检测到空或非法参数
SUGGESTIONS:
如果您的应用程序直接使用JdeStrcmp(),请确保在比较两个字符串时检查null或非法字符串参数。在您使用8位ASCII和16位Unicode字符串的不同组合时编写测试用例会很有用。
如果您购买了J.D. Edwards应用程序和/或开发库,请联系他们的技术支持。也许他们有可以安装的更新。