^Z during port build and hang?

YONETANI Tomokazu qhwt+dfly at les.ath.cx
Fri Jun 24 07:22:48 PDT 2005

On Sat, May 07, 2005 at 07:01:22PM +0900, YONETANI Tomokazu wrote:
> Recently I'm gettings hangs(on today's HEAD) if I press ^Z while
> building a port.  It seems that I can correctly suspend the
> processes for a few times, but after that, it just displayed
> ^Z and started ignoring ^Z or ^C(it responded to ^T and displayed
> the hanging process and its state), and the load average slowly
> grew up. I tried to switch to other virtual consoles or ssh from
> another machine, but it was too late, I couldn't even log in.

Here's some more data points:
- this problems started to annoy me before de-spl work has started.
- I can reproduce this in single-user mode, that is, without networking
  or NTP enabled.
- it only happens when tty is /dev/ttyv?, and I couldn't reproduce it
  from an ssh session.
- lowering or raising the nice value of the shell didn't help.
- it reproduces with/without ACPI, so it's not related to ACPI-timer.
- it reproduces both on UP and SMP machines, and on UP and SMP kernels.

Here's the backtrace for the hanging process:
(kgdb) bt
#0  0xc01779aa in lwkt_switch ()
    at /home/source/dragonfly/current/src/sys/kern/lwkt_thread.c:634
#1  0xc017b39c in mi_switch (p=0xc6a56500)
    at /home/source/dragonfly/current/src/sys/kern/kern_synch.c:664
#2  0xc01749a4 in issignal (p=0xc6a56500)
    at /home/source/dragonfly/current/src/sys/kern/kern_sig.c:1323
#3  0xc0299d4b in userret (p=0xc6a56500, frame=0x0, sticks=0)
    at signalvar.h:234
#4  0xc029b46e in fork_return (p=0xc6a56500, frame=
      {tf_fs = 135004207, tf_es = 47, tf_ds = -1078001617, tf_edi = 0, tf_esi = 0, tf_ebp = -1077939704, tf_isp = -898347660, tf_ebx = 135048764, tf_edx = 1, tf_ecx = -1077939672, tf_eax = 0, tf_trapno = 12, tf_err = 2, tf_eip = 134689092, tf_cs = 31, tf_eflags = 582, tf_esp = -1077939732, tf_ss = 47})
    at /home/source/dragonfly/current/src/sys/i386/i386/trap.c:1809
#5  0xc028c055 in fork_trampoline ()
    at /home/source/dragonfly/current/src/sys/i386/i386/exception.s:954

The line number is not accurate, since the core is older than the kernel
source, but it consistently hangs at the second call to mi_switch()
in issignal().

All machines I could reproduce it are running DragonFly installed on an IDE
disk, and one machine I COULDN'T reproduce it was on a ServeRAID disk.
But I'm going to attach a small IDE disk to that machine next week, and see
if I can reproduce it.

More information about the Bugs mailing list