Bug 2033756

Summary: OVS segmentation fault at lib/tun-metadata.c:memcpy_from_metadata
Product: Red Hat Enterprise Linux Fast Datapath Reporter: Eric Nothen <enothen>
Component: openvswitchAssignee: Timothy Redaelli <tredaelli>
openvswitch sub component: daemons and tools QA Contact: qding
Status: NEW --- Docs Contact:
Severity: low    
Priority: unspecified CC: apevec, chrisw, ctrautma, dhill, jhsiao, jlibosva
Version: FDP 21.J   
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Eric Nothen 2021-12-17 19:10:51 UTC
Description of problem:
ovs-vswitchd service randomly crashes on compute nodes with a segmentation fault error. 

Version-Release number of selected component (if applicable):
openvswitch-2.9.0-110.el7fdp.x86_64

How reproducible:
Not sure

Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Core was generated by `ovs-vswitchd unix:/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfi'.
Program terminated with signal 11, Segmentation fault.
#0  memcpy_from_metadata (dst=0x7fb1da3e9dd0, src=0x7fb1da3ec490, loc=<optimized out>) at ../lib/tun-metadata.c:450
450	        memcpy((uint8_t *)dst + addr, src->opts.u8 + chain->offset,
(gdb) bt
#0  memcpy_from_metadata (dst=0x7fb1da3e9dd0, src=0x7fb1da3ec490, loc=<optimized out>) at ../lib/tun-metadata.c:450
#1  0x000055d353776074 in mf_mask_field_masked (mf=0x55d355c84ef0, mask=mask@entry=0x7fb1da3e9e90, wc=wc@entry=0x7fb1da3ec450) at ../lib/meta-flow.c:1277
#2  0x000055d353776146 in unwildcard_subfield (sf=sf@entry=0x55d3554bedc0, wc=0x7fb1da3ec450) at ../lib/meta-flow.c:2460
#3  0x000055d35377715c in mf_subfield_copy (src=src@entry=0x55d3554bedb0, dst=dst@entry=0x55d3554bedc0, flow=0x7fb1da3ebe00, wc=<optimized out>) at ../lib/meta-flow.c:2477
#4  0x000055d35372ab18 in xlate_ofpact_reg_move (a=0x55d3554beda8, ctx=0x7fb1da3eb540) at ../ofproto/ofproto-dpif-xlate.c:6160
#5  do_xlate_actions (ofpacts=<optimized out>, ofpacts_len=<optimized out>, ctx=<optimized out>, is_last_action=<optimized out>) at ../ofproto/ofproto-dpif-xlate.c:6405
#6  0x000055d353727d94 in xlate_recursively (actions_xlator=0x55d35372a190 <do_xlate_actions>, is_last_action=false, deepens=<optimized out>, rule=0x55d3554bec10, ctx=0x7fb1da3eb540)
    at ../ofproto/ofproto-dpif-xlate.c:3984
#7  xlate_table_action (ctx=0x7fb1da3eb540, in_port=<optimized out>, table_id=<optimized out>, may_packet_in=<optimized out>, honor_table_miss=<optimized out>, with_ct_orig=<optimized out>, 
    is_last_action=false, xlator=0x55d35372a190 <do_xlate_actions>) at ../ofproto/ofproto-dpif-xlate.c:4112
#8  0x000055d35372b3f2 in do_xlate_actions (ofpacts=<optimized out>, ofpacts_len=<optimized out>, ctx=<optimized out>, is_last_action=<optimized out>) at ../ofproto/ofproto-dpif-xlate.c:6549
#9  0x000055d353727d94 in xlate_recursively (actions_xlator=0x55d35372a190 <do_xlate_actions>, is_last_action=false, deepens=<optimized out>, rule=0x55d355d13fa0, ctx=0x7fb1da3eb540)
    at ../ofproto/ofproto-dpif-xlate.c:3984
#10 xlate_table_action (ctx=0x7fb1da3eb540, in_port=<optimized out>, table_id=<optimized out>, may_packet_in=<optimized out>, honor_table_miss=<optimized out>, with_ct_orig=<optimized out>, 
    is_last_action=false, xlator=0x55d35372a190 <do_xlate_actions>) at ../ofproto/ofproto-dpif-xlate.c:4112
#11 0x000055d35372b3f2 in do_xlate_actions (ofpacts=<optimized out>, ofpacts_len=<optimized out>, ctx=<optimized out>, is_last_action=<optimized out>) at ../ofproto/ofproto-dpif-xlate.c:6549
#12 0x000055d353727d94 in xlate_recursively (actions_xlator=0x55d35372a190 <do_xlate_actions>, is_last_action=false, deepens=<optimized out>, rule=0x55d355e13850, ctx=0x7fb1da3eb540)
    at ../ofproto/ofproto-dpif-xlate.c:3984
#13 xlate_table_action (ctx=0x7fb1da3eb540, in_port=<optimized out>, table_id=<optimized out>, may_packet_in=<optimized out>, honor_table_miss=<optimized out>, with_ct_orig=<optimized out>, 
    is_last_action=false, xlator=0x55d35372a190 <do_xlate_actions>) at ../ofproto/ofproto-dpif-xlate.c:4112
#14 0x000055d35372b3f2 in do_xlate_actions (ofpacts=ofpacts@entry=0x55d355f50818, ofpacts_len=ofpacts_len@entry=8, ctx=ctx@entry=0x7fb1da3eb540, is_last_action=is_last_action@entry=true)
    at ../ofproto/ofproto-dpif-xlate.c:6549
#15 0x000055d353732871 in xlate_actions (xin=xin@entry=0x7fb1da3ebdf0, xout=xout@entry=0x7fb1da3ec710) at ../ofproto/ofproto-dpif-xlate.c:7155
#16 0x000055d353721a32 in xlate_key (key=<optimized out>, len=<optimized out>, push=push@entry=0x7fb1da3ec190, ctx=ctx@entry=0x7fb1da3ec6f0, udpif=<optimized out>)
    at ../ofproto/ofproto-dpif-upcall.c:2052
#17 0x000055d353722094 in xlate_ukey (ukey=0x7fb1c4041280, ukey=0x7fb1c4041280, ctx=0x7fb1da3ec6f0, tcp_flags=<optimized out>, udpif=0x55d355090570) at ../ofproto/ofproto-dpif-upcall.c:2064
#18 revalidate_ukey__ (udpif=udpif@entry=0x55d355090570, ukey=ukey@entry=0x7fb1c4041280, tcp_flags=<optimized out>, odp_actions=0x7fb1da3ecb60, recircs=recircs@entry=0x7fb1da3ecb50, 
    xcache=<optimized out>) at ../ofproto/ofproto-dpif-upcall.c:2110
#19 0x000055d35372230a in revalidate_ukey (udpif=udpif@entry=0x55d355090570, ukey=ukey@entry=0x7fb1c4041280, stats=stats@entry=0x7fb1da3ee820, odp_actions=odp_actions@entry=0x7fb1da3ecb60, 
    reval_seq=reval_seq@entry=139408647449, recircs=recircs@entry=0x7fb1da3ecb50) at ../ofproto/ofproto-dpif-upcall.c:2212
#20 0x000055d35372550e in revalidate (revalidator=0x55d355071978) at ../ofproto/ofproto-dpif-upcall.c:2515
#21 0x000055d353725636 in udpif_revalidator (arg=0x55d355071978) at ../ofproto/ofproto-dpif-upcall.c:914
#22 0x000055d3537d6f8f in ovsthread_wrapper (aux_=<optimized out>) at ../lib/ovs-thread.c:354
#23 0x00007fb1e6dbfea5 in start_thread (arg=0x7fb1da3f1700) at pthread_create.c:307
#24 0x00007fb1e61bd8cd in __libc_ifunc_impl_list (name=<optimized out>, array=0x7fb1da3f1700, max=<optimized out>) at ../sysdeps/x86_64/multiarch/ifunc-impl-list.c:329
#25 0x0000000000000000 in ?? ()
(gdb)


Creating two different BZs as from the coredumps it looks like two different errors. If it's not the case, feel free to close-dup one of them. ABRT report on the case attached.