Check the transport state first
The transport must progress from down through negotiation to opened before channels can communicate. A failed or permanently down transport points to the transport plug-in, its physical link, or its dependency initialization rather than to the client channel. The transport plug-in is responsible for:- Reading from and writing to the physical transport
- Reporting available read data and write space
- Translating core commands and payloads
- Closing the transport cleanly
Check channel state and callbacks
A channel is not ready merely because the open call returned a handle. Confirm that:- The requested edge, transport, and channel name match the remote endpoint.
- A connected notification is received.
- The receiver queues an intent large enough for the expected packet.
- A receive notification is invoked.
- The receiver calls the completion function.
- The sender receives a transmit-done notification.
Enable logging
The GLink core and loopback server expose logging control. The supported logging modes are:- Informational – Default informational messages
- Debug – Verbose protocol and state debugging
- Performance – Performance-only logging
Diagnose negotiation failures
Both endpoints independently start version negotiation. This is not a race: the transport is not opened until both sequences complete, and both sides converge on a compatible version and feature set. Check for:- No version acknowledgement
- A selected version of zero (no compatible version found)
- Features that are not accepted by the peer
- Negotiation beginning before the transport can reliably exchange commands
- A transport configuration that advertises incorrect supported versions
Diagnose buffer ownership
Track the private token passed at each stage:- Queue a receive intent.
- Receive notification with the data.
- Call the completion function.
- Receive transmit-done notification.
Subsystem restart symptoms
A restart can affect every channel connected to an edge. Confirm that the restart path:- Identifies the affected subsystem and its GLink edge
- Notifies dependent endpoints
- Closes or aborts affected channels
- Returns receive-intent and transmit private data
- Waits for cleanup before restart completion
- Reopens channels after the remote endpoint is available again

