summaryrefslogtreecommitdiff
path: root/staticd
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2023-06-30 15:21:43 -0400
committerDonald Sharp <sharpd@nvidia.com>2023-06-30 15:25:37 -0400
commit3fa39a35ed32f32ed94c16d2884b24e0dae4a5fa (patch)
tree6c1a64c1e7ab7e58c1512729b4812ab19342502d /staticd
parent3b02d99f33bc9cc78df66ec804862a564c8bf2b2 (diff)
ospf6d: Stop crash in ospf6_write
I'm seeing crashes in ospf6_write on the `assert(node)`. The only sequence of events that I see that could possibly cause this to happen is this: a) Someone has scheduled a outgoing write to the ospf6->t_write and placed item(s) on the ospf6->oi_write_q b) A decision is made in ospf6_send_lsupdate() to send an immediate packet via a event_execute(..., ospf6_write,....). c) ospf6_write is called and the oi_write_q is cleaned out. d) the t_write event is now popped and the oi_write_q is empty and FRR asserts on the `assert(node)` <crash> When event_execute is called for ospf6_write, just cancel the t_write event. If ospf6_write has more data to send at the end of the function it will reschedule itself. I've only seen this crash one time and am unable to reliably reproduce this at all. But this is the only mechanism that I can see that could make this happen, given how little the oi_write_q is actually touched in code. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
Diffstat (limited to 'staticd')
0 files changed, 0 insertions, 0 deletions