Skip to main content

This is merely a theory at this point but I have a scenario where the customer switched from Reflections to Rumba and give a set of instructions to open Reflection session, select Macro, Visual Basic Editor, Open each module, class, and form file in Reflection and export it to an external file within your project folder, Copy the Rumba migration spreadsheet template to your project folder and rename it, open the spreadsheet, select Developer Tab, click Visual Basic, enter project name, import the code just exported from Reflection, import all modules from initial folder, add all elements, repeat until all modules, forms, and classes imported.  This is abridged version.  

My concern is for the customers (end-users) at this point.  These instructions were performed on a Windows 7 32-Bit operating system running Office 2010 32-Bit.  Using one example, UserA has 200 of these new XLMS macro saved Excel files.  All of them have base modules and call Rumba Interface.

ErorHandler:

If (Err.Source = "Rumba_Interface.DLL" And Err.Number = 5555) Then
MsgBox Err.Description & " - Error#:" & Err.Number, vbExclamation
Else
MsgBox "An error occurred in 'Script()' - " & Err.Description, vbCritical, "CORP_StandardModule"
End If
Resume Exit_Script_ErrorHandler

End Sub

UserA initiates 6 Rumba Sessions by launching 6 different Macro's on their workstation and it works fine.  This is where it was validated.

The problem is we have a different process for Application Lifecycle Management in Citrix running on 2008 R2 SP 1 64-Bit.

The same user at home hits a 16 GB, 2 Processor session hosting server (XenApp 6.5) that is 64-Bit OS but remains the 32-Bit Office, 32 Bit VBA 7, and 32 Bit Rumba.

After approximate 8 minutes all 6 Excel processes are running, along with 6 Rumba processes.  I'm using System Internals Process Explorer to look at each process, the Stack, the DLL's in use and so forth.  At 8 minutes or so the 6 processes start to slow down.  The customer view is they see a text file having populated data is being read and written too simultaneous.  I see this on Process Monitor as well which shows all File system, Registry, process, and network activity.  Normally this is so fast it is a blur.  There might 30,000 items in 1 text file.  There are Zero's (OOOOO) appended to #'s in the file and the first # is read, matched to something and the zero's replaced.  

This entire time, the physical memory usage of each spreadsheet never exceeds 45,000 K Private Bytes, and 80,000 K or less Working Set each.  The server is using about 6 GB out of 16 GB, 5% processor utilization.  I'm capturing all memory and processor metrics.  Of which I have over 30 screen shots.  CPU consumption per Excel process is ranging from 1-2 % each.  System Commit never exceeds 6 GB.

Then one by one, the user sees a popup box stating Error: Cannot Lock Memory.  One by one the sessions disappear.  The file that has 30000 lines might have 500 completed.  

The developer claims this is a resource issue in Citrix with Memory.  That is obviously not the case.  The problem appears to have something to do with the differences between 32 Bit Declare Statements or Functions or something possibly with WOW64 in the middle when you install 32 Bit programs on Windows server 64 Bit.

We have best practices that clearly state to package applications or "Code" applications specific to Citrix.  In some cases, vendors release Terminal Server compliant software.  The server in question is 1 of 10 that are running at 5% CPU and 4-5 GB of RAM use out of 16.

When you enable RDS on 2008 R2 it changes the system from Background oriented processing to Forward ground application hosting for multi-users.

It looks like a possible issue at some point where Excel processes (PIDS) share memory.  Only once copy of Excel is installed.  And that might be shared by 50 users.  This is a pre-production environment so very low use.

I've tried to Google this error alone, combined with Rumba, or with Excel 2010, or VBA 7.  Then I went to my Safari Books Online and read through about 12 or so books on VBA 7 and Excel Macros but they most often come back to the difference of moving from Office 2010 or Excel 2010 32 BIT to Office 2010 64 BIT.

That would cause more issues, we maintain Office 2010 32 BIT on Citrix and Workstation.  The user can run 2 instances without complaint.  Anything beyond 2 instances results in the described behavior.

Worse, the user sessions shutdown but remain for about 30 seconds on Citrix server and there does not appear to be any locking like greyed out applications or memory leaks.  

The developer is pushing back because it works in Windows 7 32 BIT having no relation to Citrix.  So I've started documenting the difference in memory usage between the two using Microsoft Articles and several books on 2008 R2.  Fact is, Citrix is an add-on to RDS Server.  This has all the signs of being a memory related issue.  

I say that because they all share some of the same components like VBA or VBE 7 and I could understand one having issue but not a sequential failure after an obvious slowing yet no paging faults, high memory, private memory, context switching, disk thrashing, nothing on the 64 Bit server.

It comes down to a handful of users that run 5 to 8 of these processes where most have 1 or 2 running and no issues.

At three or more, you get the error.  If necessary, I can post the screen shots on Screencast or something.  There are no Event Log entries.  I've got all the 2008 R2 symbols local on the server, using Microsoft Process Explorer, Process Monitor, VMMAP, Handles, and other common debug tools.

At some point, it reacts like one of the processes attempts to use private memory space of another and this causes the collapse of the processes.  The slowness might be due to possible constraints with VBA 7 32 BIT in 64 BIT OS and code written for 32 BIT that has obvious memory constraints. 

A good example being Java.  Java is a distributed client server design.  It will run on Citrix but requires a lot of customization.  The MSI for Workstation install is different for 64 Bit.  In some cases we host both versions.  Even if 32 Bit, the MST file is different and a lot of customization is done to certain .jar files, certificate store imports, .ini files, Security and so forth.

I'm just hoping someone sees this and has run across it so I can relay what is needed to remmediate the issue if it is even possible.  Reflections was working fine in Citrix.   This was a process born out of migrating away from that to Rumba.  It was all done in the context of Windows 7 32 BIT.

Perhaps if I can narrow down the issue for the developer, they might listen. 


#ExcelorVBACode
#Excel
#x64
#API
#Citrix
#Rumba

This is merely a theory at this point but I have a scenario where the customer switched from Reflections to Rumba and give a set of instructions to open Reflection session, select Macro, Visual Basic Editor, Open each module, class, and form file in Reflection and export it to an external file within your project folder, Copy the Rumba migration spreadsheet template to your project folder and rename it, open the spreadsheet, select Developer Tab, click Visual Basic, enter project name, import the code just exported from Reflection, import all modules from initial folder, add all elements, repeat until all modules, forms, and classes imported.  This is abridged version.  

My concern is for the customers (end-users) at this point.  These instructions were performed on a Windows 7 32-Bit operating system running Office 2010 32-Bit.  Using one example, UserA has 200 of these new XLMS macro saved Excel files.  All of them have base modules and call Rumba Interface.

ErorHandler:

If (Err.Source = "Rumba_Interface.DLL" And Err.Number = 5555) Then
MsgBox Err.Description & " - Error#:" & Err.Number, vbExclamation
Else
MsgBox "An error occurred in 'Script()' - " & Err.Description, vbCritical, "CORP_StandardModule"
End If
Resume Exit_Script_ErrorHandler

End Sub

UserA initiates 6 Rumba Sessions by launching 6 different Macro's on their workstation and it works fine.  This is where it was validated.

The problem is we have a different process for Application Lifecycle Management in Citrix running on 2008 R2 SP 1 64-Bit.

The same user at home hits a 16 GB, 2 Processor session hosting server (XenApp 6.5) that is 64-Bit OS but remains the 32-Bit Office, 32 Bit VBA 7, and 32 Bit Rumba.

After approximate 8 minutes all 6 Excel processes are running, along with 6 Rumba processes.  I'm using System Internals Process Explorer to look at each process, the Stack, the DLL's in use and so forth.  At 8 minutes or so the 6 processes start to slow down.  The customer view is they see a text file having populated data is being read and written too simultaneous.  I see this on Process Monitor as well which shows all File system, Registry, process, and network activity.  Normally this is so fast it is a blur.  There might 30,000 items in 1 text file.  There are Zero's (OOOOO) appended to #'s in the file and the first # is read, matched to something and the zero's replaced.  

This entire time, the physical memory usage of each spreadsheet never exceeds 45,000 K Private Bytes, and 80,000 K or less Working Set each.  The server is using about 6 GB out of 16 GB, 5% processor utilization.  I'm capturing all memory and processor metrics.  Of which I have over 30 screen shots.  CPU consumption per Excel process is ranging from 1-2 % each.  System Commit never exceeds 6 GB.

Then one by one, the user sees a popup box stating Error: Cannot Lock Memory.  One by one the sessions disappear.  The file that has 30000 lines might have 500 completed.  

The developer claims this is a resource issue in Citrix with Memory.  That is obviously not the case.  The problem appears to have something to do with the differences between 32 Bit Declare Statements or Functions or something possibly with WOW64 in the middle when you install 32 Bit programs on Windows server 64 Bit.

We have best practices that clearly state to package applications or "Code" applications specific to Citrix.  In some cases, vendors release Terminal Server compliant software.  The server in question is 1 of 10 that are running at 5% CPU and 4-5 GB of RAM use out of 16.

When you enable RDS on 2008 R2 it changes the system from Background oriented processing to Forward ground application hosting for multi-users.

It looks like a possible issue at some point where Excel processes (PIDS) share memory.  Only once copy of Excel is installed.  And that might be shared by 50 users.  This is a pre-production environment so very low use.

I've tried to Google this error alone, combined with Rumba, or with Excel 2010, or VBA 7.  Then I went to my Safari Books Online and read through about 12 or so books on VBA 7 and Excel Macros but they most often come back to the difference of moving from Office 2010 or Excel 2010 32 BIT to Office 2010 64 BIT.

That would cause more issues, we maintain Office 2010 32 BIT on Citrix and Workstation.  The user can run 2 instances without complaint.  Anything beyond 2 instances results in the described behavior.

Worse, the user sessions shutdown but remain for about 30 seconds on Citrix server and there does not appear to be any locking like greyed out applications or memory leaks.  

The developer is pushing back because it works in Windows 7 32 BIT having no relation to Citrix.  So I've started documenting the difference in memory usage between the two using Microsoft Articles and several books on 2008 R2.  Fact is, Citrix is an add-on to RDS Server.  This has all the signs of being a memory related issue.  

I say that because they all share some of the same components like VBA or VBE 7 and I could understand one having issue but not a sequential failure after an obvious slowing yet no paging faults, high memory, private memory, context switching, disk thrashing, nothing on the 64 Bit server.

It comes down to a handful of users that run 5 to 8 of these processes where most have 1 or 2 running and no issues.

At three or more, you get the error.  If necessary, I can post the screen shots on Screencast or something.  There are no Event Log entries.  I've got all the 2008 R2 symbols local on the server, using Microsoft Process Explorer, Process Monitor, VMMAP, Handles, and other common debug tools.

At some point, it reacts like one of the processes attempts to use private memory space of another and this causes the collapse of the processes.  The slowness might be due to possible constraints with VBA 7 32 BIT in 64 BIT OS and code written for 32 BIT that has obvious memory constraints. 

A good example being Java.  Java is a distributed client server design.  It will run on Citrix but requires a lot of customization.  The MSI for Workstation install is different for 64 Bit.  In some cases we host both versions.  Even if 32 Bit, the MST file is different and a lot of customization is done to certain .jar files, certificate store imports, .ini files, Security and so forth.

I'm just hoping someone sees this and has run across it so I can relay what is needed to remmediate the issue if it is even possible.  Reflections was working fine in Citrix.   This was a process born out of migrating away from that to Rumba.  It was all done in the context of Windows 7 32 BIT.

Perhaps if I can narrow down the issue for the developer, they might listen. 


#ExcelorVBACode
#Excel
#x64
#API
#Citrix
#Rumba

From your explanation I understand you're using Excel Macros.

For me it's not clear how the  communicate to RUMBA is establish? Ther're two Option from Excel.

I ASSUME it's via EHLLAPI , can you confirm ?

What Version of RUMBA are you using ?

regards

-andre