Linux C中访问时共享内存SIGSEGV分段错误?
我有一个服务器程序,可以创建4个大小不同的共享内存段。 客户端程序连接到创建的段,但在strcmp上,共享内存变量会导致段冲突 通过ipcs检查。。 我已经试了几个小时了,谷歌搜索了我想的所有东西,但没有找到解决方案。 下面是一些调试结果Linux C中访问时共享内存SIGSEGV分段错误?,linux,gcc,Linux,Gcc,我有一个服务器程序,可以创建4个大小不同的共享内存段。 客户端程序连接到创建的段,但在strcmp上,共享内存变量会导致段冲突 通过ipcs检查。。 我已经试了几个小时了,谷歌搜索了我想的所有东西,但没有找到解决方案。 下面是一些调试结果 Program received signal SIGSEGV, Segmentation fault. 0x009aeb87 in __strcmp_sse4_2 () from /lib/libc.so.6 Missing separate debugin
Program received signal SIGSEGV, Segmentation fault.
0x009aeb87 in __strcmp_sse4_2 () from /lib/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.25.el6.i686 libX11-1.3-2.el6.i686 libXau-1.0.5-1.el6.i686 libxcb-1.5-1.el6.i686
(gdb) bt
0 0x009aeb87 in __strcmp_sse4_2 () from /lib/libc.so.6
1 0x0809f242 in isSymb (inName=0x80aa485 "SimTime")
at /usr2/ptask5/TICSS/src/mdsm/dsm/xsymbol.c:178
(gdb) down
1 0x0809f242 in isSymb (inName=0x80aa485 "SimTime")
at /usr2/ptask5/TICSS/src/mdsm/dsm/xsymbol.c:178
if ( !strcmp( sp->symbName, inName ) )
(gdb) p inName
$1 = 0x80aa485 "SimTime"
(gdb) p sp->symbName
$2 = 0x0
sp->symbName读取为0x0,因此发生故障。。。在调试过程中发现..但不知道如何修复..请帮助您需要在
sp->symbName
设置为值的位置设置断点(或printf
s或assert
s),并确保从未为其分配NULL
以及已为其分配值。这是您的代码,只有你才能知道为什么是0。这正是分割错误的原因。