Even if sigfastblock block is non-zero, non-blockable signals must be checked on ast and delivered now. This also affects debugger ability to attach, because issignal() also calls ptracestop() is there is pending stop for debugee.
Instead of checking for sigfastblock, and either setting PENDING flag for usermode or doing signal delivery loop, always do loop after checking, and then check and set PENDING bit. issignal() already does the right thing for fast-blocked case, allowing only STOPs and SIGKILL to happen.