每当访问过程库中的单例对象时,都会发生访问冲突

时间:2019-03-25 15:09:26

标签: openedge progress-4gl

我们正在使用.pl压缩在特定应用服务器上运行的所有.r代码。现在,我们在访问库中的其中一些程序时发现了一些问题。

我们似乎注意到只有单例对象存在这些问题。

当前,我们可以通过从.pl中删除文件并将它们放在.pl之前的目录中来解决。

我们正在使用Progress Version 11.6.3。

这些是我们发现存在问题的类的示例。

USING Progress.Lang.*.

ROUTINE-LEVEL ON ERROR UNDO, THROW.

CLASS GROUP.prg.rep.Singleton: 
DEFINE PRIVATE STATIC VARIABLE Instance AS Singleton NO-UNDO.

/*------------------------------------------------------------------------------
        @Purpose   : basic private constructor                                                        
------------------------------------------------------------------------------*/
CONSTRUCTOR PRIVATE Singleton ():
END CONSTRUCTOR.    

/*------------------------------------------------------------------------------
        @Purpose   : get the instance of the class                                                         
------------------------------------------------------------------------------*/
METHOD PUBLIC STATIC Singleton GetInstance ():
    IF NOT VALID-OBJECT (Instance) THEN 
      Instance = NEW Singleton().
    RETURN Instance. 
END METHOD.

END CLASS.

由于无法共享公司代码,我从此类中删除了一些重要信息,但是在所有问题中,该原则都是相同的。

=====================================================
PROGRESS stack trace as of Fri Mar 22 13:53:36 2019
=====================================================

Progress OpenEdge Release 11.6 build 1442 SP04 on WINNT 

Startup parameters:
-pf E:\Progress\OpenEdge\116\startup.pf,-cpinternal ISO8859-1,-cpstream 
ISO8859-1,-cpcoll Basic,-cpcase Basic,-d dmy,-numsep 46,-numdec 44,(end 
.pf),-b,-pf E:\OpenEdge\WRK\116\MENU_PF\MENUD.pf,-h 10, -d dmy,-L 1000,-inp 
32000,-E,-lng 2,-s 15000,-TB 31,-TM 32,-Bt 15000,-mmax 10000,-l 12500,-tok 
4000,-T E:\TMP,-yd,-yx,-D 10000,-reusableObjects 10000,(end .pf),-basekey 
INI,-ininame E:\OpenEdge\WRK\116\Menu_PF\ICE.ini,-p IndexationStartup.p,- 
param 0005#1292#1#22/03/2019 13:53:24,260+01:00

Exception code: C0000005 ACCESS_VIOLATION
Fault address:  00007FF60600E74D 01:000000000048D74D 
E:\Progress\OpenEdge\116\bin\_progres.exe

Registers:
RAX:0000000000000001
RBX:0000000020B75C00
RCX:0000000000000000
RDX:000000002155C240
RSI:0000000000000523
RDI:00007FF6066FE180
R8 :0000000000000104
R9 :0000000000000443
R10:000000000600E000
R11:00007FF605B80000
R12:0000000000000080
R13:00000000003E9000
R14:0000002000001000
R15:0000000001000000
CS:RIP:0033:00007FF60600E74D
SS:RSP:002B:000000000051E730  RBP:0000000000000001
DS:002B  ES:002B  FS:0053  GS:002B
Flags:00010202

Call Stack:
Address           Frame
00007FF60600E74D  000000000051E770  Progress::ClrBridge::ITypeManager::operator=+74E6D
00007FF606039A19  000000000051E7A0  Progress::ClrBridge::ITypeManager::operator=+A0139
00007FF605FF22D6  000000000051E7D0  Progress::ClrBridge::ITypeManager::operator=+589F6
00007FF605FC9C9B  000000000051E860  Progress::ClrBridge::ITypeManager::operator=+303BB
00007FF605FCA4D3  000000000051EA70  Progress::ClrBridge::ITypeManager::operator=+30BF3
00007FF605FCABAE  000000000051EAD0  Progress::ClrBridge::ITypeManager::operator=+312CE
00007FF605BDDFC0  000000000051EB60  common_srvrLogFile+4C840
00007FF605BE0E85  000000000051EC20  common_srvrLogFile+4F705
00007FF605FC54FC  000000000051ECA0  Progress::ClrBridge::ITypeManager::operator=+2BC1C
00007FF605FC6CF4  000000000051ED00  Progress::ClrBridge::ITypeManager::operator=+2D414
00007FF605FC6E08  000000000051ED60  Progress::ClrBridge::ITypeManager::operator=+2D528
00007FF605BFAA56  000000000051EE20  common_srvrLogFile+692D6
00007FF605FE6FA5  000000000051EF20  Progress::ClrBridge::ITypeManager::operator=+4D6C5
00007FF60600A959  000000000051EFD0  Progress::ClrBridge::ITypeManager::operator=+71079
00007FF606014B7A  000000000051F000  Progress::ClrBridge::ITypeManager::operator=+7B29A
00007FF605FC71FE  000000000051F030  Progress::ClrBridge::ITypeManager::operator=+2D91E
00007FF605FC91EB  000000000051F0C0  Progress::ClrBridge::ITypeManager::operator=+2F90B
00007FF605FCA28A  000000000051F2F0  Progress::ClrBridge::ITypeManager::operator=+309AA
00007FF605FCA507  000000000051F500  Progress::ClrBridge::ITypeManager::operator=+30C27
00007FF605FCAA96  000000000051F560  Progress::ClrBridge::ITypeManager::operator=+311B6
00007FF605BCD418  000000000051F700  common_srvrLogFile+3BC98
00007FF605BFAA56  000000000051F7C0  common_srvrLogFile+692D6
00007FF605FE81BA  000000000051FA40  Progress::ClrBridge::ITypeManager::operator=+4E8DA
00007FF605FE9F9E  000000000051FAA0  Progress::ClrBridge::ITypeManager::operator=+506BE
00007FF60600A959  000000000051FB50  Progress::ClrBridge::ITypeManager::operator=+71079
00007FF606014B7A  000000000051FB80  Progress::ClrBridge::ITypeManager::operator=+7B29A
00007FF605C1F74F  000000000051FBB0  dbut_utclex+1F5BF
00007FF605BAB5E8  000000000051FDC0  common_srvrLogFile+19E68
00007FF605C3E8F3  000000000051FDF0  dbut_utclex+3E763
00007FF6063A7ABE  000000000051FE20  Progress::ClrBridge::rnProFromClr::FindOnPropath+13530E
00007FFF5D2B13D2  000000000051FE50  BaseThreadInitThunk+22
00007FFF5F9654F4  000000000051FEA0  RtlUserThreadStart+34

2 个答案:

答案 0 :(得分:0)

我在Progress Knowledge Base中找不到与此相关的任何信息(我没有),假设您正在维护中,您应该向Progress Support开立一个案例。

您还可以尝试使用更新的Progress版本或至少11.1.6或11.6.4的更新服务包。

答案 1 :(得分:0)

我们打开了一个进度案例,并得出结论,我们在.pf文件中使用-Yd参数。使用单例对象会导致一些脏错误。仍在寻求如何解决此问题的进展,但是我们的解决方法只是删除-yd参数。

希望这可以帮助某些人。