SyncInterruptWait() Creates a Trace?

[RMP 10.4.3]

I’m seeing some performance issues in my app, so I did a sampling performance capture. I see something that I don’t understand.

The top of the call stack looks like this

DeviceIoControl                                 KERNELBASE
DeviceIoControlImplementation                   KERNEL32
_ntxRegSetValueExW                              ntx
_ntxRegSetValueExW                              ntx
ntxWaitForRtSemaphore                           ntx
mpiPlatformOSInterruptWait                      RapidCode
mpiPlatformInterruptWait                        RapidCode
mpiControlInterruptWait                         RapidCode
RSI::RapidCode::MotionController::CreateTrace   RapidCode
SingleRMPController::HardwareInterruptWait      RapidPath
...

The last frame shown is where I call SyncInterruptWait().

The last RapidCode frame piqued my interest. In my own experience, creating traces has a serious impact on performance. Is this frame in the call stack misleading, or is it actually creating traces?

Looks like a misleading call stack. MotionController::CreateTrace is in 10.4.4 but it is not used. Also, inside MotionController::SyncInterruptWait(), it’s doing exactly what you expect, calling a lower level InterruptWait.

Do you use CreateTrace elsewhere in your code?