my idea is to delete the old FSocketMac too. but we need to know when to delete it properly.
First, you need to use unreal engine source code. I believe you are already using.
So, in Engine/Source/Runtime/Sockets/Private/Mac/SocketSubsystemMac.h
there are construction, deconstruction and Close
function. We first add #include "Misc/AssertionMacros.h"
to the include list. and then add FDebug::DumpStackTraceToLog(ELogVerbosity::Type::Warning)
to these three functions to print stack trace to log file.
and then, compile unreal engine source. and use the compiled engine to build a client and test. it will print when the FSocketMac is created, destroyed and closed.
If you share the log with me, then I can help you analyze it.