Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Dec 2017 22:42:17 +0200
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Peter Jeremy <peter@rulingia.com>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: Unkillable process in "vm map (user)"
Message-ID:  <20171210204217.GC2272@kib.kiev.ua>
In-Reply-To: <20171210200931.GS23931@server.rulingia.com>
References:  <20171210200931.GS23931@server.rulingia.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Dec 11, 2017 at 07:09:31AM +1100, Peter Jeremy wrote:
> I was experimenting with ports/devel/libmill (which is a library that
> provides Go-styly functionality for C programs) and managed to create
> an unkillable process by spawning 1000000 "goroutines" (think very
> cheap "thread" or "coroutine") joined by "channels" (think message
> passing pipes).  (The program ran basically instantaneously with 10000
> or 100000 "goroutines", and the Go version has no problems with 1000000
> goroutines on a much smaller system).
> 
> According to SIGINFO, it's blocked on "vm map (user)" but I can't kill
> it.  Can anyone suggest a way to unwedge it?
> 
> This is on a system running FreeBSD/amd64 11.1-STABLE r324494.
Ensure that you use at least r326188.

> 
> server% procstat -kk 452
>   PID    TID COMM                TDNAME              KSTACK
>   452 102382 chain               -                   mi_switch+0x17c sleepq_switch+0x118 sleepq_wait+0x43 _sx_slock_hard+0x34e _sx_slock+0xd4 vm_map_lookup+0xbd vm_fault_hold+0x194b vm_fault+0x75 trap_pfault+0x107 trap+0x382 calltrap+0x8

There is another thread owning the map lock, and seeing what that thread
does is the next step.

Can you provide a binary to reproduce which does not depend on any
library except the base libs ?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20171210204217.GC2272>