当前位置: 技术问答>linux和unix
大家帮忙看看这个Segmentation fault是什么情况
来源: 互联网 发布时间:2017-03-05
本文导语: if ((fd = open (videodevice, O_RDWR)) == -1) { perror ("ERROR opening V4L interface n"); exit (1); } ..... videochan.norm = norme; videochan.channel = channel; if (ioctl (fd, VIDIOCSCHAN, &videochan) == -1) { printf ("ERROR setting channel and norme n");...
if ((fd = open (videodevice, O_RDWR)) == -1) {
perror ("ERROR opening V4L interface n");
exit (1);
}
.....
videochan.norm = norme;
videochan.channel = channel;
if (ioctl (fd, VIDIOCSCHAN, &videochan) == -1) {
printf ("ERROR setting channel and norme n");
exit (1);
运行发生Segmentation fault
另一个程序也发生了类似的Segmentation fault:在ioctl赋值的时候
perror ("ERROR opening V4L interface n");
exit (1);
}
.....
videochan.norm = norme;
videochan.channel = channel;
if (ioctl (fd, VIDIOCSCHAN, &videochan) == -1) {
printf ("ERROR setting channel and norme n");
exit (1);
运行发生Segmentation fault
另一个程序也发生了类似的Segmentation fault:在ioctl赋值的时候
|
运行报Some problem with the ioctl SET_VS_INFO!!! Segmentation fault
从上面得打印看,你的ioctl并没有Segmentation fault,因为既然有打印Some problem with the ioctl SET_VS_INFO,就说明ioctl已经返回。
你注意下你这个函数如果返回-1,会发生什么情况吧!
从上面得打印看,你的ioctl并没有Segmentation fault,因为既然有打印Some problem with the ioctl SET_VS_INFO,就说明ioctl已经返回。
你注意下你这个函数如果返回-1,会发生什么情况吧!
|
越界,某个变量未申请空间就赋值的可能性比较大。
不过你这点信息无法判断具体是什么问题。
不过你这点信息无法判断具体是什么问题。
|
x86不怕内存不对齐,arm必须对齐,这个要考虑
比如在arm中类似
char *p = 。。。
int i = *(int*)p
就有可能出问题
比如在arm中类似
char *p = 。。。
int i = *(int*)p
就有可能出问题