From owner-freebsd-current@freebsd.org Fri Aug 5 16:02:39 2016 Return-Path: Delivered-To: freebsd-current@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CAC8DBB0D9C for ; Fri, 5 Aug 2016 16:02:39 +0000 (UTC) (envelope-from guyyur@gmail.com) Received: from mail-wm0-x22c.google.com (mail-wm0-x22c.google.com [IPv6:2a00:1450:400c:c09::22c]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 75E641F6F; Fri, 5 Aug 2016 16:02:39 +0000 (UTC) (envelope-from guyyur@gmail.com) Received: by mail-wm0-x22c.google.com with SMTP id o80so43423073wme.1; Fri, 05 Aug 2016 09:02:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=BfqAzD/unGUwvH1JOOURMl+vH1xn3hb6j2SSj64fk0o=; b=MwLY9U1UKF05t63petR8Il8sRVv+WNyJ3kUT3wDZLsFNnQ8lrLxYJcw17iJNKkbaqM Fnjlu6jvJCDptg5T/956jhS3jcubIGHqQ4d85xTcQXUwShAfaoU2OPZuaXTEvJfS7T26 pGVdQxRS8CYQZwZSqKHoLEVhTVuPdxmZG0DZz1wwgZoRHYqsSw/abF3ppEJ9MBACPny5 RDQeEyCQdubpvlz7du601GlOd8656LIO1X0ZKyhfrT5S1W+14wY4cIO6teWjOw2Amt7j RTdWaIN2UCec7BcWKeRkAVbri2Jr2kL5btVMFcLwZLIq+RrEwe3ft/6TBsIDprDp2h8M VDhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=BfqAzD/unGUwvH1JOOURMl+vH1xn3hb6j2SSj64fk0o=; b=YeqYDe3/4KyI/NtOSe2vYk2KOMXFtG0gE2GYSzSsizaJAS/w35L05EqmFaWJ3Ud4QJ Mc1gpV7ikMBlXKLhFI4jxUacs3Q7QavmdnAEQ1E5WoRAdE6ud88gmuX58RCirbylXvIa B8FSSROqZfWQTMMyQYm4AJqIBwIbIu+SyXlNM1GVDegZ7d+8zEnX26G8POtD/t9PCwLg QOwJ1WpqccfgJRHl1w9+vajPQfZ3zp+hN6rPkR1gJ2DPMFwD69K6UC/bSOrQRAM4/x43 tn++GGtO3b/5ZsjqCQfaXk+ZR1HLGQVFdnpMo6+1fsHE94TJpofQn7YVRuhdn+LFr8zc JYNg== X-Gm-Message-State: AEkoouvhZ/DFlRt5iOYaJLkr9/fNOZ+5sLqbEjhFZrwMK6fmjnSrHbqPv3M6qkxRDM9XQrWROycgI47NrbHlYg== X-Received: by 10.194.87.66 with SMTP id v2mr80153197wjz.40.1470412957184; Fri, 05 Aug 2016 09:02:37 -0700 (PDT) MIME-Version: 1.0 Received: by 10.28.19.203 with HTTP; Fri, 5 Aug 2016 09:02:36 -0700 (PDT) In-Reply-To: <1317681458882873@web18g.yandex.ru> References: <1317681458882873@web18g.yandex.ru> From: Guy Yur Date: Fri, 5 Aug 2016 19:02:36 +0300 Message-ID: Subject: Re: panic "wlock already held" when changing ipv6 default route To: "Alexander V. Chernikov" Cc: freebsd-current , "Bjoern A. Zeeb" Content-Type: text/plain; charset=UTF-8 X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Aug 2016 16:02:39 -0000 On Fri, Mar 25, 2016 at 8:14 AM, Alexander V. Chernikov wrote: > 25.03.2016, 02:11, "Guy Yur" : >> Hi, >> >> When changing the ipv6 default route I get a panic on wlock already held. >> Could be related to r293424 lock changes, haven't checked an older version yet. > Hi, > Yes, there is a problem when the default route next hop is filled in incorrectly, so lookup fails (e.g. matches previous one). > Will be fixed soon. > > Thanks for the report. >> >> route add -inet6 default fe80::7 >> route change -inet6 default fe80::7 >> >> panic: rw_rlock: wlock already held for rib head lock @ >> /usr/src/sys/net/route.c:445 >> cpuid = 0 >> KDB: stack backtrace: >> db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0050ee01d0 >> vpanic() at vpanic+0x182/frame 0xfffffe0050ee0250 >> kassert_panic() at kassert_panic+0x126/frame 0xfffffe0050ee02c0 >> __rw_rlock() at __rw_rlock+0xe7/frame 0xfffffe0050ee0360 >> rtalloc1_fib() at rtalloc1_fib+0x86/frame 0xfffffe0050ee0420 >> ifa_ifwithroute() at ifa_ifwithroute+0x83/frame 0xfffffe0050ee0460 >> rt_getifa_fib() at rt_getifa_fib+0xe7/frame 0xfffffe0050ee0480 >> rtrequest1_fib() at rtrequest1_fib+0x59c/frame 0xfffffe0050ee0570 >> route_output() at route_output+0x653/frame 0xfffffe0050ee07c0 >> sosend_generic() at sosend_generic+0x436/frame 0xfffffe0050ee0880 >> soo_write() at soo_write+0x42/frame 0xfffffe0050ee08b0 >> dofilewrite() at dofilewrite+0x87/frame 0xfffffe0050ee0900 >> kern_writev() at kern_writev+0x68/frame 0xfffffe0050ee0950 >> sys_write() at sys_write+0x60/frame 0xfffffe0050ee09a0 >> amd64_syscall() at amd64_syscall+0x2db/frame 0xfffffe0050ee0ab0 >> Xfast_syscall() at Xfast_syscall+0xfb/frame 0xfffffe0050ee0ab0 >> --- syscall (4, FreeBSD ELF64, sys_write), rip = 0x800977b7ba, rsp = >> 0x7fffffffe2d8, rbp = 0x7fffffffeb90 --- >> KDB: enter: panic >> [ thread pid 644 tid 100054 ] >> Stopped at kdb_enter+0x3b: movq $0,kdb_why >> Hi, Opened bug 211602 so this won't get lost. https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=211602 Also happens when the gateway route was deleted so not specific to link-local addresses. # route add -inet6 2001:db8:0::/64 fe80::7%lo0 # route add -inet6 2001:db8:1::/64 2001:db8:0::1 # route delete -inet6 2001:db8:0::/64 # route change -inet6 2001:db8:1::/64 2001:db8:0::1 I restored RTF_RNH_LOCKED locally as a workaround so rtalloc1_fib won't try to lock when rtrequest1_fib already took a lock before calling rtrequest1_fib_change. On a related note, also mentioned by Bjoern, should link-local gateway addresses without %IF zone index be accepted? This can be confusing when you forget the %IF and think you added the route correctly but it is acting as a black hole. I forgot the %IF when adding the default route and stumbled on this panic. On OpenBSD when the gateway is missing the zone index the route is rejected. # route add -inet6 default fe80::7 route: writing to routing socket: Network is unreachable add net default: gateway fe80::7: Network is unreachable Thanks, Guy