Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Jul 2023 02:25:36 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        John F Carr <jfc@mit.edu>
Cc:        Current FreeBSD <freebsd-current@freebsd.org>
Subject:   Re: shell hung in fork system call
Message-ID:  <ZKtB8B_Fs0GwVCcP@kib.kiev.ua>
In-Reply-To: <909E2C96-3BFA-41AD-8EE7-0902231C2B95@mit.edu>
References:  <909E2C96-3BFA-41AD-8EE7-0902231C2B95@mit.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jul 09, 2023 at 10:41:27PM +0000, John F Carr wrote:
> Kernel and system at a146207d66f320ed239c1059de9df854b66b55b7 plus some irrelevant local changes, four 64 bit ARM processors, make.conf sets CPUTYPE?=cortex-a57.
> 
> I typed ^C while /bin/sh was starting a pipeline and my shell got hung in the middle of fork().
> 
> >From the terminal:
> 
> # git log --oneline --|more
> ^C^C^C
> load: 3.26  cmd: sh 95505 [fork] 5308.67r 0.00u 0.03s 0% 2860k
> mi_switch+0x198 sleepq_switch+0xfc sleepq_timedwait+0x40 _sleep+0x264 fork1+0x67c sys_fork+0x34 do_el0_sync+0x4c8 handle_el0_sync+0x44 
> load: 3.16  cmd: sh 95505 [fork] 5311.75r 0.00u 0.03s 0% 2860k
> mi_switch+0x198 sleepq_switch+0xfc sleepq_timedwait+0x40 _sleep+0x264 fork1+0x67c sys_fork+0x34 do_el0_sync+0x4c8 handle_el0_sync+0x44 
> 
> According to ps -d on another terminal the shell has no children:
> 
>   PID TT  STAT       TIME COMMAND
> [...]
>   873 u0  IWs     0:00.00 `-- login [pam] (login)
>   874 u0  I       0:00.17   `-- -sh (sh)
> 95504 u0  I       0:00.01     `-- su -
> 95505 u0  D+      0:00.05       `-- -su (sh)
> [...]
> 
> Nothing on the (115200 bps serial) console.  No change in system performance.
> 
> The system is busy copying a large amount of data from the network to a ZFS pool on spinning disks.  The git|more pipeline could have taken some time to get going while I/O requests worked their way through the queue.  It would not have touched the busy pool, only the zroot pool on an SSD.
> 
> Has anything changed recently that might cause this?

There was some change around fork, but your sleep seems to be not from
that change.  Can you show the wait channel for the process?  Do something
like
$ ps alxww




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