cancel
Showing results for 
Search instead for 
Did you mean: 

CTF Loader

SOLVED
Highlighted
Valued Contributor

CTF Loader

Hi,

Most of us must run our test nightly. I have personnaly several machines running on Win 10 Pro, and updated to last version (1909).

My tests are very common in the way that they simulate keystrokes and mouse clicks on an accounting program.

An annoying thing is that I have a process, CTF Loader (ctfmon.exe) that takes more and more size all along the nights and reaches up to 1,5Gb (!!!) in memory, leading the machine to crash due of lack of memory.

The only solution for me is to kill periodicaly this process or reboot the machines.

if I try to disable Touch Keyboard and Handwriting Panel Service, the same problem still occurs in another process name : Host Process for Windows Tasks, which still runs MsCTFMonitor.

Any hint please ?

Thank you,

2 ACCEPTED SOLUTIONS

Accepted Solutions
Highlighted
Community Hero

Re: CTF Loader

Process filter has to do with processes that show up in Windows.  Basically, if you go to Task manager and look at the list of processes, whatever process name shows there, that's how you filter the process.  So, my guess is that CTFMon is calling the DLL... so, to exclude the DLL, you need to filter out CTFMonitor


Robert Martin
[Hall of Fame]
Please consider giving a Kudo if I write good stuff
----

Why automate?  I do automated testing because there's only so much a human being can do and remain healthy.  Sleep is a requirement.  So, while people sleep, automation that I create does what I've described above in order to make sure that nothing gets past the final defense of the testing group.
I love good food, good books, good friends, and good fun.

Mysterious Gremlin Master
Vegas Thrill Rider
Extensions available

View solution in original post

Highlighted
Valued Contributor

Re: CTF Loader

Hi,

Finaly I found a solution : I ask TC to close the process before the tests. I had to adapt slightly the following method which closes a process :

 

procedure KillProcessus(NomProcessus: string);
var
  p, IsClosed;
begin
  p := Sys.FindChild('ProcessName', NomProcessus);
  while (p.Exists) do
  begin
    p.Close;
    IsClosed:= p.WaitProperty('Exists', False);
    if not IsClosed then
      p.Terminate;
    p:= Sys.FindChild('ProcessName', NomProcessus);
  end;  
end;

This procedure don't work because there is no window for this process. So I used this one which work pretty fine :

 

procedure KillProcessusCTFMon(NomProcessus: string);
var
  p, IsClosed;
begin
  p := Sys.FindChild('ProcessName', NomProcessus);
  while (p.Exists) do
  begin
    p.Terminate;
    p:= Sys.FindChild('ProcessName', NomProcessus);
  end;  
end;

View solution in original post

10 REPLIES 10
Highlighted
Community Hero

Re: CTF Loader

I googled "ctf loader high memory usage" and saw many articles about disabling it.  You'll need to see which one works best for you.

Highlighted
Community Hero

Re: CTF Loader

Are you actually automating something against CTFMON.EXE?  If not, you could exclude it.  Go to Tools -> Current Project Properties -> Open Applications -> Process Filter.  By default, I believe it's set to "ignore selected processes".  Add CTFMON.EXE to the list and see if that helps.


Robert Martin
[Hall of Fame]
Please consider giving a Kudo if I write good stuff
----

Why automate?  I do automated testing because there's only so much a human being can do and remain healthy.  Sleep is a requirement.  So, while people sleep, automation that I create does what I've described above in order to make sure that nothing gets past the final defense of the testing group.
I love good food, good books, good friends, and good fun.

Mysterious Gremlin Master
Vegas Thrill Rider
Extensions available
Highlighted
Valued Contributor

Re: CTF Loader

Thanks for answering guys,

Robert it seems to be the "MsCtfMonitor.dll" the culprit, could I disable its usage by the same way (should I enter its name in the process filter) please ?

Thanks,

Highlighted
Community Hero

Re: CTF Loader

Process filter has to do with processes that show up in Windows.  Basically, if you go to Task manager and look at the list of processes, whatever process name shows there, that's how you filter the process.  So, my guess is that CTFMon is calling the DLL... so, to exclude the DLL, you need to filter out CTFMonitor


Robert Martin
[Hall of Fame]
Please consider giving a Kudo if I write good stuff
----

Why automate?  I do automated testing because there's only so much a human being can do and remain healthy.  Sleep is a requirement.  So, while people sleep, automation that I create does what I've described above in order to make sure that nothing gets past the final defense of the testing group.
I love good food, good books, good friends, and good fun.

Mysterious Gremlin Master
Vegas Thrill Rider
Extensions available

View solution in original post

Highlighted
Valued Contributor

Re: CTF Loader

Hum, that's what I thought too but I still have in the Process Explorer that MS provides this dll that gets bigger and bigger...

Last day it way 2 Gb on one of my machines...

Anyway, thank you Robert. 🙂

Highlighted
Valued Contributor

Re: CTF Loader

I'm sorry Tanya but you tagged this discussion as resolved but that hint doesn't help : even if you exclude the ctfmon.exe process in TestComplete it still grows.

 

I tried to stop some services but things are getting worse after that.

 

What I finaly tried is to simply terminate ctfmon.exe process in my TC scripts before each test.

Highlighted
Community Hero

Re: CTF Loader

@m_essaid You didn't reply to the thread for over a month, so it got marked as resolved.  If you're not responding, the threads don't stay open forever.  

Highlighted
Valued Contributor

Re: CTF Loader

Hi,

Finaly I found a solution : I ask TC to close the process before the tests. I had to adapt slightly the following method which closes a process :

 

procedure KillProcessus(NomProcessus: string);
var
  p, IsClosed;
begin
  p := Sys.FindChild('ProcessName', NomProcessus);
  while (p.Exists) do
  begin
    p.Close;
    IsClosed:= p.WaitProperty('Exists', False);
    if not IsClosed then
      p.Terminate;
    p:= Sys.FindChild('ProcessName', NomProcessus);
  end;  
end;

This procedure don't work because there is no window for this process. So I used this one which work pretty fine :

 

procedure KillProcessusCTFMon(NomProcessus: string);
var
  p, IsClosed;
begin
  p := Sys.FindChild('ProcessName', NomProcessus);
  while (p.Exists) do
  begin
    p.Terminate;
    p:= Sys.FindChild('ProcessName', NomProcessus);
  end;  
end;

View solution in original post

Highlighted
Valued Contributor

Re: CTF Loader

Hi @Marsha_R ,

I hope that every subject that don't have answers is not tagged as resolved...

New Here?
Join us and watch the welcome video:
Announcements
Join TechCorner Challenge!
Want a fun and easy way to learn TestComplete? Try solving weekly TechCorner challenges and get into the Leaderboard!

Challenge Status

Changing options from outside of TestComplete

Participate!

How to execute remote test and obtain results via Test Runner REST API

Participate!

Comparing content of HTML table with Excel file data

Participate!

Compare HTML table with Excel file and correct data in the file

Participate!
Top Kudoed Authors