Running linux ldconfig on tmpfs results in unkillable process
Beat Gätzi
beat at chruetertee.ch
Tue Jan 18 15:34:12 UTC 2011
On 18.01.2011 15:46, Kostik Belousov wrote:
> On Tue, Jan 18, 2011 at 03:16:27PM +0100, Beat G?tzi wrote:
>> Hi,
>>
>> I've a tinderbox which uses tmpfs to build ports. Every time I build a
>> port which executes linux ldconfig it results in an unkillable process
>> which uses 100% CPU. The problem is reproduceable without tinderbox:
>>
>> # uname -a
>> FreeBSD daedalus.network.local 9.0-CURRENT FreeBSD 9.0-CURRENT #3
>> r216761: Tue Dec 28 15:32:26 CET 2010
>> root at daedalus.network.local:/usr/obj/usr/src/sys/GENERIC i386
>> # mkdir /compat/test
>> # mount -t tmpfs tmpfs /compat/test
>> # cp -Rp /compat/linux/* /compat/test/
>> # mount -t linprocfs linprocfs /compat/test/proc
>> # /compat/linux/sbin/ldconfig -r /compat/test/
>> # pgrep ldconfig
>> 3449
>> # procstat -i 3449 | grep KILL
>> 3449 ldconfig KILL ---
>> # kill -9 3449
>> # procstat -i 3449 | grep KILL
>> 3449 ldconfig KILL P--
>>
>> >From top(1):
>> PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
>> 3449 root 1 44 0 992K 712K CPU1 1 10:06 100.00% ldconfig
>>
>> When I reboot the machine it hangs after "All buffers synced.".
>>
>> I've uploaded some additional output of procstat and ktrace here:
>> http://people.freebsd.org/~beat/logs/linux-ldconfig-tmpfs.txt
>>
>> Anyone knows how to fix this?
> kdump for the trace of the linux binary is a garbage. You need to
> use linux_kdump (from ports).
>
> I think that your process is looping in the kernel, you can confirm this
> by dropping in the ddb and doing "bt <pid>".
I've uploaded a screenshot from the output of bt <pid> in ddb:
http://people.freebsd.org/~beat/logs/linux-ldconfig-tmpfs-bt.jpg
Thanks,
Beat
More information about the freebsd-current
mailing list