mitdbg / treeline

An update-in-place key-value store for modern storage.
MIT License
132 stars 17 forks source link

Thread synchronization error when running #113

Closed levitar64 closed 1 year ago

levitar64 commented 1 year ago

I am trying to run run_custom against treeline under two threads. It yields a segmentation fault. After debugging with gdb, I find there is suspected thread synchronization error.

Steps to reproduce:

  1. Build the project with debug mode on
  2. Run gdb ./run_custom
  3. Run with parameters --workload_config=../../bench/workload_configs/phased_64B_A_B_A_B_A.yml --threads=2 --db="treeline"
  4. A segmentation fault is triggered. A rough examination of the corresponding code suggests that the address of the variable pool_ is problematic. Further debugging with gdb indicates that it functions well in one thread while it is assigned invalid address in the other thread.

The issue #74 and the pull request #76 report and address a similar problem respectively. However, the fix is for pg-treeline only. I tried to run pg-treeline under the same circumstances and no errors are reported, while this is not the case for treeline.

geoffxy commented 1 year ago

Hey @levitar64 - thanks for giving TreeLine a try and for looking into this error!

pg_treeline is actually the primary TreeLine artifact. When you run using --db=treeline, you'll run against an earlier version of the system that we're not actively supporting. We are working on refactoring the code to rename the systems to avoid this mixup (#102, #103).

Long story short - please stick to the pg_treeline config until we get around to retiring the --db=treeline config.