[Bug 702038] Re: memoize access to /etc/ld.so.nohwcap ?

Launchpad Bug Tracker 702038 at bugs.launchpad.net
Thu Sep 8 10:27:00 UTC 2011


** Changed in: eglibc (Ubuntu)
       Status: New => Confirmed

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to eglibc in Ubuntu.
https://bugs.launchpad.net/bugs/702038

Title:
  memoize access to /etc/ld.so.nohwcap ?

Status in “eglibc” package in Ubuntu:
  Confirmed

Bug description:
  Is it really necessary to check for ld.so.nohwcap for each required
  library of a program ?

  See for example: `strace ls /dev/null`, it's called 8 times for no
  benefits.

  -------------

  execve("/bin/ls", ["ls", "/dev/null"], [/* 17 vars */]) = 0
  brk(0)                                  = 0x8e9b000
  access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
  mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7712000
  access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
  open("/etc/ld.so.cache", O_RDONLY)      = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=22877, ...}) = 0
  mmap2(NULL, 22877, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb770c000
  close(3)                                = 0
  access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
  open("/lib/tls/i686/cmov/librt.so.1", O_RDONLY) = 3
  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\30\0\0004\0\0\0"..., 512) = 512
  fstat64(3, {st_mode=S_IFREG|0644, st_size=30684, ...}) = 0
  mmap2(NULL, 33364, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7703000
  mmap2(0xb770a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0xb770a000
  close(3)                                = 0
  access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
  open("/lib/libselinux.so.1", O_RDONLY)  = 3
  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 at G\0\0004\0\0\0"..., 512) = 512
  fstat64(3, {st_mode=S_IFREG|0644, st_size=104148, ...}) = 0
  mmap2(NULL, 109432, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76e8000
  mmap2(0xb7701000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18) = 0xb7701000
  close(3)                                = 0
  access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
  open("/lib/libacl.so.1", O_RDONLY)      = 3
  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\26\0\0004\0\0\0"..., 512) = 512
  fstat64(3, {st_mode=S_IFREG|0644, st_size=30312, ...}) = 0
  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb76e7000
  mmap2(NULL, 28964, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb76df000
  mmap2(0xb76e5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6) = 0xb76e5000
  close(3)                                = 0
  access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
  open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000m\1\0004\0\0\0"..., 512) = 512
  fstat64(3, {st_mode=S_IFREG|0755, st_size=1405508, ...}) = 0
  mmap2(NULL, 1415592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7585000
  mprotect(0xb76d8000, 4096, PROT_NONE)   = 0
  mmap2(0xb76d9000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x153) = 0xb76d9000
  mmap2(0xb76dc000, 10664, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb76dc000
  close(3)                                = 0
  access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
  open("/lib/tls/i686/cmov/libpthread.so.0", O_RDONLY) = 3
  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 J\0\0004\0\0\0"..., 512) = 512
  fstat64(3, {st_mode=S_IFREG|0755, st_size=117086, ...}) = 0
  mmap2(NULL, 98792, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb756c000
  mmap2(0xb7581000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14) = 0xb7581000
  mmap2(0xb7583000, 4584, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7583000
  close(3)                                = 0
  access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
  open("/lib/tls/i686/cmov/libdl.so.2", O_RDONLY) = 3
  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@\n\0\0004\0\0\0"..., 512) = 512
  fstat64(3, {st_mode=S_IFREG|0644, st_size=9736, ...}) = 0
  mmap2(NULL, 12408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7568000
  mmap2(0xb756a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0xb756a000
  close(3)                                = 0
  access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
  open("/lib/libattr.so.1", O_RDONLY)     = 3
  read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\r\0\0004\0\0\0"..., 512) = 512
  fstat64(3, {st_mode=S_IFREG|0644, st_size=17860, ...}) = 0
  mmap2(NULL, 20588, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7562000
  mmap2(0xb7566000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xb7566000
  close(3)                                = 0
  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7561000
  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7560000
  set_thread_area({entry_number:-1 -> 6, base_addr:0xb7560720, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
  mprotect(0xb7566000, 4096, PROT_READ)   = 0
  mprotect(0xb756a000, 4096, PROT_READ)   = 0
  mprotect(0xb7581000, 4096, PROT_READ)   = 0
  mprotect(0xb76d9000, 8192, PROT_READ)   = 0
  mprotect(0xb76e5000, 4096, PROT_READ)   = 0
  mprotect(0xb7701000, 4096, PROT_READ)   = 0
  mprotect(0xb770a000, 4096, PROT_READ)   = 0
  mprotect(0x8060000, 4096, PROT_READ)    = 0
  mprotect(0xb7730000, 4096, PROT_READ)   = 0
  munmap(0xb770c000, 22877)               = 0
  set_tid_address(0xb7560788)             = 22802
  set_robust_list(0xb7560790, 0xc)        = 0
  futex(0xbfbcdc90, FUTEX_WAKE_PRIVATE, 1) = 0
  futex(0xbfbcdc90, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, bfbcdca0) = -1 EAGAIN (Resource temporarily unavailable)
  rt_sigaction(SIGRTMIN, {0xb7570410, [], SA_SIGINFO}, NULL, 8) = 0
  rt_sigaction(SIGRT_1, {0xb75708f0, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
  rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
  getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0
  uname({sys="Linux", node="vagrantup", ...}) = 0
  statfs64("/selinux", 84, {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=9953638, f_bfree=8412886, f_bavail=7907261, f_files=2531328, f_ffree=2419797, f_fsid={866754416, 1089126459}, f_namelen=255, f_frsize=4096}) = 0
  brk(0)                                  = 0x8e9b000
  brk(0x8ebc000)                          = 0x8ebc000
  open("/proc/filesystems", O_RDONLY|O_LARGEFILE) = 3
  fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7711000
  read(3, "nodev\tsysfs\nnodev\trootfs\nnodev\tb"..., 1024) = 326
  read(3, "", 1024)                       = 0
  close(3)                                = 0
  munmap(0xb7711000, 4096)                = 0
  open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
  open("/usr/share/locale/locale.alias", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=2570, ...}) = 0
  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7711000
  read(3, "# Locale name alias data base.\n#"..., 4096) = 2570
  read(3, "", 4096)                       = 0
  close(3)                                = 0
  munmap(0xb7711000, 4096)                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_IDENTIFICATION", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_IDENTIFICATION", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=373, ...}) = 0
  mmap2(NULL, 373, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7711000
  close(3)                                = 0
  open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=26048, ...}) = 0
  mmap2(NULL, 26048, PROT_READ, MAP_SHARED, 3, 0) = 0xb7559000
  close(3)                                = 0
  futex(0xb76dba8c, FUTEX_WAKE_PRIVATE, 2147483647) = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_MEASUREMENT", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_MEASUREMENT", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=23, ...}) = 0
  mmap2(NULL, 23, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7710000
  close(3)                                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_TELEPHONE", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_TELEPHONE", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=59, ...}) = 0
  mmap2(NULL, 59, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb770f000
  close(3)                                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_ADDRESS", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_ADDRESS", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=155, ...}) = 0
  mmap2(NULL, 155, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb770e000
  close(3)                                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_NAME", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_NAME", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=77, ...}) = 0
  mmap2(NULL, 77, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb770d000
  close(3)                                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_PAPER", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_PAPER", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=34, ...}) = 0
  mmap2(NULL, 34, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb770c000
  close(3)                                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_MESSAGES", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_MESSAGES", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
  close(3)                                = 0
  open("/usr/lib/locale/en_US.utf8/LC_MESSAGES/SYS_LC_MESSAGES", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=57, ...}) = 0
  mmap2(NULL, 57, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7558000
  close(3)                                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_MONETARY", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_MONETARY", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=286, ...}) = 0
  mmap2(NULL, 286, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7557000
  close(3)                                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_COLLATE", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_COLLATE", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=1170770, ...}) = 0
  mmap2(NULL, 1170770, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7439000
  close(3)                                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_TIME", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_TIME", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=2454, ...}) = 0
  mmap2(NULL, 2454, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7438000
  close(3)                                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_NUMERIC", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_NUMERIC", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=54, ...}) = 0
  mmap2(NULL, 54, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7437000
  close(3)                                = 0
  open("/usr/lib/locale/en_US.UTF-8/LC_CTYPE", O_RDONLY) = -1 ENOENT (No such file or directory)
  open("/usr/lib/locale/en_US.utf8/LC_CTYPE", O_RDONLY) = 3
  fstat64(3, {st_mode=S_IFREG|0644, st_size=256324, ...}) = 0
  mmap2(NULL, 256324, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb73f8000
  close(3)                                = 0
  ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfbcdb28) = -1 ENOTTY (Inappropriate ioctl for device)
  ioctl(1, TIOCGWINSZ, 0xbfbcdc80)        = -1 ENOTTY (Inappropriate ioctl for device)
  stat64("/dev/null", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
  lstat64("/dev/null", {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
  fstat64(1, {st_mode=S_IFREG|0644, st_size=11716, ...}) = 0
  mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb73f7000
  write(1, "/dev/null\n", 10/dev/null
  )             = 10
  close(1)                                = 0
  munmap(0xb73f7000, 4096)                = 0
  close(2)                                = 0
  exit_group(0)                           = ?

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/702038/+subscriptions




More information about the foundations-bugs mailing list