From: Alex I. <ale...@in...> - 2003-05-28 20:04:42
|
<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> Gentlemen, <p>I am issuing an ioctl() call on a UNIX-domain socket to set it to message non-discard mode. Here is the trivial snippet of code:<font face="Courier New,Courier"></font> <p><font face="Courier New,Courier">---------------------------------------------------------------------------------</font> <br><font face="Courier New,Courier"> struct sockaddr_un socketAddress;</font> <br><font face="Courier New,Courier"> int socketFd = socket ( AF_UNIX, SOCK_DGRAM, 0 );</font><font face="Courier New,Courier"></font> <p><font face="Courier New,Courier"> if ( socketFd < 0 )</font> <br><font face="Courier New,Courier"> return -1;</font><font face="Courier New,Courier"></font> <p><font face="Courier New,Courier"> memset( &socketAddress, 0, sizeof( socketAddress ));</font> <br><font face="Courier New,Courier"> strcpy ( socketAddress.sun_path, "/tmp/testlistener" );</font> <br><font face="Courier New,Courier"> socketAddress.sun_family = AF_UNIX;</font> <br><font face="Courier New,Courier"> unlink ( "/tmp/testlistener" );</font> <br><font face="Courier New,Courier"> unsigned int len = strlen(socketAddress.sun_path) +</font> <br><font face="Courier New,Courier"> sizeof(socketAddress.sun_family);</font><font face="Courier New,Courier"></font> <p><font face="Courier New,Courier"> if ( bind (socketFd,(struct sockaddr*)&socketAddress,len ) < 0 )</font> <br><font face="Courier New,Courier"> {</font> <br><font face="Courier New,Courier"> return -1;</font> <br><font face="Courier New,Courier"> }</font> <br><font face="Courier New,Courier"> </font> <br><font face="Courier New,Courier"> // ... Set the socket to message non-discard mode</font> <br><font face="Courier New,Courier"> ioctl ( socketFd, I_SRDOPT, RMSGN );</font><font face="Courier New,Courier"></font> <p><font face="Courier New,Courier">---------------------------------------------------------------------------------</font><font face="Courier New,Courier"></font> <p><font face="Courier New,Courier">Valgrind, however, thinks that this is a CDROM-related ioctl() call and issues three errors to me. The log is below. I am using RH8 with glibc 2.2.93. Looks like this is valgrind core related, not application error. Could someone look into that?</font><font face="Courier New,Courier"></font> <p><font face="Courier New,Courier">Thanks a lot!</font> <br><font face="Courier New,Courier">Alex</font> <br><font face="Courier New,Courier"></font> <font face="Courier New,Courier"></font> <p><font face="Courier New,Courier">==28423== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)</font> <br><font face="Courier New,Courier">==28423==</font> <br><font face="Courier New,Courier">==28423== 1 errors in context 1 of 3:</font> <br><font face="Courier New,Courier">==28423== Syscall param ioctl(CDROMREADTOCENTRY) contains unaddressable byte(s)</font> <br><font face="Courier New,Courier">==28423== at 0x420D3454: __GI___ioctl (in /lib/i686/libc-2.2.93.so)</font> <br><font face="Courier New,Courier">==28423== by 0x420158D3: __libc_start_main (in /lib/i686/libc-2.2.93.so)</font> <br><font face="Courier New,Courier">==28423== by 0x8048408: (within /home/agi/probe/Prototype/ValgrindIoctlTest/a.out)</font> <br><font face="Courier New,Courier">==28423== Address 0x2 is not stack'd, malloc'd or free'd</font> <br><font face="Courier New,Courier">==28423==</font> <br><font face="Courier New,Courier">==28423== 1 errors in context 2 of 3:</font> <br><font face="Courier New,Courier">==28423== Syscall param ioctl(CDROMREADTOCENTRY (cdte_track, char)) contains uninitialised or unaddressable byte(s)</font> <br><font face="Courier New,Courier">==28423== at 0x420D3454: __GI___ioctl (in /lib/i686/libc-2.2.93.so)</font> <br><font face="Courier New,Courier">==28423== by 0x420158D3: __libc_start_main (in /lib/i686/libc-2.2.93.so)</font> <br><font face="Courier New,Courier">==28423== by 0x8048408: (within /home/agi/probe/Prototype/ValgrindIoctlTest/a.out)</font> <br><font face="Courier New,Courier">==28423== Address 0x2 is not stack'd, malloc'd or free'd</font> <br><font face="Courier New,Courier">==28423==</font> <br><font face="Courier New,Courier">==28423== 1 errors in context 3 of 3:</font> <br><font face="Courier New,Courier">==28423== Syscall param ioctl(CDROMREADTOCENTRY (cdte_format, char)) contains uninitialised or unaddressable byte(s)</font> <br><font face="Courier New,Courier">==28423== at 0x420D3454: __GI___ioctl (in /lib/i686/libc-2.2.93.so)</font> <br><font face="Courier New,Courier">==28423== by 0x420158D3: __libc_start_main (in /lib/i686/libc-2.2.93.so)</font> <br><font face="Courier New,Courier">==28423== by 0x8048408: (within /home/agi/probe/Prototype/ValgrindIoctlTest/a.out)</font> <br><font face="Courier New,Courier">==28423== Address 0x4 is not stack'd, malloc'd or free'd</font> <br><font face="Courier New,Courier">==28423== IN SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)</font> <br><font face="Courier New,Courier">==28423==</font> <br><font face="Courier New,Courier">==28423== malloc/free: in use at exit: 0 bytes in 0 blocks.</font> <br><font face="Courier New,Courier">==28423== malloc/free: 0 allocs, 0 frees, 0 bytes allocated.</font> <pre>-- Alex G. Ivershen Inet Technologies, Inc. Network Products Dept. 1500 N. Greenville Ave. Inet Technologies Inc. Richardson, TX 75081 Phone: +1-469-330-4295 USA "Black Holes are where God divided by zero"</pre> </html> |