utsaslab / RECIPE

RECIPE : high-performance, concurrent indexes for persistent memory (SOSP 2019)
Apache License 2.0
197 stars 46 forks source link

Segmentation fault in ycsb #4

Closed yige-hu closed 5 years ago

yige-hu commented 5 years ago

It looks like there is a segmentation fault caused by `./build/ycsb art a randint uniform 4' I followed the the build and config procedure as described in README.md, till 'Persistent Memory environment'.

Machine config: CPU: AMD Ryzen Threadripper 2990WX 32-Core Processor DRAM: 8*16G DDR4 DRAM emulated persistent memory: 50G, mounted with ext4-dax file system OS: Ubuntu 18.04.3 LTS, with linux-5.1.0+ kernel

root@RECIPE# cat ./scripts/set_vmmalloc.sh
export VMMALLOC_POOL_SIZE=$((16*1024*1024*1024))
export VMMALLOC_POOL_DIR="/mnt/pmem"

root@RECIPE# source ./scripts/set_vmmalloc.sh
root@RECIPE# LD_PRELOAD="../pmdk/src/nondebug/libvmmalloc.so.1" ./build/ycsb art a randint uniform 4
art, workloada, randint, uniform, threads 4
Loaded 0 keys
Segmentation fault (core dumped)

root@RECIPE# gdb ./build/ycsb core
warning: Error reading shared library list entry at 0x7f2ecdc39b00
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `./build/ycsb art a randint uniform 4'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00005629a6dc8967 in ART_ROWEX::N4::change(unsigned char, ART_ROWEX::N*) ()
[Current thread is 1 (Thread 0x7f32d0800800 (LWP 108852))]
(gdb) bt
#0  0x00005629a6dc8967 in ART_ROWEX::N4::change(unsigned char, ART_ROWEX::N*) ()
#1  0x00005629a6dcd717 in ART_ROWEX::Tree::insert(Key const*, ART::ThreadInfo&) ()
#2  0x00005629a6d73cc0 in tbb::interface9::internal::start_for<tbb::blocked_range<unsigned long>, ycsb_load_run_randint(int, int, int, int, int, std::vector<unsigned long, std::allocator<unsigned long> >&, std::vector<unsigned long, std::allocator<unsigned long> >&, std::vector<int, std::allocator<int> >&, std::vector<int, std::allocator<int> >&)::{lambda(tbb::blocked_range<unsigned long> const&)#1}, tbb::auto_partitioner const>::execute() ()
#3  0x00007f32cff9bb46 in ?? () from /usr/lib/x86_64-linux-gnu/libtbb.so.2
#4  0x00007f32cff98790 in ?? () from /usr/lib/x86_64-linux-gnu/libtbb.so.2
#5  0x00005629a6d82db6 in ycsb_load_run_randint(int, int, int, int, int, std::vector<unsigned long, std::allocator<unsigned long> >&, std::vector<unsigned long, std::allocator<unsigned long> >&, std::vector<int, std::allocator<int> >&, std::vector<int, std::allocator<int> >&) ()
#6  0x00005629a6d700c6 in main ()
SeKwonLee commented 5 years ago

It looks the benchmark program makes segmentation fault before running experiments.

Could you check below lists and then report the results again?

  1. You mounted NOVA with 10GB that is lower size than mmap size configured by libvmmalloc (16GB). Could you change the mounted file system size larger than mmap size?

  2. Please check if the program run after exchanging NOVA with Ext4-DAX?

  3. Please check if you generated workload files prior to running benchmarks.

yige-hu commented 5 years ago

Yep, the above output is after sudo su. I'm not sure if its a ycsb issue or the input/config is incorrect.

yige-hu commented 5 years ago

I've been running with 50G ext4-dax (the information on NOVA was out-of-dated). Sorry about that.

I tried the YCSB workload generation section in the README.md and now it's working. I appreciate your help! I guess it'll be helpful if you put the section before the "Building & Running on Persistent Memory and DRAM".