I have a profiler that implements the ICorProfilerInfo3 elt hooks (FunctionEnter3WithInfo, etc). Works great. However, I've noticed that there are certain scenarios where I do not receive a leave or tailhook for certain methods that Idid receive an enter hook on.
Reading the API and documentation, I find no reason why I would never get a leave or tailhook. I've pared my code down to just simple implementations of the callback that log the class and method. It will jump from an "enter" on a method to a "leave / tailhook" of a method higher up the call stack.
Naturally, I've worked around this in my profiler in the shadow stack I created (I am not using sampling or the snapshot callback) but this certainly has me scratching my head.