Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Sep 2007 16:38:30 -0700
From:      "Christopher Chen" <muffaleta@gmail.com>
To:        "Max Laier" <max@love2party.net>
Cc:        freebsd-net@freebsd.org
Subject:   Re: Creation of carp interface on amd64 spins
Message-ID:  <7bc80d500709211638ha9d53e7ke4d3bd65471b63eb@mail.gmail.com>
In-Reply-To: <7bc80d500709201552r563a2708o9f2e63474bd55bcd@mail.gmail.com>
References:  <7bc80d500709201457p5be576e3hdbe0fc536493497a@mail.gmail.com> <200709210033.05263.max@love2party.net> <7bc80d500709201552r563a2708o9f2e63474bd55bcd@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 9/20/07, Christopher Chen <muffaleta@gmail.com> wrote:
> On 9/20/07, Max Laier <max@love2party.net> wrote:
> > On Thursday 20 September 2007, Christopher Chen wrote:
> > > Hi:
> > >
> > > I'm running 6.2-RELEASE on some Pentium D's running and amd64 port.
> > >
> > > I'm doing some mildly interesting things with vlan tagging, etc, and I
> > > want to also set up carp. On identical machines running the i386 port,
> > > this works correctly, but when running
> > >
> > > ifconfig carp0
> > >
> > > For instance, the process just spins and can't be killed. The rest of
> > > the machine is fine, though!
> > >
> > > This is 6.2-RELEASE/amd64 running in SMP mode.
> > >
> > > Any ideas?
> >
> > Can you tell me what "^T" or ps gives for the spinning process?  Does it
> > hang in userland or kernel?  Can you try to trace the ifconfig, or - if
> > the hang is in the kernel - break into the kernel debugger and get a back
> > trace for the process?
>
> Max:
>
> load: 1.62  cmd: ifconfig 920 [runnable] 0.00u 96.02s 98% 920k
>
> That's what ^T says. I'm going to reboot and ktrace it now. So here's
> the last few lines of the ktrace:
>
>    944 ifconfig CALL  modstat(0x10a,0x7fffffffe280)
>    944 ifconfig RET   modstat 0
>    944 ifconfig CALL  modfnext(0x10a)
>    944 ifconfig RET   modfnext 267/0x10b
>    944 ifconfig CALL  modstat(0x10b,0x7fffffffe280)
>    944 ifconfig RET   modstat 0
>    944 ifconfig CALL  socket(0x2,0x2,0)
>    944 ifconfig RET   socket 3
>    944 ifconfig CALL  ioctl(0x3,SIOCIFCREATE,0x514ce0)
>
> l# lsof -p 944
> COMMAND  PID USER   FD   TYPE             DEVICE SIZE/OFF  NODE NAME
> ifconfig 944 root  cwd   VDIR               0,77      512 16525 /root
> ifconfig 944 root  rtd   VDIR               0,77      512     2 /
> ifconfig 944 root  txt   VREG               0,77    80296    48 /sbin/ifconfig
> ifconfig 944 root  txt   VREG               0,77   192688   116
> /libexec/ld-elf.so.1
> ifconfig 944 root  txt   VREG               0,77     7424 24794 /lib/libipx.so.3
> ifconfig 944 root  txt   VREG               0,77  1083208 24786 /lib/libc.so.6
> ifconfig 944 root    0u  VCHR               0,93   0t2101    93 /dev/ttyp0
> ifconfig 944 root    1u  VCHR               0,93   0t2101    93 /dev/ttyp0
> ifconfig 944 root    2u  VCHR               0,93   0t2101    93 /dev/ttyp0
> ifconfig 944 root    3u  IPv4 0xffffff002d459130      0t0   UDP *:*
>
> Sorry I don't have physical access so I can't break into the kernel
> debugger right now.

Aha! Some data!

Okay so I got the console cable attached with DDB. So far so good. But
here's something else.
With DDB/KDB enabled in the kernel, suddenly ifconfig carp0 create
works! Sounds like some sort of race condition, maybe?

But when destroying the interfaces, I get this:

<<
kernel trap 12 with interrupts disabled


Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0x48
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0xffffffff80430035
stack pointer           = 0x10:0xffffffffa54b2ab0
frame pointer           = 0x10:0xffffffffa54b2af0
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags        = resume, IOPL = 0
current process         = 11 (swi4: clock sio)
[thread pid 11 tid 100002 ]
Stopped at      propagate_priority+0x75:        movq    0x48(%r15),%rdi
db> trace
Tracing pid 11 tid 100002 td 0xffffff003dba2980
propagate_priority() at propagate_priority+0x75
turnstile_wait() at turnstile_wait+0x20f
_mtx_lock_sleep() at _mtx_lock_sleep+0x89
carp_send_ad() at carp_send_ad+0xa9
softclock() at softclock+0x21a
ithread_loop() at ithread_loop+0x162
fork_exit() at fork_exit+0x86
fork_trampoline() at fork_trampoline+0xe
--- trap 0, rip = 0, rsp = 0xffffffffa54b2d00, rbp = 0 ---
>>

Wow!

-- 
Chris Chen <muffaleta@gmail.com>
"I want the kind of six pack you can't drink."
-- Micah



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