<matrixBuild _class='hudson.matrix.MatrixBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='hudson.model.ParametersAction'><parameter _class='hudson.model.StringParameterValue'><name>BRANCH</name><value>master</value></parameter><parameter _class='hudson.model.StringParameterValue'><name>EMAIL_NOTIFICATIONS</name><value>jenkins-notifications@lists.osmocom.org laforge@gnumonks.org</value></parameter></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>179297</buildingDurationMillis><executingTimeMillis>179297</executingTimeMillis><executorUtilization>1.0</executorUtilization><subTaskCount>0</subTaskCount><waitingDurationMillis>8359</waitingDurationMillis><waitingTimeMillis>8359</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><originmaster _class='hudson.plugins.git.util.Build'><buildNumber>4761</buildNumber><marked><SHA1>3021739a6072c60295dcea08c160cde22b8f4eca</SHA1><branch><SHA1>3021739a6072c60295dcea08c160cde22b8f4eca</SHA1><name>origin/master</name></branch></marked><revision><SHA1>3021739a6072c60295dcea08c160cde22b8f4eca</SHA1><branch><SHA1>3021739a6072c60295dcea08c160cde22b8f4eca</SHA1><name>origin/master</name></branch></revision></originmaster><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>3086</buildNumber><marked><SHA1>a42f4a51c09fdc3c4f532ff07b806e26bf7e9fa1</SHA1><branch><SHA1>a42f4a51c09fdc3c4f532ff07b806e26bf7e9fa1</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>a42f4a51c09fdc3c4f532ff07b806e26bf7e9fa1</SHA1><branch><SHA1>a42f4a51c09fdc3c4f532ff07b806e26bf7e9fa1</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>3021739a6072c60295dcea08c160cde22b8f4eca</SHA1><branch><SHA1>3021739a6072c60295dcea08c160cde22b8f4eca</SHA1><name>origin/master</name></branch></lastBuiltRevision><remoteUrl>https://gerrit.osmocom.org/libosmocore</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><displayName>#4761</displayName><duration>179297</duration><estimatedDuration>172329</estimatedDuration><fullDisplayName>master-libosmocore #4761</fullDisplayName><id>4761</id><inProgress>false</inProgress><keepLog>false</keepLog><number>4761</number><queueId>94835</queueId><result>SUCCESS</result><timestamp>1776852608849</timestamp><url>https://jenkins.osmocom.org/jenkins/job/master-libosmocore/4761/</url><builtOn></builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tests/testsuite.at</affectedPath><affectedPath>src/core/osmo_io.c</affectedPath><affectedPath>tests/osmo_io/osmo_io_backpressure_test_uring.ok</affectedPath><affectedPath>tests/osmo_io/osmo_io_backpressure_test.c</affectedPath><affectedPath>tests/osmo_io/osmo_io_backpressure_test.ok</affectedPath><affectedPath>tests/Makefile.am</affectedPath><commitId>3021739a6072c60295dcea08c160cde22b8f4eca</commitId><timestamp>1776433625000</timestamp><author><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></author><authorEmail>vyanitskiy@sysmocom.de</authorEmail><comment>osmo_io: iofd_txqueue_dequeue(): fix double next-&gt;io_len decrement

The fill-up logic in iofd_txqueue_dequeue() was incorrectly
decrementing next-&gt;io_len twice: once when removing a buffer that
didn't fit, and again when assigning to msg_iovlen.  This may cause
next-&gt;io_len to reach 0 and trigger an assert at osmo_io.c:274:

  Assert failed next-&gt;io_len &gt; 0

Add separate osmo_io_backpressure_test to verify queue management
under network backpressure conditions.  Use separate .ok files for
poll vs io_uring backends since they produce different I/O patterns.
This unit test reproduces the assert when the fix is not applied.

Change-Id: Ia96e25d11d8d683fa9dd0c56bdac257992edd782
Fixes: 3c2a02db4 ("osmo-io: Put together message buffers when dequeued from tx queue")
Related: OS#6997
</comment><date>2026-04-17 20:47:05 +0700</date><id>3021739a6072c60295dcea08c160cde22b8f4eca</id><msg>osmo_io: iofd_txqueue_dequeue(): fix double next-&gt;io_len decrement</msg><path><editType>add</editType><file>tests/osmo_io/osmo_io_backpressure_test_uring.ok</file></path><path><editType>edit</editType><file>src/core/osmo_io.c</file></path><path><editType>add</editType><file>tests/osmo_io/osmo_io_backpressure_test.ok</file></path><path><editType>edit</editType><file>tests/testsuite.at</file></path><path><editType>edit</editType><file>tests/Makefile.am</file></path><path><editType>add</editType><file>tests/osmo_io/osmo_io_backpressure_test.c</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.osmocom.org/jenkins/user/fixeria</absoluteUrl><fullName>Vadim Yanitskiy</fullName></culprit><run><number>475</number><url>https://jenkins.osmocom.org/jenkins/job/master-libosmocore/a2=default,a3=default,arch=amd64,label=osmocom-master-debian9/475/</url></run><run><number>475</number><url>https://jenkins.osmocom.org/jenkins/job/master-libosmocore/a2=default,a3=default,arch=arm-none-eabi,label=osmocom-master-debian9/475/</url></run><run><number>4761</number><url>https://jenkins.osmocom.org/jenkins/job/master-libosmocore/a2=default,a3=default,a4=default,arch=amd64,label=io_uring/4761/</url></run><run><number>4761</number><url>https://jenkins.osmocom.org/jenkins/job/master-libosmocore/a2=default,a3=default,a4=default,arch=arm-none-eabi,label=io_uring/4761/</url></run></matrixBuild>