Dear Dev-team,
I'm so happy with how FreeSWITCH is built and thanks for such an awesome project. I'm in the process of building an FS module and I'm trying to understand how to avoid a potential thread synchronization issue(due to my logic). I have a global hash table that encapsulates business logic(lots of business data about  caller and callee.)  Leg A's UUID will be used as a key in the hash table that holds data fetched from database.  Once the call is disconnected, a cleanup will take place during reporting state handler callback on Leg A which I'm thinking it will be called after hangup state. Now, if Leg B happens to take long time to process its database logic, Leg A might be gone before leg B is finished and at this point Leg B will segfault because the data it needs from the hash table are cleaned by Leg A reporting/hangup state handler. 

Cloning the data structure on both channels will fix this issue but will not be efficient, in addition having a mutex lock may not work because a thread might die holding a lock and this might be a potential FS core segfault. 
Any suggestion is very much appreciated. 

Best Regards,
Dave