If you call GetThreadInfo from the first procedure in the stack with parameters LSI_THREAD_CALLPROC and LSI_THREAD_PROC you'll get the same results.
I suggest, that GetThreadInfo(LSI_THREAD_CALLPROC) in that case return an empty string. It would be a symptom of the first called procedure.
It is good to use error tracing like described in this article (http://www.ferdychristant.com/blog//articles/DOMM-6BPT8R), but for the first procedure one must use other error handler. My suggestion can solve this problem.