[Bug 257302] net/syncthing: Panic in in6_getmulti at /usr/src/sys/netinet6/in6_mcast.c:451
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 21 Jul 2021 04:55:14 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257302
--- 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 := "[ff12::8384]:21027"
gaddr, err := net.ResolveUDPAddr("udp6", addr)
if err != nil {
fmt.Println(err)
return
}
conn, err := net.ListenPacket("udp6", addr)
if err != nil {
fmt.Println(err)
return
}
defer conn.Close()
intf, err := net.InterfaceByName("ipfw0")
if err != nil {
fmt.Println(err)
return
}
pconn := ipv6.NewPacketConn(conn)
result := pconn.JoinGroup(intf, &net.UDPAddr{IP: gaddr.IP})
if result != 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#L101
(except they perform join on all interfaces in a loop ignoring multicast flag,
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=0xfffff80012986a38,
sopt=0xfffffe005c3cfb98) at /usr/src/sys/kern/uipc_socket.c:2761
2761 error = (*so->so_proto->pr_ctloutput)(so, sopt);
(kgdb) set print pretty
(kgdb) p *sopt
$1 = {
sopt_dir = SOPT_SET,
sopt_level = 41,
sopt_name = 80,
sopt_val = 0xc000320900,
sopt_valsize = 136,
sopt_td = 0xfffff800126f9000
}
optname 80 is MCAST_JOIN_GROUP
--
You are receiving this mail because:
You are the assignee for the bug.
You are on the CC list for the bug.