I have some python scripts that I'm using within lldb to track messages that I receive from Endpoint Security (I'm trying to track down an issue where I may not respond to an es_message_t
). So I added breakpoints for es_retain_message
, es_release_message
, es_respond_auth_result
and es_respond_flags_result
. And it works great...
Some of the time.
But it--fairly frequently--won't trigger one of the breakpoints. I will see cases where the es_retain_message
python code didn't run but the es_respond_auth_result
and the es_release_message
did. Or any combination thereof. And sometimes they will all be called and everything will work out fine.
I'm thinking there may be something thread based. All of the breakpoints are within code blocks--one from Endpoint Security and the other as an application-specific one (a concurrent queue).
The pseudo-code looks something like:
// Within the ES code block
...
es_retain_message(msg)
...
dispatch_async(localConcurrentQueue, ^{
...
es_respond_auth_result(msg) // or es_respond_flags_result, depending...
...
es_release_message(msg)
}
I feel like I see this happen more often when my python script prints, but I haven't measured it to see if that's really happening. I've tried removing some of the printing and tried various creative uses of lldb.SBDebugger.SetAsync
to no avail.
Is there a known issue in lldb
that I'm missing?