Process in "uwait" state
John Baldwin
jhb at freebsd.org
Mon Oct 20 14:44:23 PDT 2008
On Sunday 19 October 2008 07:17:05 pm Vaclav Haisman wrote:
> Hi,
> I am trying to compile TrueCrypt 6.0a (The tweaked port source is
> available at <http://shell.sh.cvut.cz/~wilx/truecrypt-port-6.0a.tbz>.),
> using Miwi's 5.0 port as base, and everything goes smooth up to the
> point where the truecrypt executable is being tested. It executes
> another instance and it is apparently connected through pipe with the
> first. The following is output of ps -lax | grep truecrypt:
>
> 0 81007 77821 0 8 0 3464 1476 wait I+ p0 0:00.00
> /bin/sh -c ./truecrypt --text --test >/dev/null
> 0 81008 81007 0 96 0 39224 17272 uwait I+ p0 0:00.20
> ./truecrypt --text --test
> 0 81009 81008 0 -8 0 37176 14228 piperd I+ p0 0:00.00
> ./truecrypt --text --test
>
> This is 7.1-PRERELEASE updated no more than week ago. I am running the
> GENERIC kernel. The situation is reliably reproducible.
>
> The last few lines of the process' ktrace, before it gets stuck, are these:
>
> 87530 truecrypt CALL sigprocmask(SIG_BLOCK,0x282ebb00,0xbfbfdbcc)
> 87530 truecrypt RET sigprocmask 0
> 87530 truecrypt CALL sigprocmask(SIG_SETMASK,0x282ebb10,0)
> 87530 truecrypt RET sigprocmask 0
> 87530 truecrypt CALL _umtx_op(0xbfbfde9c,0x3,0x1,0,0)
> 87530 truecrypt RET _umtx_op 0
> 87530 truecrypt CALL sigprocmask(SIG_BLOCK,0xbfbfde30,0x8401190)
> 87530 truecrypt RET sigprocmask 0
> 87530 truecrypt CALL _umtx_op(0x85e6e8c,0x2,0,0,0)
>
> The _umtx_op(0x85e6e8c,0x2,0,0,0) call is the last thing, after that I
> have to kill it with kill -9.
Probably an application threading bug. This looks like the thread is waiting
on a condition variable.
> Attaching GDB to the process does not help much, GDB complains about
> some internal error and the backtrace is then unusable:
>
> /usr/src/gnu/usr.bin/gdb/libgdb/../../../../contrib/gdb/gdb/solib-svr4.c:1443:
> internal-error: legacy_fetch_link_map_offsets called without legacy
> link_map support enabled.
>
> [Switching to Thread 0x8401100 (LWP 100173)]
> 0x28a9a037 in __error () from /lib/libthr.so.3
> (gdb) bt
> #0 0x28a9a037 in __error () from /lib/libthr.so.3
> #1 0x28a99c71 in __error () from /lib/libthr.so.3
> #2 0x085e6e8c in ?? ()
> #3 0x00000002 in ?? ()
> #4 0x00000000 in ?? ()
> #5 0x00000000 in ?? ()
> #6 0x00000000 in ?? ()
> #7 0x00000040 in ?? ()
> #8 0xbfbfdda4 in ?? ()
> #9 0x28a94bb7 in pthread_rwlock_unlock () from /lib/libthr.so.3
> Previous frame identical to this frame (corrupt stack?)
Give gdb the path to the binary in addition to the pid and you won't get that
error message and will get a more useful stack trace.
--
John Baldwin
More information about the freebsd-stable
mailing list