(Forgot to cc gnats@, & bugs@ sorry for the noise ...)
My bad, I completely missed the nl_types.h in _catclose.c.
But there's nontheless a problem:
It looks like load_msgcat is leaking FD. It opens
/usr/share/nls/C/libc.cat and right after the mmap(2), the call to
close(2) fails. This doesn't happen all the time though.
(gdb) r bug.py
Starting program: /home/henry/py3k/python bug.py
before execv^C
Program received signal SIGINT, Interrupt.
0x0000000208445d7a in poll () from /usr/lib/libc.so.51.0
(gdb) b load_msgcat
Breakpoint 1 at 0x208485b90: file /usr/src/lib/libc/nls/catopen.c, line 118.
(gdb) c
Continuing.
[Switching to process 29526, thread 0x20a9c1800]
Breakpoint 1, load_msgcat (path=0x7f7ffffcaeb0 "/usr/share/nls/C/libc.cat")
at /usr/src/lib/libc/nls/catopen.c:118
warning: Source file is more recent than executable.
118 {
(gdb) n
124 if ((fd = open(path, O_RDONLY)) == -1)
(gdb) n
118 {
(gdb) bt full
#0 load_msgcat (path=0x7f7ffffcaeb0 "/usr/share/nls/C/libc.cat")
at /usr/src/lib/libc/nls/catopen.c:118
st = {st_dev = 211736784, st_ino = 2, st_mode = 4294750456, st_nlink = 32639,
st_uid = 4294751192, st_gid = 32639, st_rdev = 4574082, st_lspare0 = 0, st_atim = {
tv_sec = -216704, tv_nsec = 140187732325336}, st_mtim = {tv_sec = 6332823,
tv_nsec = 8801502688}, st_ctim = {tv_sec = -216704, tv_nsec = 4562934},
st_size = 32, st_blocks = 8841693296, st_blksize = 52724736, st_flags = 2,
st_gen = 138846753, st_lspare1 = 2, __st_birthtim = {tv_sec = -217296,
tv_nsec = 8731114028}, st_qspare = {8822822528, 35}}
catd = 0x3a
data = (void *) 0x20859d014
fd = 140103800
[ ... output removed ...]
(gdb) n
124 if ((fd = open(path, O_RDONLY)) == -1)
(gdb) n
127 if (fstat(fd, &st) != 0) {
(gdb) n
132 data = mmap(0, (size_t) st.st_size, PROT_READ, MAP_SHARED, fd, (off_t)0);
(gdb) print close(fd)
$1 = -1
(gdb) print errno
$2 = 9
(gdb) list
127 if (fstat(fd, &st) != 0) {
128 close (fd);
129 return (nl_catd) -1;
130 }
131
132 data = mmap(0, (size_t) st.st_size, PROT_READ, MAP_SHARED, fd, (off_t)0);
133 close (fd);
134
135 if (data == MAP_FAILED) {
136 munmap(data, (size_t) st.st_size);
--
Henry Prjcheur| Greg Kroah-Hartman | [PATCH 001/196] Chinese: Add the known_regression URI to the HOWTO |
| Andrew Morton | 2.6.25-mm1 |
| david | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
git: | |
| Jarek Poplawski | Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| David Miller | [GIT]: Networking |
| Natalie Protasevich | [BUG] New Kernel Bugs |
