vložil Radek Červinka
4. listopadu 2014 23:01
Nedávno jsem řešil problém. U jednoho zákazníka, který spouští naše CRMplus přes vzdálenou plochu na (myslím) Windows Serveru 2008 se v určitém případě objevovala zvláštní výjimka.
Zajímavé bylo, že to obešlo můj exception handler, takže mi bylo jasné, že to není úplně normální situace.
Podpis problému:
Název události problému: BEX
Název aplikace: CRMplus.exe
Verze aplikace: 4.42.0.0
Časové razítko aplikace: 5437b3ac
Název chybného modulu: RpcRtRemote.dll
Verze chybného modulu: 6.1.7601.17514
Časové razítko chybného modulu: 4ce7992f
Posun výjimky: 00001701
Kód výjimky: c0000005
Data výjimky: 00000008
Verze operačního systému: 6.1.7601.2.1.0.16.7
ID národního prostředí: 1029
Další informace 1: 0a9e
Další informace 2: 0a9e372d3b4ad19135b953a78882e789
Další informace 3: 0a9e
Další informace 4: 0a9e372d3b4ad19135b953a78882e789
Trochu mne trklo, že je se jednalo o spuštění přes terminal server a v popisu problému se vyskytoval RpcRtRemote.dll a Kód výjimky: c0000005, což je kód externí výjimky. Podobnou chybu jsem už tady řešil s kódem C0000006.
Nebudu to prodlužovat, k předchozímu nastavení
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP or IMAGE_FILE_NET_RUN_FROM_SWAP}
jsem přidal
{$SetPEOptFlags IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE}
což označuje, že vaše binárka je přátelská k Terminal Serveru a on ji nechápe jako "Legacy" - zastaralou.
Ekvivalentem pro VS je flag /TSAWARE.
Pokud by to nepomohlo, zkuste se podívat a vypnout Double buffer u komponent - viděl jsem někde kód v Delphi, který detekuje připojení přes Terminal Server a vypne ho.
1aa3f5bb-8e74-48d1-926f-d205577681a8|5|5.0
Tagy: praxe
Praxe