Uploaded image for project: 'Qpid Dispatch'
  1. Qpid Dispatch
  2. DISPATCH-1859

HTTP1: crash on access to null codec state on server-facing connection

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.15.0
    • 1.15.0
    • Protocol Adaptors
    • None

    Description

      {{Core was generated by `qdrouterd -c EA2.conf -I /home/kgiusti/work/dispatch/qpid-dispatch/python'. }}
      {{Program terminated with signal SIGSEGV, Segmentation fault. }}
      {{#0 0x00007f7ee3ee8f9b in h1_codec_request_state_get_connection (hrs=0x0) }}
      {{ at /home/kgiusti/work/dispatch/qpid-dispatch/src/adaptors/http1/http1_codec.c:1373 }}
      {{1373 return hrs->conn; }}

       

      {{Thread 1 (Thread 0x7f7ee30502c0 (LWP 1803184)): }}
      #0 0x00007f7ee3ee8f9b in h1_codec_request_state_get_connection (hrs=0x0) at /home/kgiusti/work/dispatch/qpid-dispatch/src/adaptors/http1/http1_c
      {{odec.c:1373 }}
      #1 0x00007f7ee3ee989d in h1_codec_tx_done (hrs=0x0, need_close=0x232b8c2) at /home/kgiusti/work/dispatch/qpid-dispatch/src/adaptors/http1/http1_
      {{codec.c:1560 }}
      #2 0x00007f7ee3ef43ae in qdr_http1_server_core_link_deliver (adaptor=0x1eba300, hconn=0x1f06690, link=0x21efdd0, delivery=0x21af8d0, settled=fal
      {{se) at /home/kgiusti/work/dispatch/qpid-dispatch/src/adaptors/http1/http1_server.c:1389 }}
      #3 0x00007f7ee3eeb7ba in _core_link_deliver (context=0x1eba300, link=0x21efdd0, delivery=0x21af8d0, settled=false) at /home/kgiusti/work/dispatc
      {{h/qpid-dispatch/src/adaptors/http1/http1_adaptor.c:570 }}
      #4 0x00007f7ee3f54a57 in qdr_link_process_deliveries (core=0x1e34b00, link=0x21efdd0, credit=4) at /home/kgiusti/work/dispatch/qpid-dispatch/src
      {{/router_core/transfer.c:167 }}
      #5 0x00007f7ee3eeb6bf in _core_link_push (context=0x1eba300, link=0x21efdd0, limit=4) at /home/kgiusti/work/dispatch/qpid-dispatch/src/adaptors/
      {{http1/http1_adaptor.c:551 }}
      {{#6 0x00007f7ee3f32a54 in qdr_connection_process (conn=0x1f1bcd0) at /home/kgiusti/work/dispatch/qpid-dispatch/src/router_core/connections.c:413 }}
      #7 0x00007f7ee3ef1969 in _handle_connection_events (e=0x1e7a200, qd_server=0x1d02990, context=0x1f06690) at /home/kgiusti/work/dispatch/qpid-dis
      {{patch/src/adaptors/http1/http1_server.c:526 }}
      #8 0x00007f7ee3f6df52 in handle_event_with_context (e=0x1e7a200, qd_server=0x1d02990, context=0x1f066d0) at /home/kgiusti/work/dispatch/qpid-dis
      {{patch/src/server.c:804 }}
      #9 0x00007f7ee3f6df8f in do_handle_raw_connection_event (e=0x1e7a200, qd_server=0x1d02990) at /home/kgiusti/work/dispatch/qpid-dispatch/src/serv
      {{er.c:810 }}
      #10 0x00007f7ee3f6eebf in handle (qd_server=0x1d02990, e=0x1e7a200, pn_conn=0x0, ctx=0x0) at /home/kgiusti/work/dispatch/qpid-dispatch/src/server
      {{.c:1090 }}
      {{#11 0x00007f7ee3f6efd3 in thread_run (arg=0x1d02990) at /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1122 }}
      {{#12 0x00007f7ee3f70351 in qd_server_run (qd=0x1c123d0) at /home/kgiusti/work/dispatch/qpid-dispatch/src/server.c:1484 }}
      #13 0x0000000000402604 in main_process (config_path=0x7ffc97ce74c9 "EA2.conf", python_pkgdir=0x7ffc97ce74d5 "/home/kgiusti/work/dispatch/qpid-dis
      {{patch/python", test_hooks=false, fd=2) at /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:113 }}
      #14 0x00000000004030d5 in main (argc=5, argv=0x7ffc97ce67a8) at /home/kgiusti/work/dispatch/qpid-dispatch/router/src/main.c:367 }}{{

       

      The crash is due to the client's request not completing until after the servers response has been fully received and the server has closed the connection to indicate EOM.

      What appears to be happening is the client's entire message body has arrived and been forwarded to the server but the message is not marked "receive complete" (next stream data == "need more").  The server sees the entire message, unaware that the corresponding AMQP message is incomplete, and sends its response and closes the connection.  After the connection is closed the core signals the request message is complete and schedules qd_connection_process which attempts to finish up the now deleted request.

      Attachments

        Activity

          People

            kgiusti Ken Giusti
            kgiusti Ken Giusti
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: