Process crash because of unloaded dll caused by disconnection of another Terminal Service session using same application concurrently


hi,

during remote desktop services tests on windows 2008 r2, discovered following problem not appears in previous version of windows 2008:

 

when terminal services session execute dll based application (for example ms spyxx.exe) mapped network drive , second session execute same app , disconnect session without closing it, app running in first session gets loaded dll network drive unloaded. further use of application drive crash.

 

the problem bad, because inhibits concurrent use of same application network drive.

 

the problem manifest following conditions:

-          windows server 2008 r2 base or service pack 1 installed remote desktop services.

-          the various terminal services session have drive (same letter or not) mapped same unc share.

 

the problem not happens:

-          on previous version of windows 2008 (32/64 bit).

-          if sessions execute application directly unc path \\servername\sharename\pathtoapp\appname.exe .

 

steps reproduce problem:

-          install copy of windows 2008 r2 standard (download copy http://technet.microsoft.com/en-us/evalcenter/dd459137.aspx)

-          from administrator session install remote desktop services. server manager click on ‘add role’, on 'server roles' select 'remote desktop services',  on 'role services' select 'remote desktop session host', on 'authentication method' select 'do not require network level authentication', on 'licensing mode' select 'per user', on 'user groups' add previous created user  'usera', on 'client experience' click ‘next’, install, accept restart, reconnect , wait installation completion.

-          in administrator session download processexplorer http://download.sysinternals.com/files/processexplorer.zip, expand zip in folder , execute procexp.exe. on menu 'view' -> 'select columns...' select 'user name' , 'image path', on 'dll' tab select 'path', click ‘ok’. press ctrl-d keys display lower dll’s pane , sort path clicking on ‘path’ header column.

-          download microsoft spy http://cid-539d62829af123fb.office.live.com/self.aspx/.public/spyxx.rar , expand rar content in network share called ‘myshare’.

-          map drive z: on network share 'myshare', example.: \\servername\myshare , execute z:\spyxx\spyxx.exe.

-          on processexplorer select spyxx.exe process; on lower pane can see set of dlls loaded network drive, example \device\mup\servername\myshare\spyxx\spyxxhk.dll .

-          open new terminal services session ‘usera’, map drive z: on same network share 'myshare' (as done administrator), execute z:\spyxx\spyxx.exe .

-          disconnect ‘usera’ session without closing spyxx.exe application before.

-          go administrator session, on processexplorer can see spyxx.exe application has been removed following dlls loaded network drive: mfc71u.dll, msvcp71.dll, msvcr71.dll, spyxxhk.dll . in case of different drive letters mapped on same share, spyxx.exe unloaded dll view in processexplorer.

-          to further confirm bug, switch spyxx.exe application, select menu spy -> processes , crash.

 

have find same problem , found solution?

 

 

thank information, olivier.

in meantime discovered workaround exposed below:

 

while waiting microsoft fix, can use workaround on server offering share through use of distributed file system. found mapping drive using dfs share works – problem never happen.

if share on windows 2008 r2 server follow instructions install dfs role:

- 'initial configuration tasks' click on 'add roles'

- click 'next;

- select 'file services', click 'next'

- click 'next;

- select 'file server' , 'dfs namespaces' roles, click 'next';

- accept default namespace, click 'next'

- accept default stand-alone namespace, click 'next'

- click ‘add…’, click ‘browse…’,  click ‘show shared folders’,  click ‘new shared folder…’, on ‘share name’ textbox write ‘myshare’,  click ‘browse’ select local path of shared folder,  create folder ‘myshare’ on c: , select it, click ‘ok’, on ‘shared folder permissions’ options choose one, click ‘ok’, click ‘ok’, see ‘myshare’ under ‘namespace1’, click 'next;

- click 'install’ , wait installation;

- click 'close’;

now have installed dfs role , should able map drive terminal service sessions using ‘\\servername\namespace1\myshare’ command ‘net use * \\w2008r2\namespace1\myshare’ .

 

carlo



Windows Server  >  Remote Desktop Services (Terminal Services)



Comments

Popular posts from this blog

server manager error: ADAM.events.xml could not be enumerated.

Cannot access Anywhere Access using domain name?

WMI Failure: Unable to update Local Resource Group