We have a process in place to check for memory leaks on a Progress Application Server. The primarily uses the code from article: https://knowledgebase.progress.com/articles/Article/P124514
However in recent testing we found a memory leak on an application server agent and all the objects in the session handle looked fine. After investigating with DynObjects we found the memory leak was a leaking CLIENT-PRINCIPAL object.
Current there is no way to detect this leak other than DynObjects. A Progress support case was created with the solution as follows:
"I checked with development on this before I submitted the bug. They came back and said that session:first-object is only for objects that inherit from Progress.Lang.Object so client-principal would not apply. They would like you to submit an enhancement request asking that they implement a session:first-client-principal attribute instead."
A more general SESSION:FIRST-HANDLE would be a broader mechanism - you could see C-P objects as well as any other handle-based objects in a session. You can always check the TYPE attribute for the type.