我正在用户空间中调试一个程序,并且正在接收一个SIGSEGV
我认为可能是 value 的指针0xffffffff
。
我想知道是否0xffffffff
是一个有效的指针地址??
我使用了 GDB,下面是代码列表:
1414
1415 /* convert object handle */
1416 file = (PSLhandle_t*)hFile;
1417
1418 /* param check */
1419 if(file->hobject.fdesc == 0) <----------------- it may be crashing here
1420 return INVALID_SET_FILE_POINTER;
----------------- during debugging---------------------------
1412 if((hFile == NULL) || (lpBuffer == NULL))
(gdb) s
1419 if(file->hobject.fdesc == 0)
(gdb) print file
No symbol "file" in current context.
(gdb) print hFile
$1 = (HANDLE) 0xffffffff
(gdb) s
Program received signal SIGSEGV, Segmentation fault.
WriteFile (hFile=0xffffffff, lpBuffer=0xb7f69294, nNumberOfBytesToWrite=65516, lpNumberOfBytesWritten=0xb3933238,
lpOverlapped=0x0) at PSLWinWrapper.c:1419
1419 if(file->hobject.fdesc == 0)
我正在使用 Linux ,
[root@DellB app]# uname -a Linux DellB 2.6.23.1-42.fc8 #1 SMP 2007 i686 i686 i386 GNU/Linux
我已经检查过了NULL
。
/* param check */
if((hFile == NULL) || (lpBuffer == NULL)) <-------- CHECKED ALREADY FOR NULL
return INVALID_SET_FILE_POINTER;
/* convert object handle */
file = (PSLhandle_t*)hFile;
/* param check */
if(file->hobject.fdesc == 0) <-------------- CRASH HERE
return INVALID_SET_FILE_POINTER;
我想知道是否0xffffffff
是一个有效的指针地址?是否有任何 API 可以验证指针在用户空间中的 LINUX 上是否有效。