{
  "_class" : "hudson.matrix.MatrixBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.SCMTrigger$SCMTriggerCause",
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.model.ParametersAction",
      "parameters" : [
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "BRANCH",
          "value" : "master"
        },
        {
          "_class" : "hudson.model.StringParameterValue",
          "name" : "EMAIL_NOTIFICATIONS",
          "value" : "jenkins-notifications@lists.osmocom.org laforge@gnumonks.org"
        }
      ]
    },
    {
      "_class" : "jenkins.metrics.impl.TimeInQueueAction",
      "blockedDurationMillis" : 0,
      "blockedTimeMillis" : 0,
      "buildableDurationMillis" : 0,
      "buildableTimeMillis" : 0,
      "buildingDurationMillis" : 270270,
      "executingTimeMillis" : 270270,
      "executorUtilization" : 1.0,
      "subTaskCount" : 0,
      "waitingDurationMillis" : 7075,
      "waitingTimeMillis" : 7075
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 11587,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "271a2764c74dd7b1751ac0c476f09d4fe7db4788",
            "branch" : [
              {
                "SHA1" : "271a2764c74dd7b1751ac0c476f09d4fe7db4788",
                "name" : "origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "271a2764c74dd7b1751ac0c476f09d4fe7db4788",
            "branch" : [
              {
                "SHA1" : "271a2764c74dd7b1751ac0c476f09d4fe7db4788",
                "name" : "origin/master"
              }
            ]
          }
        },
        "refs/remotes/origin/osmith/wip" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 11003,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "7db79cc39a265a6838206df836d1bee28be1acee",
            "branch" : [
              {
                "SHA1" : "7db79cc39a265a6838206df836d1bee28be1acee",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          },
          "revision" : {
            "SHA1" : "7db79cc39a265a6838206df836d1bee28be1acee",
            "branch" : [
              {
                "SHA1" : "7db79cc39a265a6838206df836d1bee28be1acee",
                "name" : "refs/remotes/origin/osmith/wip"
              }
            ]
          }
        },
        "refs/remotes/origin/master" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 7614,
          "buildResult" : null,
          "marked" : {
            "SHA1" : "73773447715c57075ad5acb96a5346ff23d7e91f",
            "branch" : [
              {
                "SHA1" : "73773447715c57075ad5acb96a5346ff23d7e91f",
                "name" : "refs/remotes/origin/master"
              }
            ]
          },
          "revision" : {
            "SHA1" : "73773447715c57075ad5acb96a5346ff23d7e91f",
            "branch" : [
              {
                "SHA1" : "73773447715c57075ad5acb96a5346ff23d7e91f",
                "name" : "refs/remotes/origin/master"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "271a2764c74dd7b1751ac0c476f09d4fe7db4788",
        "branch" : [
          {
            "SHA1" : "271a2764c74dd7b1751ac0c476f09d4fe7db4788",
            "name" : "origin/master"
          }
        ]
      },
      "remoteUrls" : [
        "https://gerrit.osmocom.org/osmo-bts"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : false,
  "description" : null,
  "displayName" : "#11587",
  "duration" : 270270,
  "estimatedDuration" : 237195,
  "executor" : null,
  "fullDisplayName" : "master-osmo-bts #11587",
  "id" : "11587",
  "inProgress" : false,
  "keepLog" : false,
  "number" : 11587,
  "queueId" : 156561,
  "result" : "SUCCESS",
  "timestamp" : 1782813487565,
  "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/11587/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/osmo-bts-trx/scheduler_trx.c",
          "src/osmo-bts-trx/l1_if.h"
        ],
        "commitId" : "fcfc4e83eae5a810371ac97aaf8f38bb4af235d1",
        "timestamp" : 1782243586000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "osmo-bts-trx: fix spurious shutdown on first CLCK.ind from osmo-trx\u000a\u000aosmo-trx starts its frame counter from a random value rather than 0.\u000aWhen the first CLCK.ind arrives, last_fn_timer and last_clk_ind are\u000astill zero-initialised (set by trx_sched_clock_started()), so:\u000a\u000a* compute_elapsed_fn(0, fn) wraps to a large negative for any fn\u000a  greater than hyperframe/2 (1357824), satisfying elapsed_fn < 0;\u000a* compute_elapsed_us({0,0}, &tv_now) returns the full CLOCK_MONOTONIC\u000a  uptime (potentially days), satisfying the error_us threshold.\u000a\u000aTogether these trip the stale-clock shutdown introduced in the previous\u000acommit (0199c108), even though the transceiver is perfectly healthy:\u000a\u000aDL1C NOTICE scheduler_trx.c:490 GSM clock started, waiting for clock indications\u000aDL1C FATAL scheduler_trx.c:589 Stale CLCK.ind: fn=1456348 is 250957770198 us behind\u000aDOML NOTICE bts_shutdown_fsm.c:268 BTS_SHUTDOWN(bts0){NONE}: Shutting down BTS, exit 1, reason: TRX clock skew too high\u000a\u000aFix by adding clk_ind_received to osmo_trx_clock_state.  On the first\u000aCLCK.ind after a (re)start, skip all elapsed-time checks and directly\u000abootstrap the scheduler from the reported FN.  The stale-clock\u000adetection remains fully active for every subsequent indication,\u000awhere last_clk_ind holds a real baseline.\u000a\u000aChange-Id: I25e76e02d29fd8f88130d15d0adfe8d90a017924\u000aFixes: 0199c108 (\"osmo-bts-trx: shut down on stale clock indication from transceiver\")\u000aRelated: OS#7021\u000a",
        "date" : "2026-06-24 02:39:46 +0700",
        "id" : "fcfc4e83eae5a810371ac97aaf8f38bb4af235d1",
        "msg" : "osmo-bts-trx: fix spurious shutdown on first CLCK.ind from osmo-trx",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/osmo-bts-trx/l1_if.h"
          },
          {
            "editType" : "edit",
            "file" : "src/osmo-bts-trx/scheduler_trx.c"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/osmo-bts-trx/scheduler_trx.c"
        ],
        "commitId" : "159b51ba32f171a11a3f1f0fbbc9d524fb7af6b3",
        "timestamp" : 1782243598000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "osmo-bts-trx: fix spurious clock skew shutdown after self-compensation\u000a\u000aWhen the BTS runs ahead of the transceiver (elapsed_fn < 0),\u000atrx_sched_clock() reschedules the timerfd to deliberately delay the\u000anext FN.  osmo_timerfd_schedule() resets the timerfd and discards any\u000aaccumulated expirations, but last_fn_timer.tv was left pointing at\u000athe previous callback.  The next trx_fn_timer_cb() then measures\u000aelapsed_us all the way back to that previous callback - spanning the\u000adeliberate delay (or any OS stall that preceded us) - and falsely\u000atrips the \"PC clock skew too high\" check, shutting the BTS down\u000afor no good reason.\u000a\u000aAdvance last_fn_timer.tv to the projected firing time of the\u000arescheduled timer so that the next callback measures roughly\u000aone FN interval, as expected.\u000a\u000aChange-Id: Icdb7db8abe70258ae008d9514b6608bd74bb2881\u000aAI-Assisted: yes (Claude)\u000aRelated: OS#6794\u000a",
        "date" : "2026-06-24 02:39:58 +0700",
        "id" : "159b51ba32f171a11a3f1f0fbbc9d524fb7af6b3",
        "msg" : "osmo-bts-trx: fix spurious clock skew shutdown after self-compensation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/osmo-bts-trx/scheduler_trx.c"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/common/l1sap.c"
        ],
        "commitId" : "53f0ec292a38e132f7a252fe6abfb932a5a4de18",
        "timestamp" : 1782740919000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "l1sap: fix duplicate RF RESOURCE INDICATION on clock bootstrap\u000a\u000aThe TTCN-3 test suite (ttcn3-bts-test) expects to receive exactly one\u000aRF RESOURCE INDICATION message from each TRX during the bootstrap stage,\u000awhile waiting for all TRX to come up and be configured by the BSC.\u000a\u000al1sap_interf_meas_report() fires whenever bts->gsm_time.fn % period is\u000a0, where period = intave * 104 (typically 624 frames).  Since CLCK.ind\u000awith FN=0 satisfies this condition, a report is sent at the very\u000abeginning of each clock epoch.\u000a\u000aThis was not a problem before commit fcfc4e83, because the first\u000aCLCK.ind from the transciever was effectively a no-op: with\u000alast_fn_timer.fn zero-initialised, the first indication at FN=0 yielded\u000aelapsed_fn=0 (not > MAX_FN_SKEW), and the catch-up loop (while fn !=\u000alast_fn_timer.fn) would not execute either.  Downlink scheduling only\u000astarted on the second CLCK.ind (at FN=102, which is > MAX_FN_SKEW),\u000aand 102 % 624 != 0, so no RF RESOURCE INDICATION was triggered.\u000a\u000afcfc4e83 changed the logic so that Downlink scheduling now begins\u000aimmediately on the first CLCK.ind, via an unconditional call to\u000atrx_setup_clock() -> bts_sched_fn(fn).  When fake_trx starts its frame\u000acounter from FN=0, this immediately triggers l1sap_interf_meas_report()\u000abecause 0 % 624 == 0.  A second report follows ~2.88s later when the\u000aperiodic timer reaches FN=624, making the bootstrap logic\u000ain ttcn3-bts-test unhappy.\u000a\u000aFix by shifting the trigger to (fn + 1) % period == 0, i.e. the report\u000afires at the last frame of each period rather than the first.  FN=0 now\u000ayields (0+1) % 624 = 1 != 0, suppressing the spurious bootstrap report.\u000aThe periodic behaviour and report cadence are otherwise unchanged.\u000a\u000aChange-Id: I6550178427b08e67c9763f0f37efff5b88960b1f\u000aRelated: fcfc4e83 (\"osmo-bts-trx: fix spurious shutdown on first CLCK.ind from osmo-trx\")\u000aAI-Assisted: yes (Claude)\u000a",
        "date" : "2026-06-29 20:48:39 +0700",
        "id" : "53f0ec292a38e132f7a252fe6abfb932a5a4de18",
        "msg" : "l1sap: fix duplicate RF RESOURCE INDICATION on clock bootstrap",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/common/l1sap.c"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "src/common/oml.c"
        ],
        "commitId" : "271a2764c74dd7b1751ac0c476f09d4fe7db4788",
        "timestamp" : 1782740942000,
        "author" : {
          "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
          "fullName" : "Vadim Yanitskiy"
        },
        "authorEmail" : "vyanitskiy@sysmocom.de",
        "comment" : "oml: validate Intave Parameter range in SET BTS ATTR\u000a\u000a3GPP TS 52.021 §9.4.24 defines valid range for the Intave Parameter\u000aas 1..31, matching the fixed size of the per-lchan interference sample\u000abuffer (interf_meas_dbm[31] in lchan.h).  Previously any uint8_t value\u000awas accepted without validation, meaning a buggy BSC could send\u000aintave=0 (silently disabling interference reporting) or intave>31\u000a(causing a buffer overflow in gsm_lchan_interf_meas_push()).\u000a\u000aLet's guard against that by NACKing the SET BTS ATTR message with\u000acause=NM_NACK_PARAM_RANGE if the value is outside the valid range.\u000a\u000aChange-Id: Id4d3353d4397aaa2517091b020d38ee15e084e2c\u000aAI-Assisted: yes (Claude)\u000a",
        "date" : "2026-06-29 20:49:02 +0700",
        "id" : "271a2764c74dd7b1751ac0c476f09d4fe7db4788",
        "msg" : "oml: validate Intave Parameter range in SET BTS ATTR",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "src/common/oml.c"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://jenkins.osmocom.org/jenkins/user/fixeria",
      "fullName" : "Vadim Yanitskiy"
    }
  ],
  "runs" : [
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=lc15,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=lc15,FIRMWARE_VERSION=origin%2Fnrw%2Flitecell15,WITH_MANUALS=0,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=lc15,FIRMWARE_VERSION=v2017.01,WITH_MANUALS=0,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=oc2g,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=oc2g,FIRMWARE_VERSION=origin%2Fnrw%2Foc2g,WITH_MANUALS=0,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=oct,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=oct+trx,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=femtobts_v2.7,WITH_MANUALS=0,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v2.4,WITH_MANUALS=0,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v3.0.1pre,WITH_MANUALS=0,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v3.1,WITH_MANUALS=0,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=sysmo,FIRMWARE_VERSION=superfemto_v5.1,WITH_MANUALS=0,a4=default,label=osmocom-master/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=trx,FIRMWARE_VERSION=master,WITH_MANUALS=0,a4=default,label=raspbian/11587/"
    },
    {
      "number" : 11587,
      "url" : "https://jenkins.osmocom.org/jenkins/view/All/job/master-osmo-bts/BTS_MODEL=trx,FIRMWARE_VERSION=master,WITH_MANUALS=1,a4=default,label=osmocom-master/11587/"
    }
  ]
}