@@ -854,12 +854,12 @@ GetRemoteBackendWorkers(PGPROC *proc)
854854
855855sig_result = SendProcSignal (proc -> pid ,WorkerPollReason ,proc -> backendId );
856856if (sig_result == -1 )
857- return NIL ;
857+ goto signal_error ;
858858
859859mqh = shm_mq_attach (mq ,NULL ,NULL );
860860mq_receive_result = shm_mq_receive (mqh ,& msg_len , (void * * )& msg , false);
861861if (mq_receive_result != SHM_MQ_SUCCESS )
862- return NIL ;
862+ goto mq_error ;
863863
864864for (i = 0 ;i < msg -> number ;i ++ )
865865{
@@ -872,6 +872,13 @@ GetRemoteBackendWorkers(PGPROC *proc)
872872shm_mq_detach (mq );
873873
874874return result ;
875+
876+ signal_error :
877+ ereport (ERROR , (errcode (ERRCODE_INTERNAL_ERROR ),
878+ errmsg ("invalid send signal" )));
879+ mq_error :
880+ ereport (ERROR , (errcode (ERRCODE_INTERNAL_ERROR ),
881+ errmsg ("error in message queue data transmitting" )));
875882}
876883
877884static shm_mq_msg *
@@ -914,6 +921,9 @@ GetRemoteBackendQueryStates(PGPROC *leader,
914921params -> format = format ;
915922pg_write_barrier ();
916923
924+ /* initialize message queue that will transfer query states */
925+ mq = shm_mq_create (mq ,QUEUE_SIZE );
926+
917927/*
918928 * send signal `QueryStatePollReason` to all processes and define all alive
919929 * ones
@@ -941,7 +951,6 @@ GetRemoteBackendQueryStates(PGPROC *leader,
941951}
942952
943953/* extract query state from leader process */
944- mq = shm_mq_create (mq ,QUEUE_SIZE );
945954shm_mq_set_sender (mq ,leader );
946955shm_mq_set_receiver (mq ,MyProc );
947956mqh = shm_mq_attach (mq ,NULL ,NULL );