Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux C中访问时共享内存SIGSEGV分段错误?_Linux_Gcc - Fatal编程技术网

Linux C中访问时共享内存SIGSEGV分段错误?

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

我有一个服务器程序,可以创建4个大小不同的共享内存段。 客户端程序连接到创建的段,但在strcmp上,共享内存变量会导致段冲突

通过ipcs检查。。 我已经试了几个小时了,谷歌搜索了我想的所有东西,但没有找到解决方案。 下面是一些调试结果

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。这正是分割错误的原因。