Description
Here I'm reffering to google-cloud-cpp bigtable API
Because the DataClient holds a reference to [some queue object] within a Table, each table must be destroyed before the fork or before the client is destroyed after the fork. Otherwise, when the destructor is called, this client holds a reference to [some queue object] and tries to reference it causing a segfault.
Because we have no control over when a user might fork the process, we would have to construct a very complicated logic, detecting forks and handling objects we create. To avoid all that ordeal, we opted for a different approach: creating the connection every time we need to interact with BigTable and closing it afterwards. This is slightly inefficient but simple, reliable and robust.