ok, so, patching the xroute-nlogn branch with the attached patch, (essentially the same as christofs), and running with a mix of unicast and multicast routers doesn't crash.
Carnage still eventually ensues with injecting 8192 (* 2) routes from two places, but I think replacing the existing linked list with a binary tree in the resend routines will lick this. Possibly also limiting garbage collection attempts in resend_expired as well. Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls ms/call ms/call name 80.97 57.77 57.77 938622 0.06 0.06 find_resend 3.74 60.44 2.67 159556840 0.00 0.00 timeval_minus_msec 3.67 63.06 2.62 4980064 0.00 0.00 find_route_slot 1.35 64.02 0.96 6907 0.14 0.14 route_stream 1.12 64.82 0.80 48779070 0.00 0.00 route_stream_next 0.78 65.38 0.56 211642614 0.00 0.00 resend_expired 0.70 65.88 0.50 27750 0.02 0.13 recompute_resend_time 0.60 66.31 0.43 50625680 0.00 0.00 chg_route_metric 0.57 66.72 0.41 4733838 0.00 0.00 really_buffer_update 0.57 67.13 0.41 4544 0.09 3.00 update_neighbour_metric 0.49 67.48 0.35 51329597 0.00 0.00 prefix_cmp 0.34 67.72 0.24 450100 0.00 0.00 netlink_read 0.34 67.96 0.24 8705959 0.00 0.00 roughly 0.25 68.14 0.18 246825 0.00 0.00 kernel_route 0.22 68.30 0.16 timeval_minus 0.18 68.42 0.13 17959773 0.00 0.00 timeval_add_msec 0.17 68.54 0.12 792003 0.00 0.00 really_send_update 0.16 68.66 0.12 4939380 0.00 0.00 route_expired 0.15 68.77 0.11 68291064 0.00 0.00 is_default 0.15 68.88 0.11 998027 0.00 0.00 find_route 0.15 68.99 0.11 431076 0.00 0.00 netlink_talk 0.14 69.09 0.10 9417335 0.00 0.00 route_smoothed_metric 0.14 69.19 0.10 2897419 0.00 0.00 update_route_metric 0.14 69.29 0.10 544065 0.00 0.02 send_update 0.14 69.39 0.10 178975 0.00 0.00 find_source 0.14 69.49 0.10 86 1.16 32.92 conflict_solution 0.11 69.57 0.08 498328 0.00 0.00 find_best_route 0.10 69.64 0.07 14280435 0.00 0.00 accumulate_short 0.10 69.71 0.07 4875431 0.00 0.00 accumulate_bytes : On Wed, Oct 31, 2018 at 9:32 AM Dave Taht <[email protected]> wrote: > > I merged the first two against the nlogn branch (it looked like > juliusz had fixed the dref), and am testing it now, using a mixture of > unicast and multicast. ) > > however, after a few minutes after injecting rtod -r 8192 from two places... > > It looks like it crashing on the same kind of dref on a different > path. Your patch was different, so I'll try that in a sec. > > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". > Core was generated by `./babeld -L /tmp/babel.log -l -g 33123 -S > /var/lib/babeld/state eno1 wlp2s0 wlx'. > Program terminated with signal SIGSEGV, Segmentation fault. > #0 0x000000000040c21c in start_message (buf=buf@entry=0x14af6c8, > type=type@entry=10, len=len@entry=22) at message.c:957 > 957 buf->buf[buf->len++] = type; > (gdb) up > #1 0x000000000040c5b0 in send_multihop_request (buf=0x14af6c8, > prefix=0x14cefc8 "\374\346\022\302ؑ\b\201", plen=<optimized out>, > src_prefix=0x14cefd9 "", src_plen=<optimized out>, seqno=<optimized out>, > id=0x14cefc0 "\002%\220\377\376\301bR\374\346\022\302ؑ\b\201", > hop_count=127) at message.c:1809 > 1809 start_message(buf, MESSAGE_MH_REQUEST, len); > (gdb) bt > #0 0x000000000040c21c in start_message (buf=buf@entry=0x14af6c8, > type=type@entry=10, len=len@entry=22) at message.c:957 > #1 0x000000000040c5b0 in send_multihop_request (buf=0x14af6c8, > prefix=0x14cefc8 "\374\346\022\302ؑ\b\201", plen=<optimized out>, > src_prefix=0x14cefd9 "", src_plen=<optimized out>, seqno=<optimized out>, > id=0x14cefc0 "\002%\220\377\376\301bR\374\346\022\302ؑ\b\201", > hop_count=127) at message.c:1809 > #2 0x000000000040e019 in send_request_resend ( > prefix=0x14cefc8 "\374\346\022\302ؑ\b\201", plen=64 '@', > src_prefix=0x14cefd9 "", src_plen=0 '\000', seqno=<optimized out>, > id=0x14cefc0 "\002%\220\377\376\301bR\374\346\022\302ؑ\b\201") > at message.c:1907 > #3 0x000000000040a836 in flush_route (route=route@entry=0x1628180) > at route.c:300 > #4 0x000000000040b076 in expire_routes () at route.c:1216 > #5 0x0000000000403121 in main (argc=<optimized out>, argv=<optimized out>) > at babeld.c:751 > > On Tue, Oct 30, 2018 at 12:03 PM Christof Schulze > <[email protected]> wrote: > > > > On Thu, Oct 25, 2018 at 09:26:51PM +0200, Juliusz Chroboczek wrote: > > >> Also it would be really helpful if that remaining PR (prefsrc) could be > > >> considered. > > Sure! I attached the two patches on this mail. > > > > Patch 0001 removes outdated information from the manpage > > Patch 0002 adds prefsrc capabilities > > Patch 0003 fixes a build issue in rfc6126bis in message.c > > > > > > > > viele Grüße > > > > Christof > > > > > > > > > > > >Christof, are you willing to send me a clean patch against the rfc6126bis > > >branch, or shall I do the merge myself? > > > > > >-- Juliusz > > > > -- > > () ascii ribbon campaign - against html e-mail > > /\ against proprietary attachments > > > > _______________________________________________ > > Babel-users mailing list > > [email protected] > > https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/babel-users > > > > -- > > Dave Täht > CTO, TekLibre, LLC > http://www.teklibre.com > Tel: 1-831-205-9740 -- Dave Täht CTO, TekLibre, LLC http://www.teklibre.com Tel: 1-831-205-9740
From e2f959497b707110fbf5b1b871298f971cfd8e9d Mon Sep 17 00:00:00 2001 From: Dave Taht <[email protected]> Date: Wed, 31 Oct 2018 09:40:52 -0700 Subject: [PATCH 1/2] yet another fix for interface deref --- message.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/message.c b/message.c index 41e1031..f08fb72 100644 --- a/message.c +++ b/message.c @@ -1880,7 +1880,8 @@ send_unicast_multihop_request(struct neighbour *neigh, unsigned short hop_count) { flushupdates(neigh->ifp); - send_multihop_request(&neigh->buf, prefix, plen, src_prefix, src_plen, + if(if_up(neigh->ifp)) + send_multihop_request(&neigh->buf, prefix, plen, src_prefix, src_plen, seqno, id, hop_count); } @@ -1904,7 +1905,8 @@ send_request_resend(const unsigned char *prefix, unsigned char plen, } else { struct interface *ifp; FOR_ALL_INTERFACES(ifp) - send_multihop_request(&ifp->buf, prefix, plen, src_prefix, src_plen, + if(if_up(ifp)) + send_multihop_request(&ifp->buf, prefix, plen, src_prefix, src_plen, seqno, id, 127); } } -- 2.7.4
_______________________________________________ Babel-users mailing list [email protected] https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/babel-users
