Skip to content

vswitch crashes if memif resource limit/request is missing #1726

@milanlenco

Description

@milanlenco

If a pod for which an additional memif interface is requested misses contivpp.io/memif resource limit in its definition, then Contiv-VPP vswitch will crash:

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
*   FINALIZED EVENT: Kubernetes State Change                                                                                  #4 *
*   HANDLED BY: podmanager, ipam, ipnet, sfc, policy                                                                    took 1ms *
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
*   NEW EVENT (follow-up to #4): Pod Custom Interfaces Update                                                                 #5 *
*              * Pod ID: default/cnf-ids                                                                                         *
*              * Pod Labels: map[cnf:cnf-ids]                                                                                    *
*              * pod Annotations: map[contivpp.io/custom-if:memif1/memif/stub, memif2/memif/stub                                 *
*                    contivpp.io/microservice-label:cnf-ids]                                                                     *
*   EVENT HANDLERS: ipnet, sfc                                                                                                   *
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
time="2020-02-07 13:12:24.03190" level=debug msg="Configuring custom memif interface, name: memif1, network: stub" loc="ipnet/pod.go(243)" logger=ipnet
time="2020-02-07 13:12:24.03540" level=error msg="Couldn't retrieve pod memif information, skipping memif configuration" loc="ipnet/pod.go(269)" logger=ipnet
time="2020-02-07 13:12:24.03555" level=info msg="Stopping the main event loop" loc="controller/plugin_controller.go(463)" logger=controller
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x18d24df]
goroutine 65 [running]:
github.com/contiv/vpp/plugins/ipnet.(*IPNet).podMicroserviceMemif(0xc00048d560, 0xc000a56240, 0x0, 0xc000877a10, 0x6, 0x0, 0x1, 0x0, 0xf, 0x98)
        /root/go/src/github.com/contiv/vpp/plugins/ipnet/pod.go:878 +0xef
github.com/contiv/vpp/plugins/ipnet.(*IPNet).podCustomIfsConfig(0xc00048d560, 0xc000a56240, 0x1, 0xc000807f60, 0xc000730b40)
        /root/go/src/github.com/contiv/vpp/plugins/ipnet/pod.go:337 +0xf35
github.com/contiv/vpp/plugins/ipnet.(*IPNet).updatePodCustomIfs(0xc00048d560, 0xc0009db528, 0x7, 0xc0009db538, 0x7, 0x236f900, 0xc000930f00, 0x1, 0xc000e85568, 0x40d4e9, ...)
        /root/go/src/github.com/contiv/vpp/plugins/ipnet/update_events.go:355 +0xb8
github.com/contiv/vpp/plugins/ipnet.(*IPNet).Update(0xc00048d560, 0x23bac00, 0xc000cd59e0, 0x236f900, 0xc000930f00, 0xc000930e40, 0x2, 0x2, 0x0)
        /root/go/src/github.com/contiv/vpp/plugins/ipnet/update_events.go:146 +0x596
github.com/contiv/vpp/plugins/controller.(*Controller).processEvent(0xc0002d43c0, 0xc000930320, 0x0, 0x0)
        /root/go/src/github.com/contiv/vpp/plugins/controller/plugin_controller.go:714 +0x7d0
github.com/contiv/vpp/plugins/controller.(*Controller).receiveEvent(0xc0002d43c0, 0xc000930320, 0x5)
        /root/go/src/github.com/contiv/vpp/plugins/controller/plugin_controller.go:562 +0x2a0
github.com/contiv/vpp/plugins/controller.(*Controller).eventLoop(0xc0002d43c0)
        /root/go/src/github.com/contiv/vpp/plugins/controller/plugin_controller.go:472 +0x832
created by github.com/contiv/vpp/plugins/controller.(*Controller).Init
        /root/go/src/github.com/contiv/vpp/plugins/controller/plugin_controller.go:331 +0x576
time="2020-02-07 13:12:25.20520" level=error msg="contiv-agent terminated, stopping VPP" loc="contiv-init/main.go(466)" logger=contiv-init
time="2020-02-07 13:12:25.49099" level=debug msg=exiting loc="contiv-init/main.go(473)" logger=contiv-init

Contiv should handle this situation gracefully and just log error or something.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions