On Monday 24 November 2008 19:05:12, Michael Snyder wrote:
Well, all your observations are correct -- but the same thing
also happens if you merely switch the thread of focus using the
"thread" command.
I do think that prune-threads and target_find_new_threads
are being called too aggressively from somewhere, but it
isn't directly from info_threads_command.
It's inside print_thread_info, and IIUC, you're calling it
on each of the ids in range?
I think this is a separate, pre-existing problem that this patch
helps to reveal.
I'm thinking about the case where you have 200 threads, and you
do 'info threads 40-45'.
That'll do 15 prune_threads, target_find_new_threads and
frame restores. That'll be around '14 * (200 + 200 + 1)'
roundtrips extra at least instead of the current (200 + 200).
The worst case, is of course, if you do 'info threads 1-200'.
Then you'll have '199 * (200 + 200 + 1)' extra target
roundtrips compared to plain 'info threads'. That's around
80000? Unless I'm missing something.
Isn't this the same reasoning behind having thread_apply_command
and thread_apply_all implementations, instead of having one call
into the other?