On Fri, Mar 09, 2012 at 03:20:10PM +0100, Gerfried Fuchs wrote:
>  I had it hanging like this for two week's time, and tried again if I am
> able to reproduce it - it's absolutely reproducible. Doing this within a
> cowbuilder chroot on an i386 machine.
> 
>  So, things to reproduce it should be as simple as:
> 
> $> sudo cowbuilder --create --basepath squeeze --distribution squeeze
> $> sudo cowbuilder --login --basepath squeeze
> # apt-get install samhain

Sorry for the delay with this.

It is true, samhain does not install in a chroot environment. But the fact
is: samhain does not seem to work *at all* if run within a chroot. The
'samhain -t init' call does not prosper because it gets stuck, for some
reason, when opening /dev/urandom from within a chroot.

But neither does it work if you just try to get the help (or version).

Either way, I cannot reproduce this behaviour *outside* of a chroot.

If you strace the running process you might see something like this:

jflicio:samhain$ ps -ef |grep samhain
root     17782 17663  0 00:51 pts/3    00:00:00 /usr/bin/dpkg --status-fd 13 
--configure libgpg-error0:i386 libgcrypt11:i386 libffi6:i386 libp11-kit0:i386 
libtasn1-3:i386 libgnutls26:i386 libltdl7:i386 libprelude2:i386 samhain:i386
root     17840 17782  0 00:51 pts/3    00:00:00 /usr/bin/perl -w 
/usr/share/debconf/frontend /var/lib/dpkg/info/samhain.postinst configure 
root     17843 17840  0 00:51 pts/3    00:00:00 /bin/sh -e 
/var/lib/dpkg/info/samhain.postinst configure 
root     17844 17843  0 00:51 pts/3    00:00:00 samhain -t init
jfs      17846  8685  0 00:51 pts/2    00:00:00 grep samhain
s@silicio:samhain$ sudo strace -f -p 17844
Process 17844 attached - interrupt to quit
futex(0xb77aa454, FUTEX_WAIT_PRIVATE, 2, NULL

I have attached a ltrace and strace of the samhain program within a chroot.
The problem seems to lie in the program initialisation code.

In summary: Please try to reproduce it within a *live* system, not a chroot.
Until I get that information this bug stays as 'unreproducible'

Regards

Javier
pthread_mutex_lock(0xb7751454, 0xb71f93c4, 0, 0) = 0
sysconf(30, 0xb768c000, 0xbffb3b84, 0xb71cf4c0)  = 4096
mmap64(0, 0x3000, 3, 98)                         = 0xb7661000
mprotect(0xb7661000, 4096, 0, 98)                = 0
mprotect(0xb7663000, 4096, 0, 98)                = 0
sysconf(30, 4096, 0, 98)                         = 4096
sysconf(30, 4096, 0, 98)                         = 4096
sysconf(30, 4096, 0, 98)                         = 4096
mmap64(0, 0x8002000, 3, 0x4062)                  = 0xaf183000
sysconf(30, 0x8002000, 3, 0x4062)                = 4096
mprotect(0xaf183000, 4096, 0, 0x4062)            = 0
sysconf(30, 4096, 0, 0x4062)                     = 4096
sysconf(30, 4096, 0, 0x4062)                     = 4096
sysconf(30, 4096, 0, 0x4062)                     = 4096
sysconf(30, 4096, 0, 0x4062)                     = 4096
sysconf(30, 4096, 0, 0x4062)                     = 4096
mprotect(0xb7184000, 4096, 0, 0x4062)            = 0
sbrk(0)                                          = 0xb8d3e000
sysconf(30, 4096, 0, 0x4062)                     = 4096
sysconf(30, 4096, 0, 0x4062)                     = 4096
sysconf(30, 0xb735d000, 0, 0xb72bf574)           = 4096
mmap64(0, 0xe2000, 3, 98)                        = 0xaf0a1000
sysconf(30, 0xe2000, 3, 98)                      = 4096
mprotect(0xaf0a1000, 4096, 0, 98)                = 0
sysconf(30, 4096, 0, 98)                         = 4096
sysconf(30, 4096, 0, 98)                         = 4096
mprotect(0xaf182000, 4096, 0, 98)                = 0
sysconf(30, 4096, 0, 0x4062)                     = 4096
gettimeofday(0xbffb39ac, 0)                      = 0
sched_yield(0xbffb39ac, 0, 0xb768ef87, 0xb73632c8) = 0
open64("/dev/urandom", 0, 026732167607 <unfinished ...>
pthread_mutex_lock(0xb7751454, 1, 0, 0xb737c041
execve("/usr/sbin/samhain", ["samhain"], [/* 29 vars */]) = 0
brk(0)                                  = 0xb7ffd000
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) = 
0xb766b000
open("/usr/lib/cowdancer/libcowdancer.so", O_RDONLY|O_CLOEXEC) = 3
read(3, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\16\0\0004\0\0\0"..., 512) 
= 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=14544, ...}) = 0
mmap2(NULL, 17488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb7666000
mmap2(0xb766a000, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xb766a000
close(3)                                = 0
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=10201, ...}) = 0
mmap2(NULL, 10201, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7663000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\31\0\0004\0\0\0"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=95888, ...}) = 0
mmap2(NULL, 98556, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb764a000
mmap2(0xb7661000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16) = 0xb7661000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libnsl.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\3201\0\0004\0\0\0"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=87940, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0xb7649000
mmap2(NULL, 100328, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb7630000
mmap2(0xb7645000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14) = 0xb7645000
mmap2(0xb7647000, 6120, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7647000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@'\0\0004\0\0\0"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=79720, ...}) = 0
mmap2(NULL, 92232, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb7619000
mmap2(0xb762c000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12) = 0xb762c000
mmap2(0xb762e000, 6216, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb762e000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i386-linux-gnu/libprelude.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\364\1\0004\0\0\0"..., 512) 
= 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1325736, ...}) = 0
mmap2(NULL, 1341304, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb74d1000
mprotect(0xb7591000, 4096, PROT_NONE)   = 0
mmap2(0xb7592000, 540672, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc0) = 0xb7592000
mmap2(0xb7616000, 10104, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7616000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i386-linux-gnu/libgnutls.so.26", O_RDONLY|O_CLOEXEC) = 3
read(3, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260\1\1\0004\0\0\0"..., 512) = 
512
fstat64(3, {st_mode=S_IFREG|0644, st_size=815120, ...}) = 0
mmap2(NULL, 815288, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb7409000
mmap2(0xb74cb000, 20480, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc2) = 0xb74cb000
mmap2(0xb74d0000, 184, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb74d0000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libgcrypt.so.11", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0H\0\0004\0\0\0"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=541588, ...}) = 0
mmap2(NULL, 545048, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb7383000
mmap2(0xb7405000, 12288, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x81) = 0xb7405000
mmap2(0xb7408000, 280, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7408000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 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\n\0\0004\0\0\0"..., 512) = 
512
fstat64(3, {st_mode=S_IFREG|0644, st_size=13856, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0xb7382000
mmap2(NULL, 16512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb737d000
mmap2(0xb7380000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0xb7380000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000Y\0\0004\0\0\0"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=120945, ...}) = 0
mmap2(NULL, 102908, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb7363000
mmap2(0xb7379000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15) = 0xb7379000
mmap2(0xb737b000, 4604, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb737b000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\226\1\0004\0\0\0"..., 512) 
= 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1521132, ...}) = 0
mmap2(NULL, 1526460, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb71ee000
mmap2(0xb735d000, 12288, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16f) = 0xb735d000
mmap2(0xb7360000, 10940, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7360000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i386-linux-gnu/libltdl.so.7", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \32\0\0004\0\0\0"..., 
512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=35172, ...}) = 0
mmap2(NULL, 38044, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb71e4000
mmap2(0xb71ed000, 4096, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8) = 0xb71ed000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i386-linux-gnu/libtasn1.so.3", O_RDONLY|O_CLOEXEC) = 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\22\0\0004\0\0\0"..., 512) 
= 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=67136, ...}) = 0
mmap2(NULL, 70404, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb71d2000
mmap2(0xb71e2000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xf) = 0xb71e2000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i386-linux-gnu/libp11-kit.so.0", O_RDONLY|O_CLOEXEC) = 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\\\0\0004\0\0\0"..., 512) = 
512
fstat64(3, {st_mode=S_IFREG|0644, st_size=241220, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0xb71d1000
mmap2(NULL, 244864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb7195000
mprotect(0xb71cc000, 4096, PROT_NONE)   = 0
mmap2(0xb71cd000, 16384, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x37) = 0xb71cd000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/i386-linux-gnu/libgpg-error.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, 
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\6\0\0004\0\0\0"..., 512) = 
512
fstat64(3, {st_mode=S_IFREG|0644, st_size=13560, ...}) = 0
mmap2(NULL, 16444, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb7190000
mmap2(0xb7193000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2) = 0xb7193000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/usr/lib/i386-linux-gnu/libffi.so.6", O_RDONLY|O_CLOEXEC) = 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\17\0\0004\0\0\0"..., 512) 
= 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=26076, ...}) = 0
mmap2(NULL, 25360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 
0xb7189000
mmap2(0xb718e000, 8192, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5) = 0xb718e000
close(3)                                = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0xb7188000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
0xb7187000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb71876c0, limit:1048575, 
seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, 
useable:1}) = 0
mprotect(0xb735d000, 8192, PROT_READ)   = 0
mprotect(0xb718e000, 4096, PROT_READ)   = 0
mprotect(0xb7193000, 4096, PROT_READ)   = 0
mprotect(0xb7380000, 4096, PROT_READ)   = 0
mprotect(0xb7379000, 4096, PROT_READ)   = 0
mprotect(0xb71cd000, 12288, PROT_READ)  = 0
mprotect(0xb71e2000, 4096, PROT_READ)   = 0
mprotect(0xb7405000, 4096, PROT_READ)   = 0
mprotect(0xb7661000, 4096, PROT_READ)   = 0
mprotect(0xb74cb000, 16384, PROT_READ)  = 0
mprotect(0xb7592000, 12288, PROT_READ)  = 0
mprotect(0xb762c000, 4096, PROT_READ)   = 0
mprotect(0xb7645000, 4096, PROT_READ)   = 0
mprotect(0xb768d000, 4096, PROT_READ)   = 0
munmap(0xb7663000, 10201)               = 0
set_tid_address(0xb7187728)             = 18066
set_robust_list(0xb7187730, 0xc)        = 0
rt_sigaction(SIGRTMIN, {0xb7368410, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xb73684a0, [], 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="silicio", ...}) = 0
mmap2(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_32BIT, 
-1, 0) = 0xb7663000
mprotect(0xb7663000, 4096, PROT_NONE)   = 0
mprotect(0xb7665000, 4096, PROT_NONE)   = 0
mmap2(NULL, 134225920, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_ANONYMOUS|MAP_32BIT|MAP_NORESERVE, -1, 0) = 0xaf185000
mprotect(0xaf185000, 4096, PROT_NONE)   = 0
mprotect(0xb7186000, 4096, PROT_NONE)   = 0
brk(0)                                  = 0xb7ffd000
mmap2(NULL, 925696, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_32BIT, 
-1, 0) = 0xaf0a3000
mprotect(0xaf0a3000, 4096, PROT_NONE)   = 0
mprotect(0xaf184000, 4096, PROT_NONE)   = 0
gettimeofday({1389398145, 943920}, NULL) = 0
sched_yield()                           = 0
futex(0xb7381058, FUTEX_WAKE_PRIVATE, 2147483647) = 0
futex(0xb7753454, FUTEX_WAIT_PRIVATE, 2, NULL

Attachment: signature.asc
Description: Digital signature

Reply via email to