|
From: Lukasz K. <kor...@lu...> - 2006-03-31 17:25:29
|
Hi All,
I'm trying to run Valgrind on one of our projects and I get core on
poll() invocation.
I use valgrind 3.1.1 on Linux-2.6.5-7.241-bigsmp x86 with glibc 2.3.3.
It seems that poll function calls rt_sigprocmask with invalid how
parameter value. I get:
"sigprocmask: unknown 'how' field 14" and vgcore is dumped.
(gdb) where
#0 0xb001b3cd in ?? ()
#1 0x04309d74 in poll () from /lib/tls/libc.so.6
with --trace-syscalls=yes:
SYSCALL[19345,2](168) sys_poll ( 0x45D5E48, 3, 10 )
--> [async] ...
SYSCALL[19345,1]( 13) sys_time ( 0x0 )[sync] --> Success(0x442D5F4B)
SYSCALL[19345,1]( 27) sys_alarm ( 0 )[sync] --> Success(0x0)
SYSCALL[19345,1](175) sys_rt_sigprocmask ( 14, 0x0, 0xBEFFD7D0, 8
)--19345-- sigprocmask: unknown 'how' field 14
--> [pre-fail] Failure(0x16)
SYSCALL[19345,1]( 4) sys_write ( 2, 0xBEFFB0D8, 19 ) --> [async] ...
sigprocmask failed
SYSCALL[19345,2](168) ... [async] --> Success(0x0)
SYSCALL[19345,2](168) sys_poll ( 0x45D5E48, 3, 10 )
--> [async] ...
SYSCALL[19345,1]( 4) ... [async] --> Success(0x13)
SYSCALL[19345,1](175) sys_rt_sigprocmask ( 1, 0xBEFFD5EC, 0x0, 8 ) -->
[pre-success] Success(0x0)
SYSCALL[19345,1](270) sys_tgkill ( 19345, 19345, 6 ) --> [async] ...
SYSCALL[19345,2](168) ... [async] --> Success(0x0)
SYSCALL[19345,2](168) sys_poll ( 0x45D5E48, 3, 10 )
--> [async] ...
SYSCALL[19345,1](119) sigreturn ( ) --> [pre-success] Success(0x0)
SYSCALL[19345,1](174) sys_rt_sigaction ( 6, 0xBEFFD524, 0x0, 8 ) -->
[pre-success] Success(0x0)
SYSCALL[19345,1](270) sys_tgkill ( 19345, 19345, 6 ) --> [async] ...
SYSCALL[19345,2](168) ... [async] --> Success(0x0)
SYSCALL[19345,2](168) sys_poll ( 0x45D5E48, 3, 10 )
--> [async] ...
SYSCALL[19345,2](168) ... [async] --> Success(0x0)
--19345-- Caught __NR_exit; running __libc_freeres()
SYSCALL[19345,2]( 91) sys_munmap ( 0x0, 0 )[sync] --> Failure(0x16)
SYSCALL[19345,2](240) sys_futex ( 0x4372600, 1, 2147483647, 0x0,
0x5667BB0 ) --> [async] ...
SYSCALL[19345,2](240) ... [async] --> Success(0x0)
--19345-- __libc_freeres() done; really quitting!
strace from the program alone (without Valgrind)
time(NULL) = 1143821482
alarm(0) = 0
rt_sigprocmask(0xe /* SIG_??? */, NULL, [], 8) = 0
rt_sigaction(SIGALRM, NULL, {0x404c3f50, [], SA_INTERRUPT}, 8) = 0
rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [ALRM], NULL, 8) = 0
time(NULL) = 1143821482
rt_sigprocmask(0xe /* SIG_??? */, NULL, [ALRM], 8) = 0
rt_sigaction(SIGALRM, {0x404c3f50, [], 0}, {0x404c3f50, [],
SA_INTERRUPT}, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [ALRM], NULL, 8) = 0
alarm(0) = 0
rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(0xe /* SIG_??? */, NULL, [], 8) = 0
rt_sigaction(SIGALRM, NULL, {0x404c3f50, [], 0}, 8) = 0
rt_sigaction(SIGALRM, {0x808ac35, [], 0}, {0x404c3f50, [], 0}, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [ALRM], NULL, 8) = 0
time(NULL) = 1143821482
rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [ALRM], NULL, 8) = 0
Definitely poll invokes sigprocmask with 14 value in 'how' parameter
which as far as I know is not valid.
Does anyone had this problem too, found any solution? I will try to use
different glibc version and see if it help.
Lukasz Korzybski
|