sudo umount /dev/mmcblk0
sudo badblocks -n -v /dev/mmcblk0
A flash based medium should normally never give errors while using badblocks to the OS/application. If it does it means that:
It is worn out to the point the wear-leveling doesn't have enough room anymore. (part of) the flash memory itself is faulty. The controller chip is bad. Any combination of the above can also occur. All variants are equally lethal to the integrity of your data.