Jump to content
Welcome to our new Citrix community!
  • 0

AppLayering DLL errors after multiple users connect to similiar layers

Campbell Kay


Hi Guys,


i have setup two layers with the same application, just with different database connectivity strings, we need to keep the exe seperate so it allows us to apply patches to seperate business units etc.


so i have 


Application 1 C:\App

Application 2 C:\App


User 1 is assigned App 1

User 2 is assigned App 2


User 1 logs in and the application works completely fine.

User 2 logs in and the application works completely fine.


after awhile if we try open the application again, we seem to get DLL errors when opening the application, its almost like the OS has lost connectivity to the layer.


i havent been able to reproduce this with just one user logged in, its like since we have two layers connected something is causing them to drop off.


if we log off and back on, we still get DLL errors in the applications. if i reboot the server, it will work for awhile then just stop.


has anyone seen anything like this before?


i am running the latest VDA and applayering software in Citrix Cloud.




Link to comment

7 answers to this question

Recommended Posts

You should expect that to always fail.  If you need to be able to provide two conflicting versions of the same software on the same host elastically, at the least you'd have to put them in different folders.  We don't do application packaging or encapsulation.  We do filesystem virtualization.


Specifically, what's going on is the writable volume.  There is only 1 writable volume, and all users see the same writable volume.  In a session host, we do make an effort to ensure that a user can only read from the layers they're assigned to.  So if you have layer1 providing C:\App\App.exe to User 1, and layer2 providing the exact same file C:\App\App.exe to suer 2, we will try very hard to make sure they can only read from their respective layers. 


However, at some point, some important file (or registry data - this logic applies to the registry as well) will get modified in some way, and get pulled into the one and only writable volume, which is effectively the layer that sits above all other layers.  That modified file has to come from somewhere, so in the case where you have competing versions of App.exe, one of them will be pulled into the writable volume and get modified.  That means that that modified copy of that file will be the version of that file that all users will see.  That modified version is right for one user and wrong for another.  It cannot be forgotten until you reboot your NP machine.


A "modification" can be as little as something changing a file timestamp or other property.  It doesn't have to be a data modification.  Just something in the entire file data or metadata that changes, we have to put the whole thing on the writable volume there and then change the one bit that changed.


So if you can't install them in different folders so they simply do not conflict, then Elastic Layering is not the right answer to this problem.  Something like App-V might, or some other application packaging system.  The basic rule for App Layering is: if you can do it on a physical machine, you can do it on a layer; and if you can't do it on a physical machine, you can't do it in App Layering.



Link to comment

Great thanks for that response, i did wonder if this was the case, i just thought app layering would actually hide that layer, as it does work for awhile.


will check with the app vender if we can change that path.


i do wonder if i just use the same set of application files and just layer over the database configuration file if that would work better.





Link to comment

Hi Guys,


i have put my applications into two separate folders.


Although im still getting from weird errors when opening the applications.


is there away to debug what exactly is going on, i have done process monitor dumps but i dont see any difference really.


it must be trying to read or write to a shared file? surely the layers can access shared system DLL(s) though.


Any ideas?




Link to comment

Hi Guys,


so i thought i would update what i have found it, i think i thought app layering would be able to handle this, this is what is happening.


i went and deployed the application into separate folders.







then assigned the layers to each set of users, again we got some weird dll issues once more than one layer was assigned to the user.


from here i found that each app registers some Active X controls during the install.


from what i can tell we can only register one set of exe with the same name into the OS, so if application1 registers them, application2 fails.


i dont see anyway around this, i did think about putting the Active x controls in a shared layer assigned to all users, which i would work, although probably not supported by the application vendor.


Am i right in saying this isn't possible with AppLayering?



Link to comment


This topic is now archived and is closed to further replies.

  • Create New...