MakeShareable creates a new reference controller for the object, so it should only be used exactly one time. After using it once you have to copy the shared ptr to get more of them.
Basically, there are two methods to properly set up a shared ptr:
TSharedPtr<FBlah> SharedBlah = MakeShared<FBlah>();
FBlah* Blah = new FBlah();
...
TSharedPtr<FBlah> SharedBlah = MakeShareable(Blah);