Uploaded image for project: 'OpenShift Bugs'
  1. OpenShift Bugs
  2. OCPBUGS-66053

Go panic in linuxptp-daemon-container when a SyncE dpll event with empty pinParentDevice is received

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Normal Normal
    • 4.21
    • 4.20.z
    • Networking / ptp
    • None
    • None
    • False
    • Hide

      None

      Show
      None
    • None
    • None
    • None
    • All
    • 11/27: Javier has posted a PR
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Description of problem:

      When testing SyncE on a T-BC configuration, at a certain moment the linuxptp-daemon panics with the following traceback:
      
      synce4l[614820.310]: [synce4l.0.config] PIN_SET request sent state:1, pin:31 parent:19 ret:48
      synce4l[614820.310]: [synce4l.0.config] trying set prio=0 for pin:19 on follower
      I1125 13:43:50.844266 3047099 dpll.go:579] dpll monitoring exited, initiating redial (ens2f0)
      panic: runtime error: index out of range [1] with length 0
      goroutine 808 [running]:
      github.com/k8snetworkplumbingwg/linuxptp-daemon/pkg/dpll.(*DpllConfig).PhaseOffsetPin(0xc00098efc0?, 0x10?)
          /go/src/github.com/k8snetworkplumbingwg/linuxptp-daemon/pkg/dpll/dpll.go:346 +0x249
      github.com/k8snetworkplumbingwg/linuxptp-daemon/pkg/dpll.(*DpllConfig).nlUpdateState(0xc0002e7340, {0x2d7ab20, 0x0, 0xc000612600?}, {0xc000390628, 0x1, 0x100b0e990?})
          /go/src/github.com/k8snetworkplumbingwg/linuxptp-daemon/pkg/dpll/dpll.go:389 +0x412
      github.com/k8snetworkplumbingwg/linuxptp-daemon/pkg/dpll.(*DpllConfig).monitorNtf(0xc0002e7340, 0xc0004ca068)
          /go/src/github.com/k8snetworkplumbingwg/linuxptp-daemon/pkg/dpll/dpll.go:432 +0x7b
      github.com/k8snetworkplumbingwg/linuxptp-daemon/pkg/dpll.(*DpllConfig).MonitorDpllNetlink.func1()
          /go/src/github.com/k8snetworkplumbingwg/linuxptp-daemon/pkg/dpll/dpll.go:526 +0x4e
      created by github.com/k8snetworkplumbingwg/linuxptp-daemon/pkg/dpll.(*DpllConfig).MonitorDpllNetlink in goroutine 782
          /go/src/github.com/k8snetworkplumbingwg/linuxptp-daemon/pkg/dpll/dpll.go:524 +0x75b
      

      Version-Release number of selected component (if applicable):

      ptp-operator.v4.20.0-202511181524

      How reproducible:

      Always

      Steps to Reproduce:

          1. Create a T-BC configuration including SyncE
          2. Check linuxptp-daemon-container logs
          3. The crash will happen after a while
          

      Actual results:

      Panic in the container

      Expected results:

      No crash

      Additional info:

      Checking the dpll pin monitor while the issue happens shows the following:
      
      {
        "timestamp": "2025-11-18T13:32:14.418488642Z",
        "id": 31,
        "moduleName": "ice",
        "clockId": "0x507c6fffff836b8c",
        "boardLabel": "",
        "panelLabel": "",
        "packageLabel": "",
        "type": "synce-eth-port",
        "frequency": 0,
        "frequencySupported": [],
        "capabilities": "state-can-change",
        "pinParentDevice": [],
        "pinParentPin": [
          {
            "parentID": 19,
            "parentState": "disconnected"
          },
          {
            "parentID": 20,
            "parentState": "disconnected"
          }
        ],
      }
      
      The dpll.go code does not expect pinParentDevice to be an empty list.

       

              jpena@redhat.com Javier Pena
              jpena@redhat.com Javier Pena
              None
              None
              Yang Liu Yang Liu
              None
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated: