|
queryFdOption broken: msg#00046lang.haskell.glasgow.bugs
Hi, While writing a testcase for another bug (details to follow), I found that System.Posix.IO.queryFdOption doesn't work. The problem appears to be that queryFdOption uses testBit incorrectly; it assumes the second argument is the bitmask, when it's actually the bit *position* to test. It should be an easy fix (just do a bitwise AND and see whether the result's zero instead). Here's how to reproduce the problem on my system -- note that it's getting the correct results from the underlying system calls, but not returning them correctly: $ ghc --version The Glorious Glasgow Haskell Compilation System, version 6.4 $ uname -a Linux cartman.at.fivegeeks.net 2.6.12.2 #1 Thu Jul 14 15:28:07 BST 2005 i686 unknown unknown GNU/Linux $ gcc -v Reading specs from /opt/packages/gcc-3.4.4/bin/../lib/gcc/i686-pc-linux-gnu/3.4.4/specs Configured with: ./configure --prefix=/opt --sysconfdir=/etc --localstatedir=/var --sharedstatedir=/var/com --enable-__cxa_atexit --enable-threads=posix --enable-shared --enable-languages=c,c++,java,f77,objc Thread model: posix gcc version 3.4.4 $ cat Query.hs import System.Posix.IO showNBR = do v <- System.Posix.IO.queryFdOption 0 System.Posix.IO.NonBlockingRead putStr $ "NonBlockingRead = " ++ (show v) ++ "\n" main = do showNBR System.Posix.IO.setFdOption 0 System.Posix.IO.NonBlockingRead True showNBR $ ghc -o query -package unix Query.hs $ ./query NonBlockingRead = False NonBlockingRead = False $ strace ./query 2>&1 | grep ETFL [...] fcntl64(0, F_GETFL) = 0x2 (flags O_RDWR) fcntl64(0, F_SETFL, O_RDWR|O_NONBLOCK) = 0 fcntl64(0, F_GETFL) = 0x802 (flags O_RDWR|O_NONBLOCK) [...] If you need any more information, please let me know. Thanks, -- Adam Sampson <ats@xxxxxxxxx> <http://offog.org/>
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ ghc-Bugs-935792 ] --make and -main-is don't work together, SourceForge.net |
|---|---|
| Next by Date: | System.Cmd.system/rawSystem set stdin/stdout to non-blocking mode, Adam Sampson |
| Previous by Thread: | [ ghc-Bugs-935792 ] --make and -main-is don't work together, SourceForge.net |
| Next by Thread: | RE: queryFdOption broken, Simon Marlow |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |