Hi guys,
I wonder if someone has any ideas on this.
I have an application that runs on an Appserver and everything worked OK until I renamed the _proapsv.exe (and _proapsv.exe.config) to something else - there are lots of Appserver serving different environments / processes so calling them different names aids identification of processes.
I tracked the problem down to a class that reads from the registry using the .Net assemblies.
The offending code which I isolated to a stand alone TestAppserver.p is:-
DEFINE VARIABLE lv-BaseRegistryKey AS CLASS Microsoft.Win32.RegistryKey.
ASSIGN lv-BaseRegistryKey = Microsoft.Win32.Registry:LocalMachine.
This generates the following protrace file:-
=====================================================
PROGRESS stack trace as of Thu Dec 11 14:30:04 2014
=====================================================
Progress OpenEdge Release 11.2 build 1196 on WINNT
Startup parameters:
-pf C:\Progress\OpenEdge\startup.pf,-cpinternal ISO8859-1,-cpstream ISO8859-1,-cpcoll Basic,-cpcase Basic,-d dmy,-numsep 44,-numdec 46,(end .pf),-logginglevel 2,-logfile C:\OpenEdge\WRK\Test.server.log,-ubpid 9660,-Ms 1,-logname Test,-logentrytypes ASPlumbing,DB.Connects,-logthreshold 0,-numlogfiles 3,-ASID 1,-ubpropfile C:\Progress\OpenEdge\properties\ubroker.properties,-ipver IPv4,-Mm 4096,-h 10
Exception code: E0434352
Fault address: 76902F71 01:00011F71 C:\Windows\SYSTEM32\KERNELBASE.dll
Registers:
EAX:010CE108
EBX:00000005
ECX:00000005
EDX:00000000
ESI:010CE1CC
EDI:00000001
CS:EIP:0023:76902F71
SS:ESP:002B:010CE108 EBP:010CE160
DS:002B ES:002B FS:0053 GS:002B
Flags:00200212
Debugging dll: C:\Progress\OpenEdge\bin\DBGHELP.DLL
Symbol Path:
C:\Progress\OpenEdge\bin;C:\Progress\OpenEdge\pdbfiles
Call Stack:
Address Frame
76902F71 010CE160 RaiseException+48
729A5DDF 010CE200 GetPrivateContextsPerfCounters+26C5D
72ABFF3F 010CE230 CreateHistoryReader+14648
72AC8694 010CE2C4 CreateHistoryReader+1CD9D
71601337 010CE2D4 0001:00000337 C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
7160294C 010CE9FC 0001:0000194C C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
71602F5C 010CEA7C 0001:00001F5C C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
71603151 010CEA94 0001:00002151 C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
71603208 010CEAB4 0001:00002208 C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
7160B88A 010CEAF0 0001:0000A88A C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
7160B9C7 010CEB68 0001:0000A9C7 C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
7160B28D 010CEC58 0001:0000A28D C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
7160BCAC 010CEC7C 0001:0000ACAC C:\Windows\Microsoft.NET\Framework\v4.0.30319\clrjit.dll
728314A7 010CECCC CoUninitializeEE+F04F
72831541 010CED0C CoUninitializeEE+F0E9
72831583 010CED70 CoUninitializeEE+F12B
728317DF 010CF110 CoUninitializeEE+F387
728301DB 010CF1EC CoUninitializeEE+DD83
728303F3 010CF260 CoUninitializeEE+DF9B
7281D0E6 010CF2C8 DllRegisterServerInternal+1DCA
72802B0C 010CF2F8 0001:00001B0C C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
03C658C2 010CF32C 0000:00000000
03C64FA3 010CF450 0000:00000000
016ECD2C 010CF464 Progress::ClrBridge::ITypeManager::ITypeManager+2FC
012B40E6 010CF488 dbut_utfIsLink+131916
** ABL Stack Trace **
--> TestAppserver.p at line 3 (.\TestAppserver.r)
** Persistent procedures/Classes **
** PROPATH **
.,C:\Progress\OpenEdge\tty,C:\Progress\OpenEdge\tty\adecomm.pl,C:\Progress\OpenEdge\tty\adecomp.pl,C:\Progress\OpenEdge\tty\adeedit.pl,C:\Progress\OpenEdge\tty\adeshar.pl,C:\Progress\OpenEdge\tty\dataadmin.pl,C:\Progress\OpenEdge\tty\prodict.pl,C:\OpenEdge\WRK,C:\Progress\OpenEdge,C:\Progress\OpenEdge\bin
** Databases (logical/type/physical) **
** End of Protrace **
So you can see that the error is raised by the CLR and I cannot seem to CATCH it or find an explanation as to why.
If I rename the Appserver process back to _proapsv.exe everything is fine - but change it to any other name and this is what happens.
Anyone seen this before? or have any ideas why? and if so is there a resolution that doesn't involve renaming all my Appservers back to _proapsv.exe?
Thanks,
Mark
Hi Mark,
When you “rename” _proapsv.exe, are you also moving it to a different directory? I played with this quickly. My _proap1.exe worked fine. However, if you copy it out of DLC\bin, you will also need to copy other files as well: Progress.clrbridge.dll, Progress.NetUI.dll and Progress.Messages.dll. The AVM and CLR require assemblies to be in or below the current directory. I got a CLR exception and crash (possibly similar to yours) when I did not have the Progress.*.dll files below the same dir as _proap1.exe.
BTW, I am not advocating copying these files around, as this is not a tested configuration. Doing this might cause other things to fail down the line, which would lead to supportability nightmare. This was more an effort to diagnose the problem.
2 cents,
Garry.