sam_vultron
12/06/2025, 8:10 PMbaml-sam
12/06/2025, 8:30 PMbaml-sam
12/06/2025, 8:30 PMbaml-sam
12/06/2025, 8:32 PMsam_vultron
12/06/2025, 8:50 PMbaml-sam
12/06/2025, 9:03 PMbaml-sam
12/06/2025, 9:04 PMsam_vultron
12/06/2025, 10:41 PMbaml-sam
12/07/2025, 12:11 AMbaml-sam
12/07/2025, 12:12 AMbaml-sam
12/07/2025, 12:12 AMbaml-sam
12/07/2025, 12:13 AMVaibhav (BAML 🐑)
12/07/2025, 12:14 AMVaibhav (BAML 🐑)
12/07/2025, 12:15 AMsam_vultron
12/08/2025, 6:33 PMsam_vultron
12/09/2025, 12:09 AMdef start_worker(worker_cls: Type[BaseKafkaWorker]):
config = worker_cls.config()
def start_group():
threads = []
for _ in range(config.num_threads_per_process):
worker = worker_cls()
t = DBConnectionSafeThread(target=worker.start)
threads.append(t)
for t in threads:
t.start()
for t in threads:
t.join()
processes = []
for _ in range(config.num_processes):
p = Process(target=start_group) # <-- This is forking it, causing a Segmentation fault
processes.append(p)
for p in processes:
p.start()
for p in processes:
p.join()
This error goes away when we change the above code to:
def start_worker(worker_cls: Type[BaseKafkaWorker]):
config = worker_cls.config()
def start_group():
threads = []
for _ in range(config.num_threads_per_process):
worker = worker_cls()
t = DBConnectionSafeThread(target=worker.start)
threads.append(t)
for t in threads:
t.start()
for t in threads:
t.join()
# TODO [ENG-xxxx]: Re-enable multiprocessing after fixing fork-after-init issues
# with BAML client. For now, always run directly without forking.
start_group()
return
# Original multiprocessing code (disabled for now):
# processes = []
# for _ in range(config.num_processes):
# p = Process(target=start_group)
# processes.append(p)
#
# for p in processes:
# p.start()
# for p in processes:
# p.join()
Hopefully this is helpful for easier re-creation @baml-sam @Vaibhav (BAML 🐑)
Just to state again for completeness - we have 23 different BAML clients in our codebase, not just 1 in the root dirVaibhav (BAML 🐑)
12/09/2025, 4:10 PM