I'm trying to use CXLMemSim on QEMU. When executing the command ndctl create-namespace -m dax -r region0 in the guest, ndctl reports errors:
cxl region: cmd_create_region: created 1 region
qemu-system-x86_64: info: CXL Type3: Initializing CXLMemSim integration
qemu-system-x86_64: info: CXL Type3: CXLMemSim TCP mode - 127.0.0.1:9999
qemu-system-x86_64: info: CXL Type3: Active latency injection disabled (set CXL_LATENCY_INJECT=1 to enable)
qemu-system-x86_64: info: CXL Type3: Establishing connection during init...
qemu-system-x86_64: info: CXL Type3: Connection attempt #1 to CXLMemSim server at 127.0.0.1:9999
qemu-system-x86_64: info: CXL Type3: Successfully connected to CXLMemSim (fd=97)
qemu-system-x86_64: info: CXL Type3: Request #1 (op=READ, connected=1, transport=TCP)
qemu-system-x86_64: CXL Type3: Failed to receive response from CXLMemSim
[2026-05-21 17:03:08.297] [info] [shared_memory_manager.cc:79] Size: 10000 MB
[2026-05-21 17:03:08.297] [info] [shared_memory_manager.cc:80] Base address: 0x0
[2026-05-21 17:03:08.297] [info] [shared_memory_manager.cc:81] Cachelines: 163839999
[2026-05-21 17:03:08.297] [info] [main_server.cc:611] Shared memory initialized:
[2026-05-21 17:03:08.297] [info] [main_server.cc:612] Name: /cxlmemsim_pgas
[2026-05-21 17:03:08.297] [info] [main_server.cc:613] Size: 10485760000 bytes
[2026-05-21 17:03:08.297] [info] [main_server.cc:614] Base address: 0x0
[2026-05-21 17:03:08.297] [info] [main_server.cc:615] Cachelines: 163839999
[2026-05-21 17:03:08.297] [info] [main_server.cc:642] >>> TCP mode: Initializing TCP socket <<<
[2026-05-21 17:03:08.297] [info] [main_server.cc:674] Server listening on TCP port 9999
[2026-05-21 17:03:08.297] [info] [main_server.cc:691] Running in TCP mode
[2026-05-21 17:03:14.422] [info] [main_server.cc:718] Accepted new client connection, assigned thread ID 0
[2026-05-21 17:03:14.422] [info] [main_server.cc:1325] Thread 0: Client connected from 127.0.0.1:47662 (fd=5)
[2026-05-21 17:03:14.432] [info] [main_server.cc:1418] Thread 0: Connection closed
[2026-05-21 17:03:32.668] [info] [main_server.cc:718] Accepted new client connection, assigned thread ID 1
[2026-05-21 17:03:32.668] [info] [main_server.cc:1325] Thread 1: Client connected from 127.0.0.1:35724 (fd=6)
[1] 916813 segmentation fault (core dumped) ./build/cxlmemsim_server --comm-mode=tcp --port=9999 --capacity=10000
Core was generated by `./build/cxlmemsim_server --comm-mode=tcp --port=9999 --capacity=10000 --default'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00005ae033fd1dbf in CXLSwitch::insert (this=0x5ae050b13a00, timestamp=4910846501154363, tid=1, phys_addr=8184, virt_addr=8184, index=0) at /home/chj/CXLMemSim/src/cxlendpoint.cpp:500
500 int ret = expander->insert(timestamp, tid, phys_addr, virt_addr, index);
[Current thread is 1 (Thread 0x7a3ed55ff6c0 (LWP 917134))]
(gdb) bt
#0 0x00005ae033fd1dbf in CXLSwitch::insert (this=0x5ae050b13a00, timestamp=4910846501154363, tid=1, phys_addr=8184, virt_addr=8184, index=0) at /home/chj/CXLMemSim/src/cxlendpoint.cpp:500
#1 0x00005ae033e85dec in ThreadPerConnectionServer::handle_request (this=0x7ffddf0aecf0, client_fd=6, thread_id=1, req=..., resp=...) at /home/chj/CXLMemSim/src/main_server.cc:1037
#2 0x00005ae033e8805d in ThreadPerConnectionServer::handle_client (this=0x7ffddf0aecf0, client_fd=6, thread_id=1) at /home/chj/CXLMemSim/src/main_server.cc:1408
#3 0x00005ae033f5b344 in std::__invoke_impl<void, void (ThreadPerConnectionServer::*)(int, int), ThreadPerConnectionServer*, int, int> (
__f=@0x5ae050b13b48: (void (ThreadPerConnectionServer::*)(ThreadPerConnectionServer * const, int, int)) 0x5ae033e87576 <ThreadPerConnectionServer::handle_client(int, int)>,
__t=@0x5ae050b13b40: 0x7ffddf0aecf0) at /usr/include/c++/13/bits/invoke.h:74
#4 0x00005ae033f593dc in std::__invoke<void (ThreadPerConnectionServer::*)(int, int), ThreadPerConnectionServer*, int, int> (
__fn=@0x5ae050b13b48: (void (ThreadPerConnectionServer::*)(ThreadPerConnectionServer * const, int, int)) 0x5ae033e87576 <ThreadPerConnectionServer::handle_client(int, int)>)
at /usr/include/c++/13/bits/invoke.h:96
#5 0x00005ae033f518d3 in std::thread::_Invoker<std::tuple<void (ThreadPerConnectionServer::*)(int, int), ThreadPerConnectionServer*, int, int> >::_M_invoke<0ul, 1ul, 2ul, 3ul> (this=0x5ae050b13b38)
at /usr/include/c++/13/bits/std_thread.h:292
#6 0x00005ae033f501ee in std::thread::_Invoker<std::tuple<void (ThreadPerConnectionServer::*)(int, int), ThreadPerConnectionServer*, int, int> >::operator() (this=0x5ae050b13b38)
at /usr/include/c++/13/bits/std_thread.h:299
#7 0x00005ae033f48b42 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (ThreadPerConnectionServer::*)(int, int), ThreadPerConnectionServer*, int, int> > >::_M_run (this=0x5ae050b13b30)
at /usr/include/c++/13/bits/std_thread.h:244
#8 0x00007a4146aecdb4 in ?? () from /lib/x86_64-linux-gnu/libstdc++.so.6
#9 0x00007a414669caa4 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:447
#10 0x00007a4146729c6c in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78
./build/cxlmemsim_server \
--comm-mode=tcp \
--port=9999 \
--capacity=10000 \
--default_latency=400 \
--topology=topology.txt
I'm trying to use CXLMemSim on QEMU. When executing the command
ndctl create-namespace -m dax -r region0in the guest, ndctl reports errors:and CXLMemSim terminates due to a segmentation fault:
Using gdb to view the core file and print backtrace:
The startup command is
How can I fix this error?