Uploaded image for project: 'Qpid Proton'
  1. Qpid Proton
  2. PROTON-2843

[Go] Acknowledging a message on a closed receiver results in a segmentation fault

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • None
    • proton-c-0.40.0
    • go-binding
    • None

    Description

      Using the electron package when acknowledging messages (Accept(), Reject() or Release() on a ReceivedMessage) a segmentation fault occurs if the Receiver was already closed.

      This happens because the underlying link of the receiver gets freed which, according to the docs of pn_link_free, also frees any unsettled deliveries.

      As the actual acknowledgement needs to run in the engine goroutine the check for an active receiver has to happen inside the electron package.

      I'd suggest adding a check if the receiver is still alive in the injected function in func (rm *ReceivedMessage) acknowledge(status uint64) error.

      I plan to do a PR to fix this but it will take a couple of weeks until I get there as this is a low priority fix on our end.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            astitcher Andrew Stitcher
            ptaibel Patrick Taibel
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment