Using SD.h library I find that SD.begin(pin) fails sometime. I realized after trial and error that is happens when I reset the arduino after SD.begin() passes. And I can fix it as long as I power restart the card or reinsert it. I have it powered by on board 3.3v supply which is unaffected by reset. A hardware solution would be to power reset the card reader, but I would like a software solution
SD.h seems to be a wrapper, for Sd2card, SdVolume, SdFile. When the problem happens Sd2card.init still works, but it fails to init Sdvolume. So SdVolume library seems to have a problem with I haven't figure it out enough for a solution.
But, I found that if I called a function* from Sd2card before SdVolume init it seems to work even after reset.
*tested with sd2card.cardSize() which also reported twice the value on large card.
Anyways just started using the library and it already has tones of problems with it.
I don't expect an answer, but I hope to make the point of the problem.