My Oracle Support Banner

RP/MessageQ 4.0A - stack dump on AXPs - CR031769 (Doc ID 766398.1)

Last updated on FEBRUARY 07, 2025

Applies to:

Oracle MessageQ - Version 4.0 and later
Information in this document applies to any platform.
Information in this document applies to any platform

Goal

DESCRIPTION:

The following code dumps when run.  There are 2 files necessary in order to recreate this.  The first is a COM file to build the executable:

This does not happen on VAXes, and appears to be an "Alpha'sim".  Putting printfs appears to change register addresses, and circumvents  the stack dumps.
 
******* DMT.COM starts here *************
$cxx main.cxx
$ cxxlink [.axp]main,sys$input:/opt
dmq$entryrtl/share
$ dmtr :== $s:[rdurr.anew]main.exe
$ dmtr
******* DMT.COM ends here

******* MAIN.CXX starts here ********
#include <stdio.h>
#include <dmq$include:p_entry.h>
#include <dmq$include:p_symbol.h>

int main(int argc, char **argv) {

  //  UNCOMMENT THE FOLLOWING LINE TO PREVENT THIS PROGRAM FROM CRASHING
  //  printf("");

  q_address    my_primary_queue;
  q_address    my_secondary_queue;
  int32        attach_mode = PSYM_ATTACH_TEMPORARY;
  int32        q_type = PSYM_ATTACH_PQ;
  int32        dmq_status;
  int32        messages_flushed;

  dmq_status  = pams_attach_q(&attach_mode,
                              &my_primary_queue,
                              &q_type,
                              (char *) 0,    /*  No name necessary      */
                              (int32 *) 0,   /*  No name length         */
                              (int32 *) 0,   /*  Use default name space */
                              (int32 *) 0,   /*  No name space list len */
                              NULL,
                              NULL,
                              NULL);

  attach_mode = PSYM_ATTACH_TEMPORARY;
  q_type = PSYM_ATTACH_SQ;

  dmq_status  = pams_attach_q(&attach_mode,
                              &my_secondary_queue,
                              &q_type,
                              (char *) 0,    /*  No name necessary      */
                              (int32 *) 0,   /*  No name length         */
                              (int32 *) 0,   /*  Use default name space */
                              (int32 *) 0,   /*  No name space list len */
                              NULL,
                              NULL,
                              NULL);

  dmq_status = pams_detach_q(&my_secondary_queue,
                             (int32 *) 0,    /*  Use default detach opt */
                             (int32 *) 0,    /*  No detach opt list len */
                             &messages_flushed);
  printf("test1\n");
  pams_exit();
  printf("test2\n");
}		    

********* MAIN.CXX ends here*****

Run the com file and it will build, link and run the exe.  You will get the following error:

test1
test2

%SYSTEM-F-ACCVIO, access violation, reason mask=04, virtual address=000000007ABE8000, PC=FFFFFFFF808BF85C, PS=0000001B

  Improperly handled condition, image 
exit forced.
    Signal arguments:   Number = 0000000000000005
                        Name   = 000000000000000C
                                 0000000000000004
                                 000000007ABE8000
                                 FFFFFFFF808BF85C
                                 000000000000001B

  

Solution

To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!


In this Document
Goal
Solution


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.