On 08.05.2013 07:57, Andrey Smagin wrote: > > I tried by analogy your patch add _padalign in all places where was before r250300, and in stcp. Uptime now 15hours, before - 5min - 3hour max. I waiting for more statistic. > my changes: The padalign commit has been backed out in r250300 and we are investigating the root cause for the problem. -- Andre > Index: sys/netinet/tcp_subr.c > =================================================================== > --- sys/netinet/tcp_subr.c (revision 250330) > +++ sys/netinet/tcp_subr.c (working copy) > _at__at_ -255,7 +255,7 _at__at_ > #define V_tcpcb_zone VNET(tcpcb_zone) > > MALLOC_DEFINE(M_TCPLOG, "tcplog", "TCP address and flags print buffers"); > -static struct mtx isn_mtx; > +static struct mtx_padalign isn_mtx; > > #define ISN_LOCK_INIT() mtx_init(&isn_mtx, "isn_mtx", NULL, MTX_DEF) > #define ISN_LOCK() mtx_lock(&isn_mtx) > Index: sys/netinet/in_pcb.h > =================================================================== > --- sys/netinet/in_pcb.h (revision 250330) > +++ sys/netinet/in_pcb.h (working copy) > _at__at_ -330,7 +330,7 _at__at_ > /* > * Global lock protecting non-pcbgroup hash lookup tables. > */ > - struct rwlock ipi_hash_lock; > + struct rwlock_padalign ipi_hash_lock; > > /* > * Global hash of inpcbs, hashed by local and foreign addresses and > Index: sys/netinet/in_var.h > =================================================================== > --- sys/netinet/in_var.h (revision 250330) > +++ sys/netinet/in_var.h (working copy) > _at__at_ -116,7 +116,7 _at__at_ > #define INADDR_HASH(x) \ > (&V_in_ifaddrhashtbl[INADDR_HASHVAL(x) & V_in_ifaddrhmask]) > > -extern struct rwlock in_ifaddr_lock; > +extern struct rwlock_padalign in_ifaddr_lock; > > #define IN_IFADDR_LOCK_ASSERT() rw_assert(&in_ifaddr_lock, RA_LOCKED) > #define IN_IFADDR_RLOCK() rw_rlock(&in_ifaddr_lock) > Index: sys/netinet/sctp_pcb.h > =================================================================== > --- sys/netinet/sctp_pcb.h (revision 250330) > +++ sys/netinet/sctp_pcb.h (working copy) > _at__at_ -193,11 +193,11 _at__at_ > sctp_zone_t ipi_zone_asconf; > sctp_zone_t ipi_zone_asconf_ack; > > - struct rwlock ipi_ep_mtx; > - struct mtx ipi_iterator_wq_mtx; > - struct rwlock ipi_addr_mtx; > - struct mtx ipi_pktlog_mtx; > - struct mtx wq_addr_mtx; > + struct rwlock_padalign ipi_ep_mtx; > + struct mtx_padalign ipi_iterator_wq_mtx; > + struct rwlock_padalign ipi_addr_mtx; > + struct mtx_padalign ipi_pktlog_mtx; > + struct mtx_padalign wq_addr_mtx; > uint32_t ipi_count_ep; > > /* assoc/tcb zone info */ > Index: sys/netinet/ip_id.c > =================================================================== > --- sys/netinet/ip_id.c (revision 250330) > +++ sys/netinet/ip_id.c (working copy) > _at__at_ -97,7 +97,7 _at__at_ > static int array_size = 8192; > static int random_id_collisions = 0; > static int random_id_total = 0; > -static struct mtx ip_id_mtx; > +static struct mtx_padalign ip_id_mtx; > > static void ip_initid(void); > static int sysctl_ip_id_change(SYSCTL_HANDLER_ARGS); > Index: sys/netinet/ip_input.c > =================================================================== > --- sys/netinet/ip_input.c (revision 250330) > +++ sys/netinet/ip_input.c (working copy) > _at__at_ -85,7 +85,7 _at__at_ > CTASSERT(sizeof(struct ip) == 20); > #endif > > -struct rwlock in_ifaddr_lock; > +struct rwlock_padalign in_ifaddr_lock; > RW_SYSINIT(in_ifaddr_lock, &in_ifaddr_lock, "in_ifaddr_lock"); > > VNET_DEFINE(int, rsvp_on); > _at__at_ -155,7 +155,7 _at__at_ > > static VNET_DEFINE(uma_zone_t, ipq_zone); > static VNET_DEFINE(TAILQ_HEAD(ipqhead, ipq), ipq[IPREASS_NHASH]); > -static struct mtx ipqlock; > +static struct mtx_padalign ipqlock; > > #define V_ipq_zone VNET(ipq_zone) > #define V_ipq VNET(ipq) > Index: sys/sys/socketvar.h > =================================================================== > --- sys/sys/socketvar.h (revision 250330) > +++ sys/sys/socketvar.h (working copy) > _at__at_ -133,7 +133,7 _at__at_ > * avoid defining a lock order between listen and accept sockets > * until such time as it proves to be a good idea. > */ > -extern struct mtx accept_mtx; > +extern struct mtx_padalign accept_mtx; > #define ACCEPT_LOCK_ASSERT() mtx_assert(&accept_mtx, MA_OWNED) > #define ACCEPT_UNLOCK_ASSERT() mtx_assert(&accept_mtx, MA_NOTOWNED) > #define ACCEPT_LOCK() mtx_lock(&accept_mtx) > Index: sys/kern/uipc_socket.c > =================================================================== > --- sys/kern/uipc_socket.c (revision 250330) > +++ sys/kern/uipc_socket.c (working copy) > _at__at_ -240,14 +240,14 _at__at_ > * accept_mtx locks down per-socket fields relating to accept queues. See > * socketvar.h for an annotation of the protected fields of struct socket. > */ > -struct mtx accept_mtx; > +struct mtx_padalign accept_mtx; > MTX_SYSINIT(accept_mtx, &accept_mtx, "accept", MTX_DEF); > > /* > * so_global_mtx protects so_gencnt, numopensockets, and the per-socket > * so_gencnt field. > */ > -static struct mtx so_global_mtx; > +static struct mtx_padalign so_global_mtx; > MTX_SYSINIT(so_global_mtx, &so_global_mtx, "so_glabel", MTX_DEF); > > /* > Index: sys/net/if.c > =================================================================== > --- sys/net/if.c (revision 250330) > +++ sys/net/if.c (working copy) > _at__at_ -206,7 +206,7 _at__at_ > * also to stablize it over long-running ioctls, without introducing priority > * inversions and deadlocks. > */ > -struct rwlock ifnet_rwlock; > +struct rwlock_padalign ifnet_rwlock; > struct sx ifnet_sxlock; > > /* > Index: sys/net/if_var.h > =================================================================== > --- sys/net/if_var.h (revision 250330) > +++ sys/net/if_var.h (working copy) > _at__at_ -191,9 +191,9 _at__at_ > void *if_unused[2]; > void *if_afdata[AF_MAX]; > int if_afdata_initialized; > - struct rwlock if_afdata_lock; > + struct rwlock_padalign if_afdata_lock; > struct task if_linktask; /* task for link change events */ > - struct rwlock if_addr_lock; /* lock to protect address lists */ > + struct rwlock_padalign if_addr_lock; /* lock to protect address lists */ > > LIST_ENTRY(ifnet) if_clones; /* interfaces of a cloner */ > TAILQ_HEAD(, ifg_list) if_groups; /* linked list of groups per if */ > _at__at_ -832,7 +832,7 _at__at_ > > #ifdef _KERNEL > > -extern struct rwlock ifnet_rwlock; > +extern struct rwlock_padalign ifnet_rwlock; > extern struct sx ifnet_sxlock; > > #define IFNET_LOCK_INIT() do { \ > Index: sys/net/if_llatbl.c > =================================================================== > --- sys/net/if_llatbl.c (revision 250330) > +++ sys/net/if_llatbl.c (working copy) > _at__at_ -67,7 +67,7 _at__at_ > > static void vnet_lltable_init(void); > > -struct rwlock lltable_rwlock; > +struct rwlock_padalign lltable_rwlock; > RW_SYSINIT(lltable_rwlock, &lltable_rwlock, "lltable_rwlock"); > > /* > Index: sys/net/if_llatbl.h > =================================================================== > --- sys/net/if_llatbl.h (revision 250330) > +++ sys/net/if_llatbl.h (working copy) > _at__at_ -43,7 +43,7 _at__at_ > struct llentry; > LIST_HEAD(llentries, llentry); > > -extern struct rwlock lltable_rwlock; > +extern struct rwlock_padalign lltable_rwlock; > #define LLTABLE_RLOCK() rw_rlock(&lltable_rwlock) > #define LLTABLE_RUNLOCK() rw_runlock(&lltable_rwlock) > #define LLTABLE_WLOCK() rw_wlock(&lltable_rwlock) > > > > > Понедельник, 6 мая 2013, 20:50 -07:00 от kit <ktsin_at_acm.org>: >> ah, it's should be fixed now as per r250300. changes that caused this panic have been backed out. >> >> kit >> >> --- On Tue, 5/7/13, kit < ktsin_at_acm.org > wrote: >> >> From: kit < ktsin_at_acm.org > >> Subject: Re: panic in sctp_del_addr_from_vrf() ? >> To: "Andrey Smagin" < samspeed_at_mail.ru >, freebsd-current_at_freebsd.org >> Date: Tuesday, May 7, 2013, 8:59 AM >> >> not sure why. for my case, padaligining one of the rwlocks solved it. >> you may want to try the patch attached and see if it works for you. >> >> anyway, i'm filing a PR if nobody has done so already. >> >> thanks >> kit >> >> On Sat, May 04, 2013 at 09:22:23PM +0400, Andrey Smagin wrote: >>> >>> I have panic like your but in sctp_add_addr_to_vrf. I think need PR. My panic screenshoot http://vvtlan.ru/panic1.jpg and second one http://vvtlan.ru/panic2.jpg >>> >>> Суббота, 4 мая 2013, 20:55 +08:00 от kit < ktsin_at_acm.org >: >>>> >>> got this panic when network interfaces were being unconfigured during >>> system shutdown. has anyone seen this? should i file a PR? >>> >>> thanks >>> kit >>> >>> test.yahoo.com dumped core - see /home/crash/vmcore.2 >>> >>> Sat May 4 20:43:55 MYT 2013 >>> >>> FreeBSD test.yahoo.com 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r250229: Sat May 4 20:30:17 MYT 2013 ktsin_at_test.yahoo.com:/tmp/obj/usr/src/sys/SHUTTLE amd64 >>> >>> panic: page fault >>> >>> GNU gdb 6.1.1 [FreeBSD] >>> Copyright 2004 Free Software Foundation, Inc. >>> GDB is free software, covered by the GNU General Public License, and you are >>> welcome to change it and/or distribute copies of it under certain conditions. >>> Type "show copying" to see the conditions. >>> There is absolutely no warranty for GDB. Type "show warranty" for details. >>> This GDB was configured as "amd64-marcel-freebsd"... >>> >>> Unread portion of the kernel message buffer: >>> . >>> <118>Writing entropy file:. >>> <118>. >>> <118>Terminated >>> <118>May 4 20:42:00 test syslogd: exiting on signal 15 >>> >>> Fatal trap 12: page fault while in kernel mode >>> cpuid = 4; apic id = 04 >>> fault virtual address = 0x8c >>> fault code = supervisor read data, page not present >>> instruction pointer = 0x20:0xffffffff8066e71c >>> stack pointer = 0x28:0xffffff82187fb5d0 >>> frame pointer = 0x28:0xffffff82187fb620 >>> code segment = base 0x0, limit 0xfffff, type 0x1b >>> = DPL 0, pres 1, long 1, def32 0, gran 1 >>> processor eflags = interrupt enabled, resume, IOPL = 0 >>> current process = 474 (wpa_supplicant) >>> trap number = 12 >>> panic: page fault >>> cpuid = 4 >>> KDB: stack backtrace: >>> db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xffffff82187fb190 >>> kdb_backtrace() at kdb_backtrace+0x39/frame 0xffffff82187fb240 >>> panic() at panic+0x155/frame 0xffffff82187fb2c0 >>> trap_fatal() at trap_fatal+0x37a/frame 0xffffff82187fb320 >>> trap_pfault() at trap_pfault+0x257/frame 0xffffff82187fb3c0 >>> trap() at trap+0x43a/frame 0xffffff82187fb510 >>> calltrap() at calltrap+0x8/frame 0xffffff82187fb510 >>> --- trap 0xc, rip = 0xffffffff8066e71c, rsp = 0xffffff82187fb5d0, rbp = 0xffffff82187fb620 --- >>> sctp_del_addr_from_vrf() at sctp_del_addr_from_vrf+0x7c/frame 0xffffff82187fb620 >>> rt_newaddrmsg_fib() at rt_newaddrmsg_fib+0x44/frame 0xffffff82187fb6e0 >>> rtinit1() at rtinit1+0x57b/frame 0xffffff82187fb860 >>> in_scrubprefix() at in_scrubprefix+0x376/frame 0xffffff82187fb900 >>> rip_ctlinput() at rip_ctlinput+0x143/frame 0xffffff82187fb930 >>> pfctlinput() at pfctlinput+0x5c/frame 0xffffff82187fb960 >>> ifioctl() at ifioctl+0x7f2/frame 0xffffff82187fba20 >>> kern_ioctl() at kern_ioctl+0x22e/frame 0xffffff82187fba90 >>> sys_ioctl() at sys_ioctl+0x142/frame 0xffffff82187fbae0 >>> amd64_syscall() at amd64_syscall+0x2b4/frame 0xffffff82187fbbf0 >>> Xfast_syscall() at Xfast_syscall+0xfb/frame 0xffffff82187fbbf0 >>> --- syscall (54, FreeBSD ELF64, sys_ioctl), rip = 0x80122c26a, rsp = 0x7fffffffdb18, rbp = 0x7fffffffdb90 --- >>> Uptime: 4m55s >>> >>> _______________________________________________ >>> freebsd-current_at_freebsd.org mailing list >>> http://lists.freebsd.org/mailman/listinfo/freebsd-current >>> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org" >>>> >>> >>> Отправлено из мобильной Почты Mail.Ru >> _______________________________________________ >> freebsd-current_at_freebsd.org mailing list >> http://lists.freebsd.org/mailman/listinfo/freebsd-current >> To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org" > _______________________________________________ > freebsd-current_at_freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org" >Received on Wed May 08 2013 - 07:00:06 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:37 UTC