Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Jul 2021 04:55:14 +0000
From:      bugzilla-noreply@freebsd.org
To:        net@FreeBSD.org
Subject:   [Bug 257302] net/syncthing: Panic in in6_getmulti at /usr/src/sys/netinet6/in6_mcast.c:451
Message-ID:  <bug-257302-7501-QsqaNfvNto@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-257302-7501@https.bugs.freebsd.org/bugzilla/>
References:  <bug-257302-7501@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D257302

--- Comment #4 from Alex Vasylenko <lxv@omut.org> ---
The following golang program reproduces the issue, no root required; it was=
 a
mcast join on ipfw0 after all, but has to be an IPv6 join.

$ cat mcast6_join.go
package main

import (
        "fmt"
        "net"
        "golang.org/x/net/ipv6"
)

func main() {
        addr :=3D "[ff12::8384]:21027"

        gaddr, err :=3D net.ResolveUDPAddr("udp6", addr)
        if err !=3D nil {
                fmt.Println(err)
                return
        }

        conn, err :=3D net.ListenPacket("udp6", addr)
        if err !=3D nil {
                fmt.Println(err)
                return
        }
        defer conn.Close()

        intf, err :=3D net.InterfaceByName("ipfw0")
        if err !=3D nil {
                fmt.Println(err)
                return
        }

        pconn :=3D ipv6.NewPacketConn(conn)

        result :=3D pconn.JoinGroup(intf, &net.UDPAddr{IP: gaddr.IP})
        if result !=3D nil {
                fmt.Println("IPv6 join", intf.Name, "failed:", result)
        } else {
                fmt.Println("IPv6 join", intf.Name, "success")
        }
}

net/syncthing has something like the above in
https://github.com/syncthing/syncthing/blob/main/lib/beacon/multicast.go#L1=
01
(except they perform join on all interfaces in a loop ignoring multicast fl=
ag,
but that's beside the point)

A relevant part from vmcore that I failed to include in the original report=
 was
this:
(kgdb) f 14
#14 0xffffffff80c584d6 in sosetopt (so=3D0xfffff80012986a38,
sopt=3D0xfffffe005c3cfb98) at /usr/src/sys/kern/uipc_socket.c:2761
2761    error =3D (*so->so_proto->pr_ctloutput)(so, sopt);
(kgdb) set print pretty
(kgdb) p *sopt
$1 =3D {
  sopt_dir =3D SOPT_SET,
  sopt_level =3D 41,
  sopt_name =3D 80,
  sopt_val =3D 0xc000320900,
  sopt_valsize =3D 136,
  sopt_td =3D 0xfffff800126f9000
}

optname 80 is MCAST_JOIN_GROUP

--=20
You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.=



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