Ideally, STP isn't used to "recover" from a loop, it avoids creating one (which if configured to fully do so, is, I believe, generally, 100% effective.)
If a loop is created (possible using something like portfast, which short cuts some STP processing), Cisco STP might determine there's a loop and then "break" the loop, but this isn't guaranteed.
What you are referring to is MAC FLAPPING which happens due to loop.
Since at layer 2 there is no TTL value a switch never knows there is a loop.
STP helps by making sure that there is only one path to destination logically. If you disable STP the switch won't ever know that it's in loop and won't block anything and you will see same MAC on different ports and MACFLAP logs.
## Make sure to mark post as helpful, If it resolved your issue. ##