[Python-bugs-list] [ python-Bugs-821948 ] fcntl() not working on
sparc (python 2.2.3)
SourceForge.net
noreply at sourceforge.net
Mon Oct 13 17:33:45 EDT 2003
Bugs item #821948, was opened at 2003-10-12 00:08
Message generated for change (Comment added) made by loewis
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=821948&group_id=5470
Category: Extension Modules
Group: Platform-specific
Status: Open
Resolution: None
Priority: 5
Submitted By: Alberto Bertogli (albertogli)
Assigned to: Nobody/Anonymous (nobody)
Summary: fcntl() not working on sparc (python 2.2.3)
Initial Comment:
In sparc, fcntl.fcntl() is not working properly under
Python 2.2.3;
a simple strace of:
import fcntl, sys
fcntl.fcntl(sys.stdin.fileno(), fcntl.F_SETFL,
os.O_NONBLOCK)
will reveal that on sparc there's no fcntl() syscall
done, while
under x86 it works as expected (ie. the syscall is there).
I have not tested yet with Python 2.3 but I'll let you
know when I do.
Thanks,
Alberto
----------------------------------------------------------------------
>Comment By: Martin v. Löwis (loewis)
Date: 2003-10-13 23:33
Message:
Logged In: YES
user_id=21627
It would be good if you could attach preprocessor output and
assembler code (both obtained through --save-temps) for
fcntlmodule.c. If this is too large to attach you might need
to compress it, if it is then still too large, you would
need to strip all but fcntl_fcntl.
Also, are you using a 32-bit or a 64-bit compiler?
----------------------------------------------------------------------
Comment By: Alberto Bertogli (albertogli)
Date: 2003-10-13 19:06
Message:
Logged In: YES
user_id=44390
I'm sorry I didn't specify earlier, this is a box running Linux
(gentoo distribution) with:
Linux Kernel 2.4.20
glibc 2.2.5
gcc 2.95.3
python 2.2.3
The fragment of the strace output is the following, it's
between I
press the final '\n' and the response '0\n' appears:
write(1, "\n", 1) = 1
rt_sigprocmask(SIG_BLOCK, [INT], [32], 8) = 0
ioctl(0, 0x8024540a, {B38400 opost isig icanon echo ...}) = 0
rt_sigprocmask(SIG_SETMASK, [32], NULL, 8) = 0
rt_sigaction(SIGINT, {0x700486f8, [], 0}, {0x700486f8, [],
0}, 0x701431c8, 8) = 0
rt_sigaction(SIGTERM, {SIG_DFL}, {0x700486f8, [], 0},
0x701431c8, 8) = 0
rt_sigaction(SIGQUIT, {SIG_DFL}, {0x700486f8, [], 0},
0x701431c8, 8) = 0
rt_sigaction(SIGALRM, {SIG_DFL}, {0x700486f8, [], 0},
0x701431c8, 8) = 0
rt_sigaction(SIGTSTP, {SIG_DFL}, {0x700486f8, [], 0},
0x701431c8, 8) = 0
rt_sigaction(SIGTTOU, {SIG_DFL}, {0x700486f8, [], 0},
0x701431c8, 8) = 0
rt_sigaction(SIGTTIN, {SIG_DFL}, {0x700486f8, [], 0},
0x701431c8, 8) = 0
rt_sigaction(SIGWINCH, {SIG_DFL}, {0x700486f8, [], 0},
0x701431c8, 8) = 0
rt_sigaction(SIGINT, NULL, {0x700486f8, [], 0}, 0, 8) = 0
rt_sigaction(SIGINT, {0x700486f8, [], 0}, NULL, 0x701431c8,
8) = 0
nfssvc(0) = 0
write(1, "0\n", 2) = 2
On x86 the fcntl64() syscall happens right before the write().
I don't think the bug is present in earlier versions of
Python because I
remember this used to work fine before the upgrade, however
I can't
pinpoint the exact release this started to show up.
Let me know if you need additional info or want me to do
some tests.
----------------------------------------------------------------------
Comment By: Martin v. Löwis (loewis)
Date: 2003-10-12 19:41
Message:
Logged In: YES
user_id=21627
I cannot reproduce this. My binary of 2.2.1 does
read(3, "import fcntl, sys, os\nfcntl.fcnt"..., 8192) = 84
read(3, "", 8192) = 0
llseek(3, 0, SEEK_CUR) = 0
close(3) = 0
fstat64(0, {st_mode=S_IFCHR|0620, st_rdev=makedev(24, 3),
...}) = 0
fcntl(0, F_SETFL, O_RDONLY|O_NONBLOCK) = 0
sigaction(SIGINT, NULL, {0xff25ff24, ~[KILL STOP], 0}) = 0
sigaction(SIGINT, {SIG_DFL}, NULL) = 0
Can you attach your strace output? Can you also try truss?
What Solaris version and patches, what compiler?
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=821948&group_id=5470
More information about the Python-bugs-list
mailing list