hyperledger/fabric · error

received nil message, ending chaincode support stream

Error message

received nil message, ending chaincode support stream

What it means

Returned by Handler.ProcessStream when the chat stream yields a nil message with no transport error — a protocol violation on the chaincode gRPC stream. The handler deliberately terminates the stream rather than loop on empty messages.

Source

Thrown at core/chaincode/handler.go:450

		in, err := h.chatStream.Recv()
		msgAvail <- &recvMsg{in, err}
	}

	go receiveMessage()
	for {
		select {
		case rmsg := <-msgAvail:
			switch {
			// Defer the deregistering of the this handler.
			case rmsg.err == io.EOF:
				chaincodeLogger.Debugf("received EOF, ending chaincode support stream: %s", rmsg.err)
				return rmsg.err
			case rmsg.err != nil:
				err := errors.Wrap(rmsg.err, "receive from chaincode support stream failed")
				chaincodeLogger.Debugf("%+v", err)
				return err
			case rmsg.msg == nil:
				err := errors.New("received nil message, ending chaincode support stream")
				chaincodeLogger.Debugf("%+v", err)
				return err
			default:
				err := h.handleMessage(rmsg.msg)
				if err != nil {
					err = errors.WithMessage(err, "error handling message, ending stream")
					chaincodeLogger.Errorf("[%s] %+v", shorttxid(rmsg.msg.Txid), err)
					return err
				}

				go receiveMessage()
			}

		case sendErr := <-h.errChan:
			err := errors.Wrapf(sendErr, "received error while sending message, ending chaincode support stream")
			chaincodeLogger.Errorf("%s", err)
			return err
		case <-keepaliveCh:

View on GitHub (pinned to 2736b63f8f)

Solutions

  1. Restart the chaincode to re-establish a well-behaved stream
  2. Check shim implementation/version for the nil-message bug
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/chaincode/handler.go:450 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of hyperledger/fabric@2736b63f8f (2026-09-04). Data as JSON: /api/errors/781dd0ca48cee668. Report an issue: GitHub.