I am not using pcscd.
When I perform some card actions (I have mostly tested with 'gpg --card-status' and with signing git commits), and then suspend/resume, the card becomes unusable.
In the logging I see "DBG: raw apdu: 00ca00c400" and "apdu_send_simple(0) failed: unknown status error". Closer examination reveals that send_apdu_ccid returned '0', but also reported '0' for the response length, which cannot be right (since a successful response always has at least 2 status bytes).
Looking with wireshark, I indeed see the "00ca00c400" apdu wrapped in CCID packets, and while normally I see it returning with status 0, error 0, after suspend/resume it returns status 64, error 252.
So it seems somewhere in send_apdu_ccid the fact that this call was unsuccessful is lost.
Resetting the connection with "gpg-connect-agent 'scd reset' /bye" is not sufficient to restore the yubikey to working order, but "gpgconf --kill scdaemon" is.
I have a wireshark file with the monitored CCID exchanges if that is useful.
I encountered this issue with gnupg 2.2.12-1 from Debian, but also saw it when I replaced scdaemon with the one from git master at 3d766924b412b36fc9481803447b93f7fa68b8f6.
This sounds similar to https://dev.gnupg.org/T3825 but I'm not sure if it is the same thing - if so then at least the workaround does not appear to work for me.