pmem / pmemkv

Key/Value Datastore for Persistent Memory
https://pmem.io
Other
399 stars 118 forks source link

Segfault during pmemkv_bench #79

Closed YF-CHAI closed 6 years ago

YF-CHAI commented 6 years ago

My question is that I follow the INSTALLING.md's guide to convert filesystem dax to device dax, but I got the different result below. # ndctl list { "dev":"namespace0.0", "mode":"fsdax", "size":17179869184, "sector_size":512, "blockdev":"pmem0", "numa_node":0 } The mode is not "memory" but "fsdax", after I typed the command # sudo ndctl create-namespace -e namespace0.0 -f -m dax I got the response screen like # sudo ndctl create-namespace -e namespace0.0 -f -m dax { "dev":"namespace0.0", "mode":"devdax", "size":"15.75 GiB (16.91 GB)", "uuid":"cbce0ed8-7626-4360-9d7c-6cf86a976f3f", "raw_uuid":"00000000-0000-0000-0000-000000000000", "daxregion":{ "id":0, "size":"15.75 GiB (16.91 GB)", "align":2097152, "devices":[ { "chardev":"dax0.0", "size":"15.75 GiB (16.91 GB)" } ] }, "numa_node":0 }

Then i can find /dev/dax0.0, but when i used it in pmemkv_bench below, segmentation happened. #./pmemkv_bench --db=/dev/dax0.0 Date: Mon Apr 23 11:01:14 2018 CPU: 24 * Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz CPUCache: 15360 KB Path: /dev/dax0.0 Engine: kvtree Keys: 16 bytes each Values: 100 bytes each Entries: 1000000 RawSize: 110.6 MB (estimated) WARNING: Optimization is disabled: benchmarks unnecessarily slow WARNING: Assertions are enabled; benchmarks unnecessarily slow skipped deleting for DAX device open : 8.439 millis/op; fillrandom : 11.439 micros/op; 9.7 MB/s
overwrite : 13.989 micros/op; 7.9 MB/s
skipped deleting for DAX device open : 7.328 millis/op; Segmentation fault (core dumped) The #demsg | tail shows [233718.861903] pmemkv_bench[22218]: segfault at 0 ip 0000000000405cf9 sp 00007f27e93efd10 error 4 in pmemkv_bench[400000+17000] The kernel is Linux 4.15.15-041515-generic. I don't know what's wrong with my operation, need you help, thanks.

marcinslusarz commented 6 years ago
gdb --args ./pmemkv_bench --db=/dev/dax0.0
run
bt

will tell us more.

@RobDickinson maybe it's worth adding libunwind support to test/benchmark binaries? you can take the code from pmdk tests (see https://github.com/pmem/pmdk/blob/master/src/test/unittest/ut_backtrace.c )

robfromboulder commented 6 years ago

@YF-CHAI, any chance that you forgot these steps?

pmempool rm --verbose /dev/dax0.0
pmempool create --layout pmemkv obj /dev/dax0.0
robfromboulder commented 6 years ago

Closing as I cannot reproduce except by: