On Mon, Sep 16, 2013 at 05:27:30PM +0200, Hans Petter Selasky wrote: > Hi, > > I caught a General protection fault in prelist_remove. Any clues what > this might be? Any chance you were creating or destroying interfaces around the time this crash happened? There is no locking in the code which manipulates the prefix list (or any of the global NDP data structures), so it's possible to get crashes if, for instance, the prefix expiry callout races with in6_ifdetach() to delete a prefix. It's not clear what caused your crash (not without a crash dump at least), but I imagine it has something to do with this. I've partially fixed this at work by adding a rw lock to protect access to the the prefix, default router, and DAD lists. The patch is here: http://people.freebsd.org/~markj/patches/ndp-locking.diff If anyone can review or test this patch, please let me know. Thanks, -Mar > > FreeBSD-10 from one month back approx. > > > ffffffff80a95810 <prelist_remove>: > > ffffffff80a95810: 55 push %rbp > > ffffffff80a95811: 48 89 e5 mov %rsp,%rbp > > ffffffff80a95814: 41 57 push %r15 > > ffffffff80a95816: 41 56 push %r14 > > ffffffff80a95818: 53 push %rbx > > ffffffff80a95819: 48 83 ec 38 sub $0x38,%rsp > > ffffffff80a9581d: 49 89 ff mov %rdi,%r15 > > ffffffff80a95820: 48 8b 04 25 c0 de 3b mov 0xffffffff813bdec0,%rax > > ffffffff80a95827: 81 > > ffffffff80a95828: 48 89 45 e0 mov %rax,-0x20(%rbp) > > ffffffff80a9582c: 49 c7 47 44 00 00 00 movq $0x0,0x44(%r15) > > ffffffff80a95833: 00 > > ffffffff80a95834: 41 f6 47 6c 01 testb $0x1,0x6c(%r15) > > ffffffff80a95839: 74 4d je ffffffff80a95888 <prelist_remove+0x78> > > ffffffff80a9583b: 4c 89 ff mov %r15,%rdi > > ffffffff80a9583e: e8 fd 00 00 00 callq ffffffff80a95940 <nd6_prefix_offlink> > > ffffffff80a95843: 41 89 c6 mov %eax,%r14d > > ffffffff80a95846: 45 85 f6 test %r14d,%r14d > > ffffffff80a95849: 74 3d je ffffffff80a95888 <prelist_remove+0x78> > > ffffffff80a9584b: 8b 04 25 c4 a6 56 81 mov 0xffffffff8156a6c4,%eax > > ffffffff80a95852: 85 c0 test %eax,%eax > > ffffffff80a95854: 74 32 je ffffffff80a95888 <prelist_remove+0x78> > > ffffffff80a95856: 49 8d 77 20 lea 0x20(%r15),%rsi > > ffffffff80a9585a: 48 8d 7d b0 lea -0x50(%rbp),%rdi > > ffffffff80a9585e: e8 1d fa fd ff callq ffffffff80a75280 <ip6_sprintf> > > ffffffff80a95863: 41 0f b6 4f 78 movzbl 0x78(%r15),%ecx > > ffffffff80a95868: 4d 8b 07 mov (%r15),%r8 > > ffffffff80a9586b: 49 83 c0 28 add $0x28,%r8 > > ffffffff80a9586f: bf 03 00 00 00 mov $0x3,%edi > > ffffffff80a95874: 48 c7 c6 c6 17 fa 80 mov $0xffffffff80fa17c6,%rsi > > ffffffff80a9587b: 48 89 c2 mov %rax,%rdx > > ffffffff80a9587e: 45 89 f1 mov %r14d,%r9d > > ffffffff80a95881: 30 c0 xor %al,%al > > ffffffff80a95883: e8 08 f0 e5 ff callq ffffffff808f4890 <log> > > ffffffff80a95888: 41 83 7f 7c 00 cmpl $0x0,0x7c(%r15) > > ffffffff80a9588d: 7f 6c jg ffffffff80a958fb <prelist_remove+0xeb> > > ffffffff80a9588f: 49 8b 47 08 mov 0x8(%r15),%rax > > ffffffff80a95893: 48 85 c0 test %rax,%rax > > ffffffff80a95896: 74 0a je ffffffff80a958a2 <prelist_remove+0x92> > > ffffffff80a95898: 49 8d 4f 08 lea 0x8(%r15),%rcx > > ffffffff80a9589c: 48 39 48 10 cmp %rcx,0x10(%rax) > ^^^^ crash here > > ffffffff80a958a0: 75 72 jne ffffffff80a95914 <prelist_remove+0x104> > > ffffffff80a958a2: 49 8b 4f 10 mov 0x10(%r15),%rcx > > Non-reproducable. > > --HPS > _______________________________________________ > 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 Mon Sep 16 2013 - 15:09:14 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:41 UTC