1. 20 12月, 2007 1 次提交
    • I
      [IA64] set_thread_area fails in IA32 chroot · e384f414
      Ian Wienand 提交于
      I tried to upgrade an IA32 chroot on my IA64 to a new glibc with TLS.
      It kept dying because set_thread_area was returning -ESRCH
      (bugs.debian.org/451939).
      
      I instrumented arch/ia64/ia32/sys_ia32.c:get_free_idx() and ended up
      seeing output like
      
      [pid] idx   desc->a  desc->b
      -----------------------------
      [2710] 0 -> c6b0ffff 40dff31b
      [2710] 1 -> 0 0
      [2710] 2 -> 0 0
      
      [2710] 0 -> c6b0ffff 40dff31b
      [2710] 1 -> c6b0ffff 40dff31b
      [2710] 2 -> 0 0
      
      [2711] 0 -> c6b0ffff 40dff31b
      [2711] 1 -> c6b0ffff 40dff31b
      [2711] 2 -> 48c0ffff 40dff317
      
      which suggested to me that TLS pointers were surviving exec() calls,
      leading to GDT pointers filling up and the eventual failure of
      get_free_idx().
      
      I think the solution is flushing the tls array on exec.
      Signed-Off-By: NIan Wienand <ianw@gelato.unsw.edu.au>
      Signed-off-by: NTony Luck <tony.luck@intel.com>
      e384f414
  2. 19 12月, 2007 6 次提交
  3. 18 12月, 2007 33 次提交