Subject: NetBSD-4 RC3: broken ulimit -n
To: None <netbsd-help@NetBSD.org>
From: Aleksey Cheusov <cheusov@tut.by>
List: netbsd-help
Date: 10/25/2007 10:16:10
It seems to me that 'ulimit -n' (a number of open files limit) is broken
in NetBSD RC-3. See the folllowing typescript.
uname: NetBSD chen.chizhovka.net 4.0_RC3 NetBSD 4.0_RC3 (GENERIC) #2: Sat Oct 20 21:41:02 EEST 2007  cheusov@chen.chizhovka.net:/srv/src/sys/arch/i386/compile/GENERIC i386

0 ~>ulimit -a 
time(cpu-seconds)    unlimited
file(blocks)         unlimited
coredump(blocks)     unlimited
data(kbytes)         716800
stack(kbytes)        2048
lockedmem(kbytes)    210434
memory(kbytes)       631304
nofiles(descriptors) 1048
processes            384
sbsize(bytes)        unlimited
0 ~>ulimit -n 
1048
0 ~>awk 'BEGIN {for (i=1; i <= 2000; ++i){print uraaa > ("/tmp/file_number_" i)}}'      
awk: /tmp/file_number_18 makes too many open files
 source line number 1
2 ~>ls -la /tmp/file_numb* | wc -l
      17
0 ~>ktrace awk 'BEGIN {for (i=1; i <= 2000; ++i){print uraaa > ("/tmp/file_number_" i)}}'
awk: /tmp/file_number_18 makes too many open files
 source line number 1
2 ~>kdump | grep open | wc -l
      63
0 ~>kdump | grep -C1 open     
  6986      1 awk      RET   mmap -1145135104/0xbbbea000
  6986      1 awk      CALL  open(0xbbbfbb9e,0,0xffffffff)
  6986      1 awk      NAMI  "/etc/ld.so.conf"
  6986      1 awk      RET   open 3
  6986      1 awk      CALL  __fstat30(3,0xbfbfdedc)
--
  6986      1 awk      RET   __sysctl 0
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0)
  6986      1 awk      NAMI  "/usr/local/lib/libm387.so.0"
  6986      1 awk      RET   open -1 errno 2 No such file or directory
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0)
  6986      1 awk      NAMI  "/usr/X11R6/lib/libm387.so.0"
  6986      1 awk      RET   open -1 errno 2 No such file or directory
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0)
  6986      1 awk      NAMI  "/usr/pkg/lib/libm387.so.0"
  6986      1 awk      RET   open -1 errno 2 No such file or directory
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0)
  6986      1 awk      NAMI  "/usr/lib/libm387.so.0"
  6986      1 awk      RET   open 3
  6986      1 awk      CALL  __fstat30(3,0xbfbfd7f8)
--
  6986      1 awk      RET   close 0
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0xbfbfd7f8)
  6986      1 awk      NAMI  "/usr/local/lib/libm.so.0"
  6986      1 awk      RET   open -1 errno 2 No such file or directory
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0xbfbfd7f8)
  6986      1 awk      NAMI  "/usr/X11R6/lib/libm.so.0"
  6986      1 awk      RET   open -1 errno 2 No such file or directory
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0xbfbfd7f8)
  6986      1 awk      NAMI  "/usr/pkg/lib/libm.so.0"
  6986      1 awk      RET   open -1 errno 2 No such file or directory
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0xbfbfd7f8)
  6986      1 awk      NAMI  "/usr/lib/libm.so.0"
  6986      1 awk      RET   open 3
  6986      1 awk      CALL  __fstat30(3,0xbfbfd7f8)
--
  6986      1 awk      RET   close 0
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0xbfbfd7f8)
  6986      1 awk      NAMI  "/usr/local/lib/libc.so.12"
  6986      1 awk      RET   open -1 errno 2 No such file or directory
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0xbfbfd7f8)
  6986      1 awk      NAMI  "/usr/X11R6/lib/libc.so.12"
  6986      1 awk      RET   open -1 errno 2 No such file or directory
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0xbfbfd7f8)
  6986      1 awk      NAMI  "/usr/pkg/lib/libc.so.12"
  6986      1 awk      RET   open -1 errno 2 No such file or directory
  6986      1 awk      CALL  open(0xbfbfd8b0,0,0xbfbfd7f8)
  6986      1 awk      NAMI  "/usr/lib/libc.so.12"
  6986      1 awk      RET   open 3
  6986      1 awk      CALL  __fstat30(3,0xbfbfd7f8)
--
  6986      1 awk      RET   issetugid 0
  6986      1 awk      CALL  open(0xbfbfca2c,0,0x1b6)
  6986      1 awk      NAMI  "/usr/share/locale/ru_RU.CP1251/LC_CTYPE"
  6986      1 awk      RET   open 3
  6986      1 awk      CALL  __fstat30(3,0xbfbfc964)
--
  6986      1 awk      RET   break 0
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_1"
  6986      1 awk      RET   open 3
  6986      1 awk      CALL  __fstat30(3,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_2"
  6986      1 awk      RET   open 4
  6986      1 awk      CALL  __fstat30(4,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_3"
  6986      1 awk      RET   open 5
  6986      1 awk      CALL  __fstat30(5,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_4"
  6986      1 awk      RET   open 7
  6986      1 awk      CALL  __fstat30(7,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_5"
  6986      1 awk      RET   open 8
  6986      1 awk      CALL  __fstat30(8,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_6"
  6986      1 awk      RET   open 9
  6986      1 awk      CALL  __fstat30(9,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_7"
  6986      1 awk      RET   open 10/0xa
  6986      1 awk      CALL  __fstat30(0xa,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_8"
  6986      1 awk      RET   open 11/0xb
  6986      1 awk      CALL  __fstat30(0xb,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_9"
  6986      1 awk      RET   open 12/0xc
  6986      1 awk      CALL  __fstat30(0xc,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_10"
  6986      1 awk      RET   open 13/0xd
  6986      1 awk      CALL  __fstat30(0xd,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_11"
  6986      1 awk      RET   open 14/0xe
  6986      1 awk      CALL  __fstat30(0xe,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_12"
  6986      1 awk      RET   open 15/0xf
  6986      1 awk      CALL  __fstat30(0xf,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_13"
  6986      1 awk      RET   open 16/0x10
  6986      1 awk      CALL  __fstat30(0x10,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_14"
  6986      1 awk      RET   open 17/0x11
  6986      1 awk      CALL  __fstat30(0x11,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_15"
  6986      1 awk      RET   open 18/0x12
  6986      1 awk      CALL  __fstat30(0x12,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_16"
  6986      1 awk      RET   open 19/0x13
  6986      1 awk      CALL  __fstat30(0x13,0xbfbfdce8)
--
  6986      1 awk      RET   write 1
  6986      1 awk      CALL  open(0x8074a00,0x601,0x1b6)
  6986      1 awk      NAMI  "/tmp/file_number_17"
  6986      1 awk      RET   open 20/0x14
  6986      1 awk      CALL  __fstat30(0x14,0xbfbfdce8)
--
  6986      1 awk      GIO   fd 2 wrote 45 bytes
       "/tmp/file_number_18 makes too many open files"
  6986      1 awk      RET   write 45/0x2d
0 ~>

-- 
Best regards, Aleksey Cheusov.