NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/49065: ifconfig tun0 ... sequence locks up system



The following reply was made to PR kern/49065; it has been noted by GNATS.

From: Nick Hudson <skrll%netbsd.org@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: Frank Kardel <kardel%netbsd.org@localhost>, 
kern-bug-people%netbsd.org@localhost, 
 gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Subject: Re: kern/49065: ifconfig tun0 ... sequence locks up system
Date: Sun, 03 Aug 2014 18:51:25 +0100

 This is a multi-part message in MIME format.
 --------------040700090605080508070403
 Content-Type: text/plain; charset=ISO-8859-1; format=flowed
 Content-Transfer-Encoding: 7bit
 
 On 08/03/14 16:15, Frank Kardel wrote:
 > The following reply was made to PR kern/49065; it has been noted by GNATS.
 >
 > From: Frank Kardel <kardel%netbsd.org@localhost>
 > To: gnats-bugs%NetBSD.org@localhost
 > Cc:
 > Subject: Re: kern/49065: ifconfig tun0 ... sequence locks up system
 > Date: Sun, 03 Aug 2014 17:14:32 +0200
 >
 >   Hmmm, LOCKDEBUG gives me:
 >   
 >   Starting named.
 >   panic: lockdebug_lookup: uninitialized lock (lock=0xc057e204, 
 > from=e8c9e670)
 >   cpu0: Begin traceback...
 >   0xdb3e3ba4: netbsd:db_panic+0xc
 >   0xdb3e3bd4: netbsd:vpanic+0x144
 >   0xdb3e3bec: netbsd:snprintf
 >   0xdb3e3c34: netbsd:lockdebug_wantlock+0x1e8
 >   0xdb3e3c7c: netbsd:mutex_enter+0x2b4
 >   0xdb3e3cb4: crypto:cryptoopen+0x84
 >   0xdb3e3ce4: netbsd:cdev_open+0xac
 >   0xdb3e3d3c: netbsd:spec_open+0x1e8
 >   0xdb3e3d5c: netbsd:VOP_OPEN+0x60
 >   0xdb3e3e34: netbsd:vn_open+0x1f8
 >   0xdb3e3eb4: netbsd:do_open+0xb0
 >   0xdb3e3ee4: netbsd:do_sys_openat+0x7c
 >   0xdb3e3f0c: netbsd:sys_open+0x34
 >   0xdb3e3f7c: netbsd:syscall+0x8c
 >   0xdb3e3fac: netbsd:swi_handler+0x98
 >   cpu0: End traceback...
 >   
 
 This one I think should be fixed with the attached diff.
 
 
 >   That's strange.
 >   
 >   disabling named gets me past that. Strangely on an sysinst upgraded RPI
 >   I cannot reproduce the issue, I thought...
 >   
 >   But I bisected through the services running (namely named, mdnsd).
 >   
 >   Collected reproduceable facts:
 >        - It turns out that *running mdnsd*  will trigger the locking issue.
 >        - named triggers only a LOCKDEBUG (uninitialized lock) panic (see
 >   above).
 >   
 >   So it looks like mdnsd's handling of the interfaces will leave a lock on
 >   the socket structure AFAICS.
 >   
 >
 So, I reproduced locally and can see this...
 
 db> ps/w
 PID   LID          COMMAND     EMUL  PRI WAIT-MSG    WAIT-CHANNEL
 861  >   1              sed   netbsd   25              0
 790      1         ifconfig   netbsd   41 tstile       cbfc5fc0
 948      1               sh   netbsd   43 wait         cbd8fa58
 567      1               sh   netbsd   38 wait         cbd8f198
 954      1               sh   netbsd   41 wait         cbd8f358
 923      1            login   netbsd   36 wait         cbd8fc18
 753      1             cron   netbsd   35 nanoslp      ca1cb6a0
 624      1            inetd   netbsd   37 kqueue       cbf5085c
 956      1            mdnsd   netbsd   43 usbxfer      cbdddbcc
 909      1             qmgr   netbsd   38 kqueue       cac9ffd4
 606      1           pickup   netbsd   38 kqueue       cbf507bc
 831      1           master   netbsd   38 kqueue       cac9f854
 619      1             sshd   netbsd   39 select       cbf34008
 632      1        makemandb   netbsd   24              0
 437      1          syslogd   netbsd   43 kqueue       cbf500dc
 435      1           dhcpcd   netbsd   43 wait         cbd8ea98
 1        1             init   netbsd   36 wait         cbd8fdd8
 0       48           system   netbsd   96 nfsiod       cbebceb4
 0       47           system   netbsd   96 nfsiod       cbebc8cc
 0       46           system   netbsd   96 nfsiod       cbebc85c
 0       45           system   netbsd   96 nfsiod       cbebcd2c
 0       44           system   netbsd  123 physiod      cb28d7dc
 0       43           system   netbsd   96 lnxcmplt     cbd75720
 0       42           system   netbsd  125 aiodoned     cbfb6334
 0       41           system   netbsd  124 syncer       cbde85c0
 0       40           system   netbsd  126 pgdaemon     c05b33c8
 0       39           system   netbsd   96 vcdata       cbd7521c
 0       38           system   netbsd   96 semacv       c05b4c68
 0       37           system   netbsd   96 semacv       c05b4c50
 0       36           system   netbsd   96 semacv       c05b4c38
 0       32           system   netbsd   96 usbevt       cbe40570
 0       31           system   netbsd   96 unpgc        c05b2aa8
 0       30           system   netbsd  125 vmem_rehash  cbfb6814
 0       29           system   netbsd   96 mmctaskq     cbef2834
 0       20           system   netbsd   96 usbtsk       c05b2ba0
 0       19           system   netbsd   96 usbtsk       c05b2b80
 0       18           system   netbsd  123 dwc2         cbfb6d54
 0       17           system   netbsd   96 iicintr      cbfb70f8
 0       16           system   netbsd   96 iicintr      cbfb7278
 0       15           system   netbsd   43 pmfsuspend   cbfb7a74
 0       14           system   netbsd   43 pmfevent     cbfb7ad4
 0       13           system   netbsd   96 sopendfr     c05b2a6c
 0       12           system   netbsd   43 nfssilly     cbfb7d14
 0       11           system   netbsd  125 cachegc      cbf442c0
 0       10           system   netbsd  125 vrele        c0550f80
 0        9           system   netbsd  125 vdrain       c0550f40
 0        8           system   netbsd  125 mod_unld     c0596e20
 0        7           system   netbsd  127 xcall        c0443ac8
 0        6           system   netbsd  223              0
 0        5           system   netbsd  220 tstile       cbfc5fc0
 0        4           system   netbsd  221              0
 0        3           system   netbsd  222 tstile       cbfc5fc0
 0        2           system   netbsd    0              0
 0        1           system   netbsd  125 uvm          c0546020
 db> show lock cbfc5fc0
 lock address : 0x00000000cbfc5fc0 type     :     sleep/adaptive
 initialized  : 0x00000000c014e044
 shared holds :                  0 exclusive:                  1
 shares wanted:                  0 exclusive:                  3
 current cpu  :                  0 last held:                  0
 current lwp  : 0x00000000cb3c93a0 last held: 0x00000000ca1cbc20
 last locked* : 0x00000000c02ab654 unlocked : 0x00000000c02ac82c
 owner field  : 0x00000000ca1cbc20 wait/spin:                1/0
 
 Turnstile chain at 0xc054fbc0.
 => Turnstile at 0xcbf43f48 (wrq=0xcbf43f58, rdq=0xcbf43f60).
 => 0 waiting readers:
 => 3 waiting writers: 0xcbf458c0 0xcbf45340 0xcad333c0
 db> ps/l
 PID    LID S CPU     FLAGS       STRUCT LWP *               NAME WAIT
 861  >   1 7   0         0           cb3c93a0                sed
 790      1 3   0         0           cad333c0           ifconfig tstile
 948      1 3   0        80           cb3c9920                 sh wait
 567      1 3   0        80           cb3c8b60                 sh wait
 954      1 3   0        80           cb3c8e20                 sh wait
 923      1 3   0        80           cb3c9be0              login wait
 753      1 3   0        80           ca1cb6a0               cron nanoslp
 624      1 3   0        80           cad32600              inetd kqueue
 956      1 3   0         0           ca1cbc20              mdnsd usbxfer
 909      1 3   0        80           cad32080               qmgr kqueue
 606      1 3   0        80           cb3c88a0             pickup kqueue
 831      1 3   0        80           ca1cb960             master kqueue
 619      1 3   0        80           cad32b80               sshd select
 632      1 2   0         0           cb3c8320          makemandb
 437      1 3   0        80           cad33940            syslogd kqueue
 435      1 3   0        80           cb3c8060             dhcpcd wait
 1        1 3   0        80           cbde9640               init wait
 0       48 3   0       200           cb3c85e0              nfsio nfsiod
 0       47 3   0       200           cad33100              nfsio nfsiod
 0       46 3   0       200           cad32e40              nfsio nfsiod
 0       45 3   0       200           cad33680              nfsio nfsiod
 0       44 3   0       200           cbece5a0            physiod physiod
 0       43 3   0       280           cbde8040          VCHIQka-0 lnxcmplt
 0       42 3   0       200           cbde8300           aiodoned aiodoned
 0       41 3   0       200           cbde85c0            ioflush syncer
 0       40 3   0       200           cbde9bc0           pgdaemon pgdaemon
 0       39 3   0       280           cbde8880            vcaudio vcdata
 0       38 3   0       280           cbde8b40           VCHIQs-0 semacv
 0       37 3   0       280           cbece2e0           VCHIQr-0 semacv
 0       36 3   0       280           cbece020            VCHIQ-0 semacv
 0       32 3   0       200           cbde9900               usb0 usbevt
 0       31 3   0       200           cbde9380              unpgc unpgc
 0       30 3   0       200           cbde90c0        vmem_rehash vmem_rehash
 0       29 3   0       200           cbde8e00             sdmmc0 mmctaskq
 0       20 3   0       200           cbece860         usbtask-dr usbtsk
 0       19 3   0       200           cbeceb20         usbtask-hc usbtsk
 0       18 3   0       200           cbecede0               dwc2 dwc2
 0       17 3   0       200           cbecf0a0               iic1 iicintr
 0       16 3   0       200           cbecf360               iic0 iicintr
 0       15 3   0       200           cbecf620         pmfsuspend pmfsuspend
 0       14 3   0       200           cbecf8e0           pmfevent pmfevent
 0       13 3   0       200           cbecfba0         sopendfree sopendfr
 0       12 3   0       200           cbf44000           nfssilly nfssilly
 0       11 3   0       200           cbf442c0            cachegc cachegc
 0       10 3   0       200           cbf44580              vrele vrele
 0        9 3   0       200           cbf44840             vdrain vdrain
 0        8 3   0       200           cbf44b00          modunload mod_unld
 0        7 3   0       200           cbf44dc0            xcall/0 xcall
 0        6 1   0       200           cbf45080          softser/0
 0        5 3   0       200           cbf45340          softclk/0 tstile
 0        4 1   0       200           cbf45600          softbio/0
 0        3 3   0       200           cbf458c0          softnet/0 tstile
 0        2 1   0       201           cbf45b80             idle/0
 0        1 3   0       200           c0546020            swapper uvm
 db> bt/a cbf458c0
 trace: pid 0 lid 3 at 0xcbf3fe7c
 0xcbf3fe7c: netbsd:mi_switch+0xc
 0xcbf3feac: netbsd:sleepq_block+0xa4
 0xcbf3feec: netbsd:turnstile_block+0x2f8
 0xcbf3ff34: netbsd:mutex_enter+0x1c4
 0xcbf3ff64: netbsd:route_intr+0x30
 0xcbf3ffac: netbsd:softint_dispatch+0xec
 Bad frame pointer: 0xcac89a74
 db> bt/a cbf45340
 trace: pid 0 lid 5 at 0xcbf3be4c
 0xcbf3be4c: netbsd:mi_switch+0xc
 0xcbf3be7c: netbsd:sleepq_block+0xa4
 0xcbf3bebc: netbsd:turnstile_block+0x2f8
 0xcbf3bf04: netbsd:mutex_enter+0x1c4
 0xcbf3bf1c: netbsd:frag6_fasttimo+0x1c
 0xcbf3bf34: netbsd:pffasttimo+0x50
 0xcbf3bf64: netbsd:callout_softclock+0x18c
 0xcbf3bfac: netbsd:softint_dispatch+0xec
 Bad frame pointer: 0xcb2abd1c
 db> bt/a cad333c0
 trace: pid 790 lid 1 at 0xcac89cec
 0xcac89cec: netbsd:mi_switch+0xc
 0xcac89d1c: netbsd:sleepq_block+0xa4
 0xcac89d5c: netbsd:turnstile_block+0x2f8
 0xcac89da4: netbsd:mutex_enter+0x1c4
 0xcac89dcc: netbsd:soclose+0x20
 0xcac89de4: netbsd:soo_close+0x20
 0xcac89e24: netbsd:closef+0x6c
 0xcac89e6c: netbsd:fd_free+0x174
 0xcac89eec: netbsd:exit1+0x100
 0xcac89f0c: netbsd:sys_exit+0x3c
 0xcac89f7c: netbsd:syscall+0x8c
 0xcac89fac: netbsd:swi_handler+0x98
   -- tf 0xbfffca44
 db>
 db> x/x softnet_lock
 netbsd:softnet_lock:    cbfc5fc0
 
 
 They're all waiting on softnet_lock
 
 Nick
 
 --------------040700090605080508070403
 Content-Type: text/plain; charset=us-ascii;
  name="cryptodev.c.diff"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: attachment;
  filename="cryptodev.c.diff"
 
 Index: sys/opencrypto/cryptodev.c
 ===================================================================
 RCS file: /cvsroot/src/sys/opencrypto/cryptodev.c,v
 retrieving revision 1.79
 diff -u -p -r1.79 cryptodev.c
 --- sys/opencrypto/cryptodev.c 25 Jul 2014 08:10:40 -0000      1.79
 +++ sys/opencrypto/cryptodev.c 3 Aug 2014 16:14:07 -0000
 @@ -2085,6 +2085,8 @@ void     cryptoattach(int);
  void
  cryptoattach(int num)
  {
 +      crypto_init();
 +
        pool_init(&fcrpl, sizeof(struct fcrypt), 0, 0, 0, "fcrpl",
            NULL, IPL_NET);     /* XXX IPL_NET ("splcrypto") */
        pool_init(&csepl, sizeof(struct csession), 0, 0, 0, "csepl",
 
 --------------040700090605080508070403--
 


Home | Main Index | Thread Index | Old Index