Hi @Robert Massart It seems that your program is leaking the global atom table. The program should use GlobalDeleteAtom
to reduce its reference count when it no longer needs to use local atoms. If the atom's reference count reaches zero, GlobalDeleteAtom
removes the string associated with the atom from the global atom table.
According to this document: Atom Table Size:
If there is concern about the application causing user atom table issues, you can investigate the root cause by connecting the kernel debugger and breaking into the process on calls to
UserAddAtomEx
(bae1 win32kbase!UserAddAtomEx /p <eprocess> "kc10;g"
). Look foruser32!
on the callstack to see which API is being called. The methodology is similar to the global atom table issue detection explained in Identifying Global Atom Table Leaks. Another way to dump the contents of the user atom table is by callingGetClipboardFormatName
over the range of possible atoms from 0xC000 to 0xFFFF. If the total atom count steadily goes up while the application is running or does not return to baseline when the app is closed, there is a problem.
If the answer is helpful, please click "Accept Answer" and upvote it.
Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.