Skip to content

[BUG] BeginSidebandStream Requires Both Read and Write Monikers to Be Populated #1179

@anishpillay2002

Description

@anishpillay2002

Bug Report

The BeginSidebandStream method fails when either the read or write moniker is empty. To function correctly, this method requires both monikers to be populated with valid data. Currently, if either the read moniker or the write moniker is null or empty, the function returns an error instead of proceeding. This bug prevents the sideband stream from being initialized, even if one of the monikers is correctly provided.

Repro or Code Sample

Expected Behavior

The BeginSidebandStream method should be flexible enough to handle scenarios where either the read or write moniker is specified, but not necessarily both.

When only a read moniker is provided, the method should successfully initialize a read-only stream. The user should be able to perform read operations without the server hanging or returning errors.

When only a write moniker is provided, the method should successfully initialize a write-only stream. The user should be able to perform write operations without encountering the "Error writing to buffer" message.

Current Behavior

When only read monikers are specified, the gRPC server hangs. A session is successfully created, but the server becomes unresponsive as soon as a read or write operation is attempted. This prevents any further communication and effectively deadlocks the process.

When only write monikers are specified, the method immediately returns a "Error writing to buffer" message. This error occurs continuously upon any attempt to write data, making the write-only functionality unusable.

Possible Solution

Accept empty moniker if possible for the read and write and process the rest

Context

Our implementation is not generic and have to force either a read or write channel on the DAQ for systems that dont require them. There could be a case where we might need to buy a card since the card we use on the DAQ are all read only channels and we need to specify a write channel.

Your Environment

Client System: Ubuntu 24.04.2 LTS
Target System: NI Linux Real-Time 10.1
grpc-device version: v2.10.0
NI Driver version:
{
"software": [
{
"packageId": "ni-labview-realtime",
"packageVersion": "24.1.0.49362-0+f210",
"productName": "LabVIEW Real-Time"
},
{
"packageId": "ni-nve-rt",
"packageVersion": "24.1.0.49350-0+f198",
"productName": "Network Variable Engine"
},
{
"packageId": "ni-scan-engine",
"packageVersion": "24.1.0.49560-0+f408",
"productName": "NI Scan Engine"
},
{
"packageId": "ni-syscfg-runtime",
"packageVersion": "24.0.0.49281-0+f129",
"productName": "NI System Configuration"
},
{
"packageId": "ni-sysapi-remote",
"packageVersion": "24.0.0.49281-0+f129",
"productName": "NI System Configuration Remote Support"
},
{
"packageId": "ni-wireless-cert-management-webservice",
"packageVersion": "21.0.0.49444-0+f292",
"productName": "NI Wireless Certificate Management Web Service"
},
{
"packageId": "ni-daqmx",
"packageVersion": "24.0.0.49420-0+f268",
"productName": "NI-DAQmx"
},
{
"packageId": "ni-daqmx-driver-opc",
"packageVersion": "24.0.0.49417-0+f265",
"productName": "NI-DAQmx OPC Server"
},
{
"packageId": "ni-rdma",
"packageVersion": "24.0.0.49261-0+f109",
"productName": "NI-RDMA"
},
{
"packageId": "ni-rio",
"packageVersion": "24.0.0.49291-0+f139",
"productName": "NI-RIO"
},
{
"packageId": "ni-crio-ioscan",
"packageVersion": "24.0.0.49255-0+f103",
"productName": "NI-RIO IO Scan"
},
{
"packageId": "ni-rseries",
"packageVersion": "24.0.0.49237-0+f85",
"productName": "NI-RIO R Series Driver"
},
{
"packageId": "ni-rio-server",
"packageVersion": "24.0.0.49291-0+f139",
"productName": "NI-RIO Server"
},
{
"packageId": "ni-visa",
"packageVersion": "24.0.0.49405-0+f253",
"productName": "NI-VISA"
},
{
"packageId": "ni-visa-passport-enet",
"packageVersion": "24.0.0.49402-0+f250",
"productName": "NI-VISA ENET Passport"
},
{
"packageId": "ni-visa-passport-enet-serial",
"packageVersion": "24.0.0.49402-0+f250",
"productName": "NI-VISA ENET-ASRL Passport"
},
{
"packageId": "ni-visa-passport-gpib",
"packageVersion": "24.0.0.49402-0+f250",
"productName": "NI-VISA GPIB Passport"
},
{
"packageId": "ni-visa-lxi-discovery",
"packageVersion": "24.0.0.49402-0+f250",
"productName": "NI-VISA LXI Discovery Service"
},
{
"packageId": "ni-visa-passport-pxi",
"packageVersion": "24.0.0.49403-0+f251",
"productName": "NI-VISA PXI Passport"
},
{
"packageId": "ni-visa-passport-remote",
"packageVersion": "24.0.0.49402-0+f250",
"productName": "NI-VISA Remote Passport"
},
{
"packageId": "ni-visa-server",
"packageVersion": "24.0.0.49402-0+f250",
"productName": "NI-VISA Server"
},
{
"packageId": "ni-visa-passport-usb",
"packageVersion": "24.0.0.49402-0+f250",
"productName": "NI-VISA USB Passport"
},
{
"packageId": "ni-watchdog",
"packageVersion": "24.0.0.49306-0+f154",
"productName": "NI-Watchdog"
},
{
"packageId": "ni-pxiplatformservices",
"packageVersion": "24.0.0.49311-0+f159",
"productName": "PXI Platform Services"
},
{
"packageId": "ni-webservices-webserver-support",
"packageVersion": "24.1.0.49346-0+f194",
"productName": "Run-Time Engine for Web Services"
},
{
"packageId": "ni-sysmgmt-salt-minion-support",
"packageVersion": "24.0.0.49236-0+f84",
"productName": "SystemLink Client"
},
{
"packageId": "ni-varclient-rt",
"packageVersion": "24.1.0.49350-0+f198",
"productName": "Variable Client Support for LabVIEW RT"
},
{
"packageId": "ni-webdav-system-webserver-support",
"packageVersion": "20.0.0.49152-0+f0",
"productName": "WebDAV Server"
}
]
}

AB#3223959

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions