Current-Users archive

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

Re: Status of 8.99.12



On Mon, Feb 12, 2018 at 9:48 AM, Paul Goyette <paul%whooppee.com@localhost> wrote:
> After an extended period of build breaks, I finally got a new release built
> from sources updated on 2018-02-10 at 04:02:43 UTC
>
> I'm seeing several problems with this release that were not seen with my
> previous installation (from last November).
>
> 1. Starting the gnucash program (from pkgsrc finance/gnucash) now takes
>    about 3 times as long as before.  Even after successfully loading
>    the image (to get libraries etc into the file system cache) it take
>    more than three full minutes for the program to initialize.
>
> 2. Whenever I try to shutdown the system, I get a networking-related
>    panic.  The following is manually transcribed:
>
>         trap type 4 code 0 rip 0xffffffff802d3f75 cs 0x8 rflags 0x10282
>           cr2 0x77e0e931c020 ilevel 0x4 rsp 0xffff80090a7e3c80
>         curlwp 0xffffe4afbb6e8700 pid 926.1 lowest kstack
>           0xffff80090a7e0c20
>         kernel: protection fault trap, code = 0
>         stopped in 926.1 (avahi-daemon) at ip_setmoptions+0x237: movq
>           360(%rax),%rdi
>         traceback:
>         ip_setmoptions + 0x237
>         ip_rtloutput + 0x218
>         udp_ctloutput + 0x82
>         udp_ctloutput_wrapper + 0x2c
>         sosetopt + 0x67
>         sys_setsockopt + 0x91
>         syscall + 0x1ed (syscall #105)

Is the panic fixed by the following patch?

Thanks,
  ozaki-r


diff --git a/sys/netinet/ip_output.c b/sys/netinet/ip_output.c
index 44d8032f387..2e5e346af91 100644
--- a/sys/netinet/ip_output.c
+++ b/sys/netinet/ip_output.c
@@ -1927,9 +1927,13 @@ ip_drop_membership(struct ip_moptions *imo,
const struct sockopt *sopt)
         * Give up the multicast address record to which the
         * membership points.
         */
-       IFNET_LOCK(imo->imo_membership[i]->inm_ifp);
+    {
+       struct ifnet *inm_ifp = imo->imo_membership[i]->inm_ifp;
+       IFNET_LOCK(inm_ifp);
        in_delmulti(imo->imo_membership[i]);
-       IFNET_UNLOCK(imo->imo_membership[i]->inm_ifp);
+       /* ifp should not leave thanks to solock */
+       IFNET_UNLOCK(inm_ifp);
+    }

        /*
         * Remove the gap in the membership array.


Home | Main Index | Thread Index | Old Index