What OS?
What gdb version?
This is a problem in gdb itself. It can happen in any debugged app, but may not always happen.
Pause can interrupt your app anywhere, including at some code that does not have line info. (kernel or RTL)
For such location stepping (except asm instruction stepping) does not work (that is expected, it is impossible for it to work in that case).
GDB should not crash, but it does in your case. Nothing that can be done, except maybe trying a different version of gdb.
If you stop at such a location you can:
- try and set a breakpoint (if the stackwindow works, which it might not)
- do assemble stepping (either from the buttons in the asm dialog, or by assigning keys for this)
- run and pause again, until you get lucky and break at a location in your source.
You can also compile your own fpc, with line info. The at least pause in RTL will have line info. Kernel still will not have it. (and 3rd party dll will also not)
---------------------------
If you pause while your app is IDLE, then you will always be in the kernel, and there is no stepping at all.
If your app is IDLE then it is interrupted by the OS until it gets input (or a timer, or paint event). Your OS will hold it at some code in the kernel where there is no stack, no caller, no stepping, ....