Throw the card in the trash, you can't trust it. It's probably a 1GB card with hacked CSD register to report a different size.
Some readers try to enumerate the card size by reading the last block. Obviously in this case this would be off in nowhere-land.
Semaphores are not explicitly used for card communications. Sounds like a higher level software stack is choking somewhere.
There are all manner of ways the card could fail in one reader but work in another.