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

Qdrouterd segfaults while connecting to neighbour router

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.1
    • 0.3
    • Container
    • None
    • Ubuntu 12.04 LTS x86_64, Gentoo 32 and 64 bit

    Description

      Using the following configuration on two nodes (designated "client" and "server"), the client will segfault while connecting the server:

      # Server config
      container {                                                                                                                                                                                                                                                                    
          worker-threads: 4                                                                                                                                                                                                                                                          
          container-name: Qpid.Dispatch.Router.Server                                                                                                                                                                                                                                
      }                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                     
      ssl-profile {                                                                                                                                                                                                                                                                  
          name: ssl-profile-name                                                                                                                                                                                                                                                     
      }                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                     
      listener {                                                                                                                                                                                                                                                                     
          addr: 0.0.0.0                                                                                                                                                                                                                                                              
          port: amqp                                                                                                                                                                                                                                                                 
          sasl-mechanisms: ANONYMOUS                                                                                                                                                                                                                                                 
      }                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                     
      listener {                                                                                                                                                                                                                                                                     
            role: inter-router                                                                                                                                                                                                                                                       
            addr: 0.0.0.0                                                                                                                                                                                                                                                            
            port: 20000                                                                                                                                                                                                                                                              
            sasl-mechanisms: ANONYMOUS                                                                                                                                                                                                                                               
      }                                                                                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                     
      router {
          mode: interior
          router-id: Router.Server
      }
      
      # Client config
      container {
          worker-threads: 4
          container-name: Qpid.Dispatch.Router.A
      }
      
      ssl-profile {
          name: ssl-profile-name
      }
      
      listener {
          addr: 0.0.0.0
          port: amqp
          sasl-mechanisms: ANONYMOUS
      }
      
      connector {
            role: inter-router
            addr: 192.168.0.12 # Address of server node
            port: 20000
            sasl-mechanisms: ANONYMOUS
      }
      
      router {
          mode: standalone
          router-id: Router.A
      }
      

      Note the the client router mode is standalone. Changing this to "interior" fixes the problem.

      The segfault takes place at router_node.c:70,

          DEQ_INSERT_TAIL(*ref_list, ref);
      

      and is caused by the attempt to dereference the "ref_list" pointer, which appears to be uninitialised or dangling.

      The router mode "standalone" may be invalid in this configuration , the process should not segfault!

      Attachments

        Activity

          People

            tross Ted Ross
            chris.richardson Chris Richardson
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: