[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

TLS, XEN and a big mess



Hi everybody,

I know that this is a subject often raise but don't flag me FAQ just
yet, I have done the reading.

Here is the scenario, I am trying to run xen3.0.3 with debian etch. I
have installed both libc6 and libc6-xen since the latter depends on the
previous one (which sounds so weird). I also use a custom compiled
kernel, a vanilla 2.6.16.29 patched with the sources of xen-3.0.3-1. 
I compiled a pae version and installed the corresponding package for the
hypervisor.

The problem comes from the tls, in the domU (I have not seen that with
dom0 yet, but that may be happening too), I see random segfaults. I try
to 'disable' the tls libraries by moving them away and that still
happens. A good example is with bcfg2:
(before moving)
> strace bcfg2 -vvvvv -d -q
...
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
directory)
open("/lib/tls/i686/cmov/libnsl.so.1", O_RDONLY) = 5
read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p5\0\000"...,
512) = 512
fstat64(5, {st_mode=S_IFREG|0644, st_size=76548, ...}) = 0
mmap2(NULL, 87808, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0)
= 0xb77fc000
mmap2(0xb780e000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x11) = 0xb780e000
mmap2(0xb7810000, 5888, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7810000
close(5)                                = 0
munmap(0xb79d9000, 11093)               = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Process 3127 detached

(after moving)
...
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
directory)
open("/lib/tls/i686/cmov/libnsl.so.1", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/lib/libnsl.so.1", O_RDONLY)      = 5
read(5, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`5\0\000"...,
512) = 512
fstat64(5, {st_mode=S_IFREG|0644, st_size=72452, ...}) = 0
mmap2(NULL, 83712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 5, 0)
= 0xb783f000
mmap2(0xb7850000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x10) = 0xb7850000
mmap2(0xb7852000, 5888, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7852000
close(5)                                = 0
munmap(0xb7a1b000, 11093)               = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Process 3130 detached

So it seems that both version of libnsl.so.1 use a bad addressing (but
they are not identical files). 

All that would be fine if it were not segfaulting but enabling the slower
emulation mode that is mentionned everywhere in the docs. I don't know
how I can enable it. Is there something I missed.

thanks

jacques

PS: by fine, I mean less puzzling. 

Attachment: signature.asc
Description: Digital signature


Reply to: