3 ms·
On Windows, I tend to often see callstack frames going down a lot, especially in C++ debug builds where inlines are no longer such. On top of that if you have
by malkia 2y ago
On Windows, I tend to often see callstack frames going down a lot, especially in C++ debug builds where inlines are no longer such.
On top of that if you have work-stealing task scheduler, that if your current thread waits on I/O reassigns it to some other task to work it may bulb even more.
- naasking 2y agoCan you clarify what you mean by "going down a lot"? I interpret that to mean that the stacks are flatter, but then debug builds without inlining would grow the stack, not flatten it, so I'm not clear on what you're saying. Scheduling tasks on a work-stealing queue tends to flatten the stack first, eg. a halted task has a nearly empty stack if it's an async coroutine. The scheduler itself may have 3-4 calls deep before resuming the task itself, so that doesn't seem too bad. Unless you're talking about full blown threads.
- malkia 2y agoSorry I meant to say is that inlines are now individual functions, so the amount of callstack entry items is going to grow. But then, if you capture the stack (using sampling), and catch for example ThreadContext switch while CreateFileA is happening, you can expect lots of callstack items going all the way down to the kernel