BETA VERSION

TotalView(TM)
multiprocess debugger

Release Notes
Version 3X.9.0-2 May 3, 1999

 

Etnus, the tools unit of Dolphin Interconnect Solutions Inc., announced a corporate name change to Etnus Inc., effective Jan. 1, 1999. Etnus is a wholly owned subsidiary of Dolphin Interconnect Solutions. The TotalView manuals and other material contained in this release have not yet been fully updated to reflect this change.

These Release Notes for TotalView 3X.9.0-2 contain important information about requirements that affect your TotalView 3X.9.0-2 software, and license. Please read these Release Notes to understand how this information applies to your installation!

This document describes changes made since the release of TotalView 3.8.1. For this beta release, we are still using TotalView User's Guide, Version 3.8.1, December 1998, and the TotalView Installation Guide, Version 3.8.1, December 1998.


Contents

Introduction: Platform Tags and Platform Names
Chapter 1: What's New
Chapter 2: TotalView 3.9 Supported Platforms and System Requirements
Other Platforms
EXTREMELY IMPORTANT: Digital UNIX Patch Procedures
Apogee 4.0 Compiler Patch Procedures
Portland Group HPF 2.4 Supported Configurations
Portland Group HPF 2.4 Compiler Patch Procedures
IBM PE Message Queue Display
License Management Issues
Chapter 3: TotalView News
Chapter 4: Known Problems
Reporting Problems
How to Contact Us
Notices

Introduction: Platform Tags and Platform Names

The table below shows the tag we give supported platforms for brief reference, the official name of the platform, and the TotalView version supporting each platform. Click the correct platform name to see the system requirements.

Platform tag Platform name TotalView version
ALPHA Alpha Digital UNIX 3X.9.0-2
IRIX6-MIPS SGI IRIX 6.x MIPS 3X.9.0-2
RS6000 RS/6000 Power AIX 3X.9.0-2
SUN4 SPARC SunOS 4 (Solaris 1.x) 3X.9.0-2
SUN5 SPARC SunOS 5 (Solaris 2.x) 3X.9.0-2
SUN5-X86 Intel X86 SunOS 5 (Solaris 2.x) 3X.9.0-2
CS2 QSW CS-2 (based on SPARC Solaris 2.5.2 or 2.6) 3X.9.0-2

Chapter 1: What's New

TotalView 3.9 supports the following new features:


Array Data Filtering for All Platforms

In variable windows for integer and real arrays you can edit the new Filter field to contain the criterion for filtering the array. Your filtering options are:

Filtering by Comparison

Specify comparisons with the following format:

<operator><value>

where <operator> is one of the following:

<    or  .lt.
Less than
<=  or  .le.
Less than or equal
>    or  .gt.
Greater than
>=  or  .ge.
Greater than or equal
==  or  .eq.
Equal
!=   or  .ne.
Not equal

and where <value> is one of the following:

Filter: < 25u
Filtering by Range of Values

Specify range expressions using the format:

    [>]<min-value>:[<]<max-value>

where the low and high range values can include the operators '>' and '<' respectively to specify an exclusive range. Thus the range specification, ">100:<200", would mean show all the elements of the array whose value is greater than 100 and less than 200.

<min-value> and <max-value> must be constant integers or real numbers.

TotalView applies the filter criterion to each member of the array displayed in the variable window. If the result of the Boolean expression when applied to the value of the array element is true or if the member value falls within the specified range, that array element appears in the resulting variable window.

Before evaluating the simple filter expression, TotalView may do some data type conversions to the array values or the filter operand. While doing so TotalView modifies a copy of the data, never the array values themselves. The following conversion rules apply:

TotalView displays the filtered array in the variable window.

You can make some changes to the data window that cause it to need updating. These include changing the slice expression, changing the data type of the array, or changing the value of a data element. If you change any of these, TotalView reevaluates the filter against the array.

For more information check the on-line help in the variable window.

Restrictions

Fast Single-stepping for ALPHA, IRIX6-MIPS, and RS6000 Platforms

TotalView 3.9 implements fast single-stepping of one-line statements that contain loops and conditions. This feature speeds up single-stepping in all of the languages TotalView supports, but is most useful for F90 array assignment statements.


Compiled Expressions for the IRIX6-MIPS platform

TotalView 3.9 includes the IRIX6-MIPS expression compiler. This feature does not use any MIPS-IV-specific instructions. It does use MIPS-III instructions freely. It fully supports -n32 and -64 executables.

To enable compiled expressions in an invocation of TotalView: 

-compileExpressions=true

You can use the X resource if you prefer.

This option also tells TotalView to find or allocate patch space in your program for code fragments generated by the expression compiler.

For general instructions on using patch space allocation controls with compiled expressions, consult Compiled Expression Patch Space Allocation Controls on ALPHA, IRIX6-MIPS, and RS6000 Platforms.

If you enable compiled expressions, TotalView compiles, rather than interpreting, expressions both in the TotalView expression window and in conditional breakpoints. To see the difference between compiled expressions and interpreted expressions, execute a fairly long loop in the expression window, both with and without compiled expressions enabled.  See TotalView User's Guide, chapter 8, section "Interpreted vs. Compiled Expressions."

Compiled patches on IRIX6-MIPS work dependably only with simple, single-process programs.

If you enable compiled patches on IRIX6-MIPS with a multiprocess program, you must use static patches.

For example, if you link a static patch space into an IRIX MPI  program and run the program under TotalView's control, TotalView should let you debug it. If you attach to a previously started MPI job, however, even static patches won't let the program run properly.

If TotalView still fails to work properly with the static patch space, then you probably can't use compiled patches with your program.


Dynamically Loaded Library Debugging Support for ALPHA, IRIX6-MIPS, RS6000, SUN5, SUN5-X86 and CS2 Platforms

TotalView 3.9 supports automatic acquisition of dynamic libraries linked into the program at run time.  These are the ones you open using "dlopen" (or, on RS6000, "load" and "loadbind").

TotalView automatically detects these calls,  then loads the symbol table from the newly loaded libraries and plants any enabled saved breakpoints for these libraries. TotalView then decides whether to ask you about stopping the process to plant breakpoints. It decides according to the first applicable rule in the list below.

  1. If the "ask_on_dlopen" flag is not set, TotalView doesn't ask you about stopping.
  2. If one or more of the strings in the "DLL Do Query on Load" list is a suffix of the full library name (including path), TotalView asks you about stopping.
  3. If one or more of the strings in the "DLL Don't Query on Load" list is a prefix of the full library name (including path), TotalView doesn't ask you about stopping.
  4. If the newly loaded libraries have any saved breakpoints, TotalView doesn't ask you about stopping.
  5. If none of the rules above apply, TotalView asks you about stopping.

If TotalView decides to ask you about stopping, it displays a dialog box. Indicate whether or not to stop the process. If TotalView doesn't ask you about stopping, or if it asked and you answered "don't stop," it continues the process. Otherwise, it stops the process so you can add breakpoints.

Control the "ask_on_dlopen" flag by doing either or both of the following:

You can set the "DLL Do Query on Load" and "DLL Don't Query on Load" lists initially from the X resources:

The values of the X resources should be space-separated lists of the prefixes to be used. If you change the dllIgnorePrefix, you probably want to copy the default values into the new list.

After starting TotalView, you can change these lists using the "Set DLL Do Query on Load" and "Set DLL Don't Query on Load" commands in the "Display/Directory/Edit" menu in the process window.

The breakpoint file written by this version of TotalView is upward compatible with that written by TotalView 3.8.  Breakpoint files written by this version will not, however, be readable by previous versions of TotalView if they contain any breakpoints in dynamic libraries.

Known problems and limitations

A program to test this functionality is included here.

dlopen.c:

------------------------------cut here------------------------------
/* Compile as follows... */
/* IBM: cc -o dlopen dlopen.c -g */
/* SGI: cc -n32 -o dlopen dlopen.c -g */
#include <stdio.h>
#include <dlfcn.h>
void usage (char *prog)
{
  fprintf (stderr, "usage: %s library.so symbol...\n", prog ? prog : "???");
  exit (1);
}
main (int argc, char** argv)
{
  void *handle;
  int i;
  if (argc <= 1)
    usage (argv[0]);
  handle = dlopen(argv[1],RTLD_LAZY);
  if (!handle)
    {
      fprintf (stderr, "dlopen() failed: %s\n", dlerror());
      exit (1);
    }
  printf ("handle=0x%lx\n", (long) handle);
  for (i = 2; i < argc; i++)
    {
      void *address = dlsym(handle, argv[i]);
      printf ("%s at 0x%lx\n", argv[i], (long) address);
    }
  dlclose (handle);
}
------------------------------cut here------------------------------

Test on IBM:

/usr/toolworks/totalview.3X.9.0-2/rs6000/bin/totalview dlopen -a \
    /usr/toolworks/totalview.3X.9.0-2/rs6000/shlib/libtvmpich.so \
    mqs_version_string 

OpenMP for the ALPHA Platform

OpenMP support for the ALPHA platform consists of two main features:

When an OpenMP program is running, the actual stack of the master thread and of a typical worker thread looks roughly like this:

               Master Thread Stack             Worker Thread Stack
               [C]   _OtsEnterParallelOpenMP   [f77] _24_compute_pi_
               [f77] compute_pi_               [C]   slave_name
               [C]   main                      [C]   thdBase
                     __start

When TotalView displays this stack, it adds a stack back link token to the worker stack, making the stack back traces look like this:

               Master Thread Stack             Worker Thread Stack
               [C]   _OtsEnterParallelOpenMP   [f77] _24_compute_pi_
               [f77] compute_pi_               P==>  compute_pi_ (thread 1)
               [C]   main                      [C]   slave_name
                     __start                   [C]   thdBase

If you select the stack back link token, the program window switches to the master thread, allowing you to see the true calling context of the worker thread routine.

TotalView stores variables declared in OMP THREADPRIVATE common blocks at different locations in different threads, so that they can have different values in each thread. It is therefore important when viewing such a variable to consider the thread from which you are looking. To facilitate this, TotalView displays the value for these variables in the thread from which you created the data window.

So, if you were to dive on the variable x in the example below from a process window belonging to the master thread, you would see one value for x, whereas if you were to dive on x from a slave thread process window, you would see a different value. In either case the window's title bar contains the information that this is a Thread Static variable, and the window's color is that of the appropriate thread.

Following is a short test program that you can use to demonstrate these features. It gets a segmentation violation in one of the threads (in subroutine crash), and you can explore the stack and look at x, a thread private variable.

------------------------------cut here------------------------------
C Simple OpenMP program
C For the Alpha
C f90 -omp -g -o omp-simple omp-simple.f 
        program compute_pi
        integer n, i
        double precision w, x, sum, pi, f, a
        common /fred/ x, fooble, barf
C$OMP THREADPRIVATE (/fred/)

C function to integrate
          f(a) = 4.d0 / (1.d0 + a*a)
          n = 1000
          fooble = 0
C calculate the interval size
          w = 1.0d0/n
          sum = 0.0d0

C Try to force four threads
          call omp_set_num_threads (4)
          call omp_set_dynamic (.false.)

C$OMP PARALLEL DO SHARED(w)
C$OMP& REDUCTION(+: sum)
          do i = 1, n
             x = w * (i - 0.5d0)
             sum = sum + f(x)
             if (i .eq. 800) then
                call crash
             end if
          enddo
          pi = w * sum
          print *, 'computed pi = ', pi
          stop
        end 
        subroutine crash
        integer i
        pointer (ip,i)
        ip = 0
        i = 0
        end
------------------------------cut here------------------------------

QSW RMS 2.x Automatic Process Acquisition for the ALPHA Platform

TotalView now supports the Quadrics' RMS2 resource management system, which is used on ALPHA clusters connected with the QSW switch technology.

This allows TotalView to

Starting a job under TotalView control

To start a parallel job under the control of TotalView, use TotalView as though you were debugging the prun command.

  1. If you normally start your job with

  2.     % prun -n4 foo
instead use
        % totalview prun -a -n4 foo
TotalView then shows you the source code for the main program in prun
  1. Let prun execute by using

  2.     Go/Halt/Step/Next/Hold -> Go Process (g)

As soon as prun has acquired the necessary resources to execute the job, TotalView starts remote servers on the appropriate nodes using the normal remote server startup mechanism. (See TotalView User's Guide, chapter 4, section "Starting the Debugger Server for Remote Debugging.")

After the remote servers start, TotalView acquires the processes which make up the parallel job and asks whether you wish to stop them before they enter main.

  1. If you do not have a saved breakpoint file for the current program and want to set breakpoints before the program runs, request that the processes be stopped. Otherwise, if you are expecting a crash, for instance, let the processes run.
Attaching to an executing parallel job
  1. To attach to an executing parallel job:
    Start TotalView without any arguments.
  1. Then use
    Show All Unattached Processes (N)
in the root window to bring up the "Processes that TotalView doesn't own" window. This displays the list of processes which TotalView is not yet debugging.
  1. Dive on the prun command in this window to attach to the whole parallel job.
Restarting a parallel job

As usual you can kill a job and restart from the beginning by using

Arguments/Create/Signal -> Restart Program

This terminates all of the parallel processes and the initial prun process and then restarts the prun process to spawn the parallel program again.

If you wish to preserve breakpoints in your code, save them to a file before you restart the program, using

STOP/BARR/EVAL/GIST -> Save All Action Points

TotalView automatically reloads them when it restarts the program.

Restarting a program should be faster than starting from scratch, since the TotalView servers remain in place and don't need to be restarted.

Problems and Limitations

In this release, TotalView uses "rsh" as a default when it starts its servers.  Therefore, ensure that you can rsh to the nodes on which your parallel program runs. You can change the command used to start the remote servers using the "Server Launch Window" command in the TotalView root window.   See TotalView User's Guide, chapter 4, section "Changing the Options."

MPI support for message queue display over the network is in a dynamic library which Compaq must supply. Until this library is available, TotalView can't display MPI message state information.


IRIX  6.5 pthreads Package for the IRIX6-MIPS Platform

TotalView 3.9 supports IRIX 6.5 pthreads. This support is transparent.


Compiler-generated Parallelism on the IRIX6-MIPS Platform

TotalView 3.9 supports compiler-generated parallelism using the IRIX6-MIPS Automatic Parallelization Option (APO) (compiler options -pfa and -pca) or IRIX6-MIPS Parallelization Directives. This support is transparent.


Shared Memory Code for the IRIX6-MIPS Platform

TotalView now supports the Shared Memory (shmem) library.

To debug a shmem program, follow these steps:

    1.   Link with the dbfork library.

Since the shmem library starts pes using the fork call, TotalView requires that the dbfork library be available for the forked programs. See TotalView User's Guide, appendix A, "Linking with the dbfork Library."

    2.   Run TotalView on your program.

    3.   Set at least one breakpoint.

The startup call start_pes(n) creates n new processes. The new processes return from the start_pes call in each new pe, but the original process never does return. Therefore, next or step commands directly into or over the original call also won't return. To debug shmem programs successfully, you need to set at least one breakpoint somewhere after the start_pes(n) call. It is simplest just to set a breakpoint immediately after it.


Compiled Expression Patch Space Allocation Controls for ALPHA, IRIX6-MIPS, and RS6000 Platforms

Until this release, you could enable or disable compiled expressions and tell TotalView to allocate patch space with the command-line switch:

-compileExpressions=true|false  (on ALPHA and RS6000)
 
-compileExpressions=true|false  (on IRIX6-MIPS)

or with the corresponding X resource.

This option also tells TotalView to find or allocate patch space in your program for code fragments generated by the expression compiler.

If you enabled compiled expressions, TotalView put the code fragments in a patch space. Furthermore, it allocated the area dynamically, when TotalView either started your program or attached to an existing process. Finally, TotalView always allocated the patch space at a default location and with a size of 1 MB.

With this release, TotalView lets you:

To tell TotalView to allocate the patch space dynamically at <address>, use

    -patch_area_base <address>

This doesn't affect patch space you allocate statically, which stays where your program specifies.  See below.

To tell TotalView to set the length of the patch space to <length>, use

    -patch_area_length <length>

Or, to control these parameters using X defaults file entries, use

    totalview*patchAreaAddress:  <address>
    totalview*patchAreaLength: <length>

And, as always, you can also pass the X resource strings on the command line:

    -patchAreaAddress=<address>
    -patchAreaLength=<length>

To provide a static patch space in your program, include a data object named TVDB_patch_base_address in a C module in your program.

To assure that the area is properly aligned, declare the patch space as an array of doubles:

#define PATCH_LEN 0x100000 /* 1 megabyte -- size TV expects */ 
double TVDB_patch_base_address [PATCH_LEN / sizeof(double)]

To specify some size other than the default 1MB for your patch space, either

or

Passing the length on the command line or in the .Xdefaults file may be more straightforward, but it can also be hazardous--if you're using a short patch space and you forget to pass the length, TotalView writes off the end of the patch space.

To set the value by defining a special symbol in your program:

#define PATCH_LEN my_length /* Some size other than 1MB */
double TVDB_patch_base_address [PATCH_LEN / sizeof(double)];
double TVDB_patch_end_address [1]

This may not work on all systems. Some compilers may reorder user data objects, in which case TVDB_patch_end_address may not follow immediately after TVDB_patch_base_address, and in fact may even precede it in memory. Hence, if you want to use this technique for specifying the patch space end, verify that it actually works correctly with your particular C compiler.

To do so, use printf() to display the addresses of TVDB_patch_base_address and TVDB_patch_end_address and verify that they are as you expect.

If your C compiler doesn't leave the variables in the order you specified, you must write the module containing the patch space declaration in assembler, in order to control the precise order or allocation of the variables. This is only necessary if you want to provide a patch space size other than the default 1 MB.  If you leave the size at 1 MB, then you don't need to define the end variable at all.

IRIX6-MIPS users please also see Compiled Expression Support on the IRIX6-MIPS Platform.


Chapter 2: TotalView 3.9 Supported Platforms and System Requirements

To run TotalView on your system, you must have the correct hardware configuration and the correct software installed.

Software requirements include the correct:

Hardware requirements include the correct:

See Introduction: Platform Tags and Platform Names for the translation from the Platform Tag to the Platform Name. Select the correct platform name for your system to view the system requirements. The TotalView Version column shows the supported version of TotalView for a given platform.


ALPHA--Alpha Digital UNIX

To run TotalView 3.9 for Alpha Digital UNIX systems, sites must have the following:

SOFTWARE REQUIREMENTS:

HARDWARE REQUIREMENTS:

ADDITIONAL REQUIREMENTS:

Specific TotalView 3.9 features have the following additional requirements:

RESTRICTIONS:


IRIX6-MIPS--SGI IRIX 6.x MIPS

To run TotalView 3.9 for SGI IRIX 6.x MIPS systems, sites must have the following:

SOFTWARE REQUIREMENTS:

HARDWARE REQUIREMENTS:

ADDITIONAL REQUIREMENTS:

Specific TotalView 3.9 features have the following additional requirements:

RESTRICTIONS:

MPICH 1.1.0 Patch for IRIX6-MIPS Users

If you are using MPICH 1.1.0 on the IRIX6-MIPS platform, then the standard MPICH patch 2534 is not sufficient.  Apply the following patch instead. See the README file listed below for directions on how to patch your MPICH 1.1.0 sources. You'll need the following two files from ftp://ftp.etnus.com/support/toolworks/mpich/ :

ftp://ftp.etnus.com/support/toolworks/mpich/README
ftp://ftp.etnus.com/support/toolworks/mpich/mpich-1.1.0-update.tar

If you do not apply the above patch, TotalView can't display the MPICH message queues.


RS6000--RS/6000 Power AIX

To run TotalView 3.9 for RS/6000 Power AIX systems, sites must have the following:

SOFTWARE REQUIREMENTS:

HARDWARE REQUIREMENTS:

ADDITIONAL REQUIREMENTS:

Specific TotalView 3.9 features have the following additional requirements:

RESTRICTIONS:


SUN4--Sparc SunOS 4 (Solaris 1.x)

To run TotalView 3.9 for Sparc SunOS 4 (Solaris 1.x) systems, sites must have the following:

SOFTWARE REQUIREMENTS:

HARDWARE REQUIREMENTS:

ADDITIONAL REQUIREMENTS:

Specific TotalView 3.9 features have the following additional requirements:

RESTRICTIONS:


SUN5--Sparc SunOS 5 (Solaris 2.x)

To run TotalView 3.9 for Sparc SunOS 5 (Solaris 2.x) systems, sites must have the following:

SOFTWARE REQUIREMENTS:

HARDWARE REQUIREMENTS:

ADDITIONAL REQUIREMENTS:

Specific TotalView 3.9 features have the following additional requirements:

  • C compiler:
  • C++ compiler:
  • FORTRAN 77 compiler:
  • Fortran 90 compiler:
  • Portland Group HPF 2.4 (see RESTRICTIONS below)
  • MPICH version 1.1.0
  • MPICH version 1.1.1
  • ORNL PVM version 3.3.11 (See the PVM home page at http://www.epm.ornl.gov/pvm/pvm_home.html for more information on PVM.)
  • RESTRICTIONS:


    SUN5-X86--Intel X86 SunOS 5 (Solaris 2.x)

    To run TotalView 3.9 for Intel X86 SunOS 5 (Solaris 2.x) systems, sites must have the following:

    SOFTWARE REQUIREMENTS:

    HARDWARE REQUIREMENTS:

    ADDITIONAL REQUIREMENTS:

    Specific TotalView 3.9 features have the following additional requirements:

  • C compiler:
  • C++ compiler:
  • FORTRAN 77 compiler:
  • MPICH version 1.1.0
  • MPICH version 1.1.1
  • ORNL PVM version 3.3.11 (See the PVM home page at http://www.epm.ornl.gov/pvm/pvm_home.html for more information on PVM.)
  • RESTRICTIONS:


    CS2--QSW CS-2 (based on Sparc Solaris 2.5.1 or 2.6)

    To run TotalView 3.9 for QSW CS-2 (based on Sparc Solaris 2.5.1 or 2.6) systems, sites must have the following:

    SOFTWARE REQUIREMENTS:

    HARDWARE REQUIREMENTS:

    ADDITIONAL REQUIREMENTS:

    Specific TotalView 3.9 features have the following additional requirements:

    RESTRICTIONS:


    Other Platforms

    TotalView is available for a variety of platforms and you can use it to debug programs on the native platform or on remote systems, such as parallel processors, supercomputers, or digital signal processor boards.

    If TotalView is not yet available for your system configuration, please contact Etnus, Inc. about porting TotalView to suit your needs.


    EXTREMELY IMPORTANT: Digital UNIX Patch Procedures


    **************************************************
    NOTICE TO ALL DIGITAL UNIX TOTALVIEW CUSTOMERS
    **************************************************

    All versions of TotalView 3.4, 3.7, 3.8 and 3.9 for Digital UNIX versions V4.0, V4.0A, V4.0B, V4.0C, and V4.0D, require that you patch the Digital UNIX operating system before running TotalView. You must apply the entire patch kit specified; partial patch kits are not supported.

    This describes the procedures you must follow to patch your Digital UNIX V4.0, V4.0A, V4.0B, V4.0C, and V4.0D systems. Digital UNIX V4.0E requires an additional patch.

    Failure to patch your Digital UNIX operating system before running TotalView will result in system crashes, system hangs, hung and unkillable processes, and TotalView malfunctions.

    Do not run TotalView without first patching your Digital UNIX V4.0-based system!

    Note: The patch procedure requires that you have "root" user privileges on your system(s).

    Patch files include an operating system version, a patch number and a patch date. For example, the patch file named "duv40bas00007-19980514.tar " is a patch file for Digital UNIX 4.0B, with a patch number of "00007" representing the patch level, and a patch date of "19980514".

    No matter what patch level you actually install, the patch contains all the prior patches up to and including the current patch. Install the latest patch to get the correct version of the operating system and runtime libraries required to run TotalView. Follow the step-by-step directions below to download the software and prepare to install the patch kit.

    Retrieving and Applying the Digital UNIX V4.0x Aggregate ECO

    Step 1: Retrieve the DUNIX V4.0 Aggregate ECO files and save them to your system using the following procedure:

    ftp://ftp.service.digital.com/public/dunix

    v4.0/
    v4.0a/
    v4.0b/
    v4.0c/
    v4.0d/
    v4.0e/

    duv<version>as<number>-<date>.<extension>

    where:

    <version> is 40, 40a, 40b, 40c, 40d, or 40e
    <number> is a 5-digit number with leading zeroes,
    <date> is in the format yyyymmdd
    <extension> is CHKSUM, CONTENTS, README, pdf (or ps), or tar

    PatchInstallGuide.htm
    PatchInstallGuide.pdf

    Save the .pdf patch installation procedures to your system, or use your Web browser to read the HTML version.

    Step 2: Print the patch procedure documentation contained in the ".README" and ".ps" files, or, for Digital UNIX 4.0D and 4.0E, in the .htm or .pdf files.

    Step 3: Follow the directions contained in the patch procedure documentation and install this patch on your Digital UNIX V4.0x system(s). Perform this procedure in single-user mode, rebuild your kernel, and reboot your system.

    Minimum Patch Level for 4.0D Systems

    If you are patching a Digital UNIX 4.0D system, use patch kit "DUV40DAS00003-19981208" or later. Earlier patch kits do not contain all of the required Digital UNIX 4.0D patches.

    Additional Patches for Digital UNIX 4.0E

    If you are using Digital UNIX 4.0E, you should be able to debug pthread programs fairly reliably. The libpthread.so and libpthreaddebug.so libraries still contain some bugs, however.

    GETTING HELP WITH THE PATCH PROCEDURES

    If you need help following these procedures or have any questions, follow the directions for Reporting Problems.


    Apogee 4.0 Compiler Patch Procedures

    The Apogee 4.0 compilers require a patch that brings the compiler version up to 4.010 (or later). You must obtain this patch directly from Apogee Software Inc.  To get the Apogee 4.0 compiler patches for the SPARC, visit the Apogee ftp site at ftp://ftp.apogee.com/pub/users/apogee/patches/SPARC/ and read the README file.


    Portland Group HPF 2.4 Supported Configurations

    The following table lists the supported Portland Group HPF 2.4 compiler runtime configurations by platform.

    Platform Name MPICH IBM PE RPM SMP
    SGI IRIX 6.x MIPS OK N/A OK OK
    RS/6000 Power AIX N/T OK OK (Needs patch) N/S
    Sparc SunOS 5 (Solaris 2.x) OK N/A OK (Needs patch) OK (Needs patch)

    Key:

    Portland Group HPF 2.4 Compiler Patch Procedures

    Some of the Portland Group HPF 2.4 distribution libraries for the RS/6000 Power AIX and Sparc SunOS 5 (Solaris 2.x) platforms require a patch to enable debugging HPF programs using TotalView. You need this patch only if you are using the HPF rpm or smp run time support. The four libraries that require patching are:

    All libraries require a new version of the module "tvdebug.o". You can download and install fixed versions of these modules from our support site. Download the following files and save them to your system:

    Follow the directions contained the "PGI_HPF_2.4_patch.README" file to install the "tvdebug.o" module in these libraries.


    IBM PE Message Queue Display

    TotalView supports the Message Queue Display (MQD) feature when used with the threaded version of the IBM MPI libraries that are part of the IBM Parallel Environment (PE). PE version 2.2 and the non-threaded PE 2.3 and 2.4 libraries can't provide TotalView with the necessary information for the MQD feature, however, Automatic Process Acquisition (APA) is supported in PE 2.2, 2.3, and 2.4. The following table summarizes TotalView's IBM PE support:

    IBM PE version APA Support? MQD Support
    2.2 Yes No
    2.3 Yes Threaded MPI only
    2.4 Yes Threaded MPI only

    Message Queue Display Debugging Dynamic Library

    Each version of the IBM PE library requires a separate MQD debugging dynamic library for use with TotalView. This section explains how TotalView chooses the correct MQD debugging dynamic library.

    When TotalView recognizes that it is dealing with an IBM MPI code, it searches for a MQD dynamic library to load capable of handling the appropriate IBM MPI implementation. The IBM MPI library declares its debugging compatibility version in an integer global variable named "mpi_debug_version". The following table shows the current set of values:

    "mpi_debug_version" value PE version number
    0 2.3
    1 2.4

    When looking for the MQD debugging dynamic library, TotalView

    1. looks for a library named libtvibmmpi.so; failing that
    2. looks for a library named libtvibmmpi-<n>.so
    where <n> is the integer value of the mpi_debug_version variable.

    By default the MQD debugging dynamic libraries provided with your TotalView distribution are named:

    The TotalView distribution has the appropriate symbolic links:

    This ensures that the correct MQD debugging dynamic library is loaded for both POE 2.3 and POE 2.4.

    PE 2.4 MQD Configuration

    Unfortunately, an error in the IBM PE 2.4.0.0 libraries causes the mpi_debug_version variable to have the value 0 (instead of the correct value 1). You may correct this problem in one of two ways:

    or

    But first, verify that you need the fix.

    Verifying You Need a Fix

    If you have POE 2.4.0.0, you may need to apply an IBM-provided PTF or to alter your TotalView installation explicitly so that the MQD debugging dynamic library symbolic links point to the correct version of the library.

    Here is how to check whether or not you need to modify your TotalView installation:

    1. Verify the version of PE in use on all your nodes.

      Use the "lslpp -l ppe.poe" command to inspect the version of PE you have installed on all of your nodes. For example:

      $ lslpp -l ppe.poe
        Fileset                      Level  State      Description         
        ----------------------------------------------------------------------------
      Path: /usr/lib/objrepos
        ppe.poe                    2.4.0.0  COMMITTED  poe Parallel Operating
                                                       Environment
       
      Path: /etc/objrepos
        ppe.poe                    2.4.0.0  COMMITTED  poe Parallel Operating
                                                       Environment

      You may also use the poe command to check multiple nodes on your SP2, for example:

      $ poe lslpp -l ppe.poe -procs 10 -rmpool 0
    2. Inspect the value of mpi_debug_version on all your nodes.

      Compile and run the following program:

    /*
    Test program to check mpi_debug_version.
    
    Compile: mpcc_r -g -o mqdvers mqdvers.c
    Run: mqdvers -procs <n> -rmpool <p>
         mqdvers -procs <n> -hfile <hostfile>
    
    */
    
    #include <stdio.h>
    #include <mpi.h>
    
    extern int mpi_debug_version;
    
    main(int arg, char **argv)
    {
    MPI_Init (&arg,&argv);
    printf ("mpi_debug_version == %d\n",
            mpi_debug_version);
    MPI_Finalize();
    } 

    It produces output similar to:

    $ mqdvers -procs 2 -rmpool 0 
    0:mpi_debug_version == 0
    1:mpi_debug_version == 0
    1. If your version of PE is "ppe.poe 2.4.0.0" and the value of the variable is "mpi_debug_version == 0", then you must apply PTF U462081 or modify your TotalView installation if you want to use the TotalView MQD feature. We strongly recommend that you apply the PTF.
    2. Applying PTF U462081

      Patches for POE 2.4 are available through the normal AIX FixDist WEB site as follows:

      1. Point your WEB browser to http://service.software.ibm.com/support/rs6000/.
      2. Click on the "Download" link.
      3. Click on the "Software Fixes" link.
      4. Click on the "AIX Fix Distribution Service" link.
      5. Click on the "Search by: PTF Number" radio button.
      6. Enter the PTF number "U462081" in the box and click on the "Find Fix" button.
      7. Select the PTF "U462081 - ppe.poe.2.4.0.1" item from the list.
      8. Select your version of AIX.
      9. Click on the "Get Fix Package" button.

        The following list of fix packages appears:

      Filesets needed for selected item             Information file        Byte size
      ppe.poe.2.4.0.2                                          README                 4539392

       

      1. Using your browser, download the file and put it into a directory, for example, "/tmp/xlfpatches". The file is named:

        ppe.poe.2.4.0.2.bff

      2. Use the AIX "smit" tool to install the patch from the directory.

      If you apply this PTF, you do not need to patch your TotalView installation manually.

    Patching Your TotalView Installation Manually

    We strongly recommend that you apply the PTF (above) instead of patching your installation. If you patch your TotalView installation for use with an incorrect PE 2.4.0.0, then that installation will no longer support MQD when you use POE 2.3.

    If applying the PTF is not an option for you, however, and you are using only PE 2.4, you or your system administrator must do the following:

    $ su
    Password: 
    # cd <installdir>/totalview.<version>/<platform>/shlib
    # rm libtvibmmpi-0.so
    # ln -s libtvibmmpi-poe-2.4.so libtvibmmpi-0.so

    Consult the TotalView Installation Guide for more information on your TotalView installation.


    License Management Issues

    Beta test note: This section does not apply to beta test. See the beta license installation instructions in your beta program FTP instructions E-mail.

    The Etnus License Management scheme for TotalView 3.7/3.8/3.9 and TimeScan 3.0 is new and requires some planning if you want to mix:

    Mixing Etnus license management with other software managed by FLEXlm

    We recommend that initially you do not combine Etnus licenses with those of other third party software managed by FLEXlm. At first, it is easiest to keep separate license manager daemons for Etnus licenses and licenses of other third party software managed by FLEXlm. After you know that your Etnus license works, see the latest FLEXlm documentation for guidance if you want to run a single FLEXlm license manager daemon.

    Use the Etnus installation procedures described in the appropriate Etnus Installation Guide to install the Etnus FLEXlm license management software. Etnus licenses must be served by the Etnus license manager daemon or the latest FLEXlm license manager daemon.

    The TCP/IP port number used for the Etnus license manager daemon must be unique and not in use elsewhere. Find port numbers used by other FLEXlm license managers in their license.dat files.

    Mixing Etnus license management with older versions of Etnus products

    TotalView 3.7/3.8/3.9 and TimeScan 3.0 licenses can not be combined with those of older versions of Etnus products. The Etnus licenses must be served by separate Etnus license manager daemons for best results.

    Use the Etnus installation procedures described in the appropriate Etnus Iinstallation Guides to install the appropriate FLEXlm license management software. TotalView 3.7/3.8/3.9 and TimeScan 3.0 licenses must be served with the license manager provided in their distributions. Older versions of Etnus products must be served by the license manager provided in their distributions.

    To run TotalView 3.7/3.8/3.9 or TimeScan 3.0 with older versions of Etnus products served by the same license manager server machine, you must:

    The old and the new FLEXlms install in different directories, so one does not overwrite the other.

    In addition, a user who wants to use both new and old versions of Etnus products must include the full pathnames of both license.dat files in his LM_LICENSE_FILE environment variable. For example:

    % setenv LM_LICENSE_FILE /usr/totalview/flexlm/license.dat:/usr/toolworks/flexlm-5.0/license.dat

    To verify your FLEXlm installations:

    1. Start both old and new FLEXlm license manager daemons (lmgrd).
    2. Set your LM_LICENSE_FILE environment variable appropriately, as above.
    3. Run the lmstat command in the new product's FLEXlm directory:

      % <installdir>/flexlm-5.0/<platform>/bin/lmstat

      In the FLEXlm status output, look for both license servers UP and both new (toolworks) and old (bbnst) Etnus vendor daemons UP.

    4. Once the license managers are both running, you can run TimeScan and TotalView to verify their installations:

    % timescan

    % totalview

    If you encounter installation problems, please review your procedure and also refer to the Troubleshooting section of the appropriate Etnus User's Guide.


    Chapter 3: TotalView News

    Changes from TotalView 3X.9.0-1 to 3X.9.0-2

    The following changes were made:


    Chapter 4: Problems and Reports

    Known Problems

    The following sections list the problems that have been found in the current release of TotalView.

    Problems on All Platforms

    All platforms have the following problems:

    1. C++ Exceptions: TotalView does not have full support for C++ exceptions. Single-stepping over code that will throw an exception is problematic and often results in the process running away. To help with this situation, TotalView has been modified to detect when an exception throw is going to occur while single-stepping.

      By default, TotalView brings up a dialog box to ask if you wish to stop the process. Answering "No" continues the process. Be aware that if you are stepping within the "try" block, your process may run away. Answering "Yes" stops the process upon entry into the system runtime routine that issues the throw. This is a temporary solution and full C++ exception handling may be provided in a future TotalView release.

      This mechanism is available for TotalView 3.9 for all the supported C++ compilers on the supported platforms for SGI IRIX 6.x, Power AIX, Alpha Digital UNIX, and Sparc SunOS 5 (Solaris 2.x) platforms. (See Supported Platforms and System Requirements.)

      The following user interface controls are available for turning this dialog box on and off:
    2. If this option is turned off, TotalView doesn't catch C++ exception throws during single-step operations. This may cause the single-step operation to lose control on the process and cause it to run away.

    1. The following problem applies only to Fortran arrays whose size changes, and from which have used the Variable (v) command from the Function/File/Variable you are displaying only a single element, either because you have dived, or because you menu with an array index.

      When a data pane displays a single element of a Fortran array that has runtime bounds (i.e., assumed shape, assumed size, allocatable, or a pointer), and the actual bounds change, the value displayed in the data pane applies to the wrong element in the reshaped array.

      To overcome this problem, display the whole array, then dive to the element that you want to see. Alternately, if you select the specific element of interest by setting the slice expression rather than by diving, the correct element always  displays, even if the array changes shape.
    1. If an evaluation point executes a "goto" statement or an assembly language transfer of control instruction, and you use the step or next command at the line where the evaluation point is enabled, TotalView continues the program and the step or next command does not complete. To regain control, type ^C into the program window.
    1. When FLEXlm reads your license.dat file, it hunts for multiprocessor feature lines when you start a debugging session with more than 2 processors. The messages:
                (toolworks) UNSUPPORTED: "TV/<hdwr>-<OS>/MP/<n>"
      which may appear in your license.log, may be safely ignored.
    1. There are problems with the fvwm version 1 window manager. Some users have reported that TotalView triggers bugs in version 1.22d of the fvwm window manager (and presumably earlier versions, too). However, The last release of fvwm version 1 (release 1.24r) is believed to work correctly with TotalView. Therefore, if you are using the fvwm version 1 window manager, we recommend that you ensure that you are using version 1.24r. We have not tested any later versions. You can find full details on fvwm at http://fvwm.math.uh.edu/.>

    Problems on Alpha Digital UNIX platforms

    The following are known problems with this platform:

    1. Thread debugging problems on Digital UNIX V4.0, V4.0A, V4.0B, and V4.0C:

      Because of a bug in the Alpha thread debugging support in Digital UNIX V4.0, V4.0A, V4.0B and V4.0C, the low-level thread hold operation can allow a held thread to run. TotalView uses the low-level thread hold operation to prevent a thread from running when single-stepping another thread.

      For example, assume your program has two threads, thread A and thread B. Assume that thread A is stopped at a breakpoint, and thread B is stopped elsewhere but not at a breakpoint. To continue the process (that is, both threads), TotalView must step thread A off the breakpoint. To do this, TotalView holds thread B. Then it unplants the breakpoint where thread A is stopped, sets a temporary breakpoint at the next instruction, and continues the process. Because of the hold thread bug, both thread A and thread B may run even though thread B is held. This means that thread B may miss the real breakpoint and hit the temporary breakpoint instead.

      The following behaviors can indicate the presence of this bug:

    1. Thread debugging problems on Digital UNIX V4.0D and 4.0E:

      Because of a bug in the Alpha thread debugging support in Digital UNIX V4.0D and 4.0E, you may occasionally experience problems debugging your threaded applications. The symptoms include:

    Digital is working to correct these problems. See EXTREMELY IMPORTANT: Digital UNIX Patch Procedures for more information on patching your Digital UNIX 4.0D and 4.0E systems.

    1. If you compile Fortran 90 files with include or #include statements on the Digital Alpha platform using the Digital Fortran V5.0 compiler (or earlier), TotalView may show line numbers following the include statement at incorrect lines. This problem is fixed by the Fortran V5.1 compiler.
    1. The GNU compiler does not output debugging information for members of anonymous unions that are enclosed in other aggregates when using the ECOFF format on the Digital Alpha. As a result, if you are debugging in such an environment, you will not see such members if you use TotalView to look at a data structure that contains them. Furthermore, the debugging information for the offsets of aggregate members that follow the anonymous union is output incorrectly, so these members will be displayed with incorrect values.

    Problems on IRIX6-MIPS Platforms

    The following are known problems with this platform:

    1. When you compile Fortran 90 programs on IRIX using the MIPSpro compilers, if source files contain #include statements and are compiled with the -cpp switch, TotalView generates incorrect line numbers. To avoid this problem, use the standard Fortran "include" statement (without the -cpp switch).

    2. Some Fortran arrays with runtime bounds are displayed improperly. Because of a limitation in the debug output produced by the SGI Fortran 90 compilers, this happens for arrays which are the targets of pointers embedded in a user-defined type which has itself been arrayed. Consider the following code:
    type array_ptr
       real, dimension (:), pointer :: ap
    end type array_ptr
    
    type (array_ptr), allocatable, dimension (:) :: arrays
    
    allocate (arrays(20))
    do i = 1,20
       allocate (arrays(i)%ap(i))
    end do
    TotalView reports the bounds of the elements arrays%ap incorrectly. Unfortunately, there is nothing we can do in TotalView to overcome the fact that the compiler has generated invalid debug information for the runtime bounds for these elements.
     
    This problem should be fixed in the MIPSpro F90 compiler version 7.3 Beta 2 and later for TotalView 3X.9.0-1 and later.
    1. The single-step commands sometimes step into system routines.

    2. TotalView occasionally complains about not being able to find the source code for system routines (such as printf).

    3. Access to F90 up-level variables does not work in the eval system. Because of SGI F90 7.2.1 and earlier compiler bugs, access to F90 up-level variables does not work from EVAL expressions. Those variables are correctly located and displayed in data panes, however.

      This problem should be fixed in the MIPSpro F90 compiler version 7.3 Beta 1 and later for TotalView 3X.9.0-1 and later.

    4. F90 pointer variables are not correctly identified as pointers because of incomplete debugging information generated by the compilers. TotalView displays the target data correctly, however.

      This problem should be fixed in the MIPSpro F90 compiler version 7.3 Beta 2 and later for TotalView 3X.9.0-1 and later.
    1. Because of SGI 7.1 C++ compiler bugs, when that compiler is generating debugging information, TotalView shows multiple instances of virtual base classes. Normally only one instance is correct, which is the one that is of type pointer to the base class.

    2. Because of SGI 7.2 F90 compiler bugs, when that compiler is generating debugging information, TotalView (and other debuggers) do not show the correct lower bound and element count for allocatable arrays in modules and pointers in common blocks. This bug has been fixed in the SGI 7.2.1 F90 compiler.

    3. Because of SGI 7.2.1 F90 compiler bugs, when that compiler is generating debugging information, TotalView shows the target of Cray pointers with unlimited bounds as having an upper bound of 1. Consider the following code:
    subroutine test (ixx, n)
    common /sf/ iptr
    pointer (iptr, ita(*))
    ... etc ...
    end
    In this example, the compiler generates debug information for "ita" that indicates it has an upper bound of 1. This is incorrect because it has an unlimited upper bound.
    1. Because of SGI 7.2.1 F90 compiler bugs, when that compiler is generating debugging information, TotalView can not show the target of a formal parameter Cray pointer. Consider the following code:
    subroutine rex (rp)
    pointer (rp, p(8))
    p(2) = 6.
    P(5) = 3.
    write (*,*) "Should be 6,3 - ",p(2), p(5)
    return
    end
    In this example, the compiler generates debugging information for "p" without any addressing information.

    This problem should be fixed in the MIPSpro F90 compiler version 7.3 Beta 1 and later for TotalView 3X.9.0-1 and later.
    1. Because of a compiler bug in the SGI 7.2 and 7.2.1 compilers, bad template type names may be generated for certain template instantiations. This problem is fixed by "Patch 3492: MIPSpro 7.2.1 C++ front-end rollup #4," which is available at the SGI Support Web Site.
    1. IRIX KCC code:  TotalView fails to put the original file name (before preprocessing) into the symbol table.  This prevents you from asking for the file by name until TotalView has processed all the symbols for that file.
    If you use the --keep_gen_c option to the KCC compiler, you can use the TotalView command "f" xxx.int.c (where your original source file was xxx.C) to force full symbol processing of that file, after which you'll be able to do "f" xxx.C.

    Problems on RS/6000 platforms

    The RS/6000 platform has the following known problems:

    1. You may experience some problems when debugging multithreaded programs, because of limitations in the ptrace() operating system call.

      The following problems can show up while you are debugging multithreaded applications:

    2. If a routine in a dynamic object is called from the expression window, and if the target routine is never called from the main program, then TotalView refuses to call the routine.

    3. Code compiled with the XL Fortran for AIX compiler Versions 4.1 and 5.1 may contain incorrect section numbers for bstat (.bs) and estat (.es) symbols. TotalView detects any incorrect section numbers and generates a warning in a dialog box for the first such problem only. TotalView notes any additional incorrect section numbers on its message output only. Symptom: common blocks have invalid addresses.

      Patches for the 5.1 compilers are available through the normal AIX FixDist WEB site as follows:

      1. Point your WEB browser to http://service.software.ibm.com/support/rs6000/
      2. Click on the "Downloads" link
      3. Click on the "Software Fixes" link
      4. Click on the "AIX Fix Distribution Service" link
      5. Click on the "Search by: PTF Number" radio button
      6. Enter the PTF number "U457231" in the box and click on the "Find Fix" button
      7. Select the PTF "U457231 - xlfcmp.5.1.0.2" item from the list
      8. Select your version of AIX
      9. Click on the "Get Fix Package" button
      The following list of fix packages appears. You must download all of them:
       
      Filesets needed for selected item             Information file        Byte size
      xlfcmp.5.1.0.2                                             README                 18824192
      xlfrte.5.1.0.2                                               README                 24093696
      xlsmp.rte.1.0.0.1                                         README                 63488
      1. Using your browser, download each of the files and put them into a common directory, for example, "/tmp/xlfpatches". The three files are named:

        • xlfcmp.5.1.0.2.bff
        • xlfrte.5.1.0.2.bff
        • xlsmp.rte.1.1.0.1.bff

      2. Use the AIX "smit" tool to install all three patches from the directory.

    1. Some small C++ programs compiled with the GNU compiler on AIX may not be recognized by TotalView as having been compiled with the GNU compiler. In these cases, TotalView will not demangle various program names. To make TotalView demangle the names in these programs properly, specify -demangler=gnu on the command line.

    2. On AIX systems, TotalView can hang if you have a TotalView parallel debug session running in the background in an xterm window, and you type anything in the underlying xterm window while the poe process is stopped. Type the fg command in the TotalView xterm window to clear up this condition.

    3. Recent versions of AIX (4.1 or later) dump a partial core file by default. In general, a partial core dump contains only enough information to give a stack backtrace for the faulting thread. User data sections as well as some other potentially useful information are only available in a full core dump.

      To force a full core dump on AIX, you must set a signal flag with sigaction for the signal that caused the core dump. For example:
    4. struct sigaction act;
      act.sa_handler = SIG_DFL;
      if (bigcore)
              act.sa_flags = SA_FULLDUMP;
      else if (smallcore)
            act.sa_flags = SA_PARTDUMP;
      sigaction (SIGSEGV, &act, 0);
      
    5. On AIX 4.3.1 and 4.3.2, TotalView supports debugging pthread programs running in pthread-compatibility mode or pthreads scheduled in "system contention scope," that is, each pthread is bound to a kernel thread (the 1:1 thread scheduling model). TotalView does not support "process contention scope," that is, multiple pthreads scheduled in user mode (M:N thread scheduling model).

      On AIX 4.3.1 and 4.3.2, when using TotalView to debug a program built with libpthreads.a, you must force the 1:1 model in one of two ways:

      For more detailed information, see your AIX 4.3.1 and 4.3.2 documentation or use the web links to the IBM AIX 4.3 documentation site listed below:

    Problems on SunOS 4 platforms

    The SunOS 4 platform has the following known problems:

    1. The Apogee 4.0 compilers on SUN4 and SUN5 require a patch to bring them up to revision level 4.010. Follow the Apogee 4.0 Compiler Patch Procedures

    2. The first time that you start this version of TotalView, saved breakpoints from TotalView 3.7 or earlier may not be set correctly. If this happens, reset the breakpoints and save them. After you do this, breakpoints will come up properly.

    Problems on SPARC SunOS 5 and QSW CS-2 platforms

    The SPARC SunOS 5 and QSW CS-2 platforms have the following known problems:

    1. The Apogee 4.0 compilers on SUN4 and SUN5 require a patch to bring them up to revision level 4.010. Follow the Apogee 4.0 Compiler Patch Procedures.

    2. Using breakpoints in thunks may lead to unexpected results, including having the target program crash unexpectedly. A thunk is a small linkage routine that connects a subroutine call to the actual subroutines in a dynamic library. The SPARC SunOS 5 dynamic loader modifies the code in the thunks during program execution, which conflicts with TotalView's planting and unplanting of breakpoints. The first time through a thunk, the thunk branches to the dynamic loader, and the dynamic loader modifies the thunk to branch directly to the corresponding dynamic library routine. Subsequent trips through the thunk branch directly to the dynamic library routine.

    Problems on Intel X86 SunOS 5 (Solaris 2.x) platforms

    The Intel X86 SunOS 5 platform has no platform specific known problems.

    Problems in the Portland Group HPF 2.4 Compiler

    The Portland Group HPF has the following known problems:


    Reporting Problems

    If you experience any problems with TotalView, or if you have questions or suggestions, please contact us:

    Etnus Inc.
    111 Speen Street
    Framingham, MA 01701-2090
    Internet E-mail: tv-beta@etnus.com
    1-800-856-3766 in the United States
    (+1) 508-875-3030 worldwide


    TotalView Problem Report Form and Instructions

    Fill out and E-mail the form below. Document just one problem per form. Remove or replace all data fields (<...>) with a selection or with contents. Do not remove '>' characters at the beginnings of lines.

    All data requested below is helpful to us, though not all is necessary to solve each problem. Supply as much detail as you can.

    If your problem involves TotalView execution, attach or FTP a reproducible example.

    How to prepare and send your example

    Create a directory named "repro" and place your problem files in it.

    Add the following files to repro:

    1. index.txt: (List and describe the files in repro.)
      1. include the target executable (a test program or code fragment is preferable to a large production code)
      2. build the executable statically and with "-v", if possible
      3. show compiler version used
      4. show the compile/build session (stdin/stdout/stderr)
      5. include sources (not always necessary, but usually helpful)
      6. include any special libraries or input files required
    2. README.TXT: (Describe the problem; please be very specific.)
    3. repro.txt: (Tell us how to reproduce the problem.)
      1. show `uname -a`
      2. show your TotalView session (stdin/stdout/stderr)
      3. describe in exact detail your interaction with TotalView (For example, you may edit your TotalView commands into the session output using angle brackets, i.e.,
        <where I did it: what I did next> , e.g.,
        <Process 0: Hello_World (Exited or Never Created): 'g'> .)
      4. use "Save Window to File..." to capture TotalView windows that document the problem

    Package your "repro" directory as follows:

    % cd ../repro/../
    % tar cvf - repro | compress -c > repro.tar.Z

    If repro.tar.Z exceeds ~1MB, FTP it to:

    ftp://ftp.etnus.com/incoming/repro.tar.Z-<your E-mail address>

    and cut and paste `ls -l repro.tar.Z` to the end of your form.

    Else, if repro.tar.Z is less than ~1MB, then:

    % uuencode repro.tar.Z > repro.tar.Z.uu < repro.tar.Z

    and cut and paste `cat repro.tar.Z.uu` to the end of your form.

    E-mail the form as shown in the header below.


    Problem Report E-mail Header

    To: tv-beta@etnus.com, bug-toolworks@etnus.com 
    Subject: <copy value of Synopsis field, below  .  .  .  .  .  .  .  .  >

    Problem Report E-mail Body

    >Submitter-Id:  <primary contact's *simplest* E-mail address (one line)>
    >Originator:    <originator's name .  .  .  .  .  .  .  .  . (one line)>
    >Organization:
     <originator's E-mail signature block .  .  .  .  .  . (multiple lines)>
    >Confidential:  <[ no | yes ]   .  .  .  .  .  .  .  .  .  . (one line)>
    >Synopsis:      <synopsis of the problem .  .  .  .  .  .  . (one line)>
    >Severity:      <[ non-critical | serious | critical ]  .  . (one line)>
    >Priority:      <[ low | medium | high ] .  .  .  .  .  .  . (one line)>
    >Category:      totalview
    >Class:         <[ sw-bug | doc-bug | change-request | support ] (1 ln)>
    >Release:       3X.9.<?>-<?> Beta
    >Environment:
    
     System:     <`uname -a` output .  .  .  .  .  .  .  .  .  .  .  .  .  >
     Platform:   <machine make&model, processor, etc. .  .  .  .  .  .  .  >
     OS:         <OS version and patch level .  .  .  .  .  .  .  .  .  .  >
     ToolChain:  <compiler version, linker version, etc. .  .  .  .  .  .  >
     Libraries:  <versions of parallel runtimes or standard libraries   .  >
    
     <other environmental factors you think are relevant . (multiple lines)>
     See also index.txt .
    
    >Description:
    
     <precise description of the problem  .  .  .  .  .  . (multiple lines)>
     See README.TXT .
    
    >How-To-Repeat:
    
     <step-by-step: how to reproduce the problem   .  .  . (multiple lines)>
     See repro.txt .
    
    >Fix:
     <how to correct or work around the problem, if known  (multiple lines)>
    >Unformatted:
    <misc. comments, forwarded E-mail, encoded repro  .  . (multiple lines)>
    
    `ls -l repro.tar.Z`  or  `cat repro.tar.Z.uu`
    
    <End of problem report E-mail body.>

    How to Contact Us

    Etnus, Inc.
    111 Speen Street
    Framingham, MA 01701-2090
    Internet E-mail: info@etnus.com
    1-800-856-3766 in the United States
    (+1) 508-875-3030 worldwide

    Visit our web site at http://www.etnus.com/.


    Notices

    Copyright (c)1999 by Etnus Inc. All rights reserved.
    Copyright (c)1996-1998 by Dolphin Interconnect Solutions, Inc.
    Copyright (c) 1993-1996 by BBN Systems and Technologies, a division of BBN Corporation.

    No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise without the prior written permission of Etnus, Inc. (Etnus).

    Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013.

    Etnus has prepared this document for the exclusive use of its customers, personnel, and licensees. The information in this document is subject to change without notice, and should not be construed as a commitment by Etnus. Etnus assumes no responsibility for any errors that appear in this document.

    TotalView, TimeScan, and Gist are trademarks of Etnus, Inc.

    All other brand names are the trademarks of their respective holders.

    Revision 3X.9.0-2: Published May 1999

    Software License Agreement

                   Etnus, Inc., Software License Agreement
    
    
                          IMPORTANT:  READ CAREFULLY
    
    
            DO NOT INSTALL OR USE THIS PRODUCT (THE "SOFTWARE") UNTIL YOU
    HAVE CAREFULLY READ THIS AGREEMENT, WHICH PROVIDES TERMS AND
    CONDITIONS FOR ITS USE.  INSTALLING THE SOFTWARE INDICATES THAT YOU
    HAVE READ, UNDERSTAND AND ACCEPT THIS AGREEMENT.  IF YOU DO NOT ACCEPT
    THIS AGREEMENT, YOU SHOULD CANCEL THIS TRANSACTION NOW, RETURN THE
    LICENSE KEY AND ALL DOCUMENTATION, AND PROOF OF PAYMENT, TO ETNUS, AND
    REMOVE THE LICENSE KEY FROM THE LICENSED SERVER FOR A FULL REFUND
    WITHIN THIRTY (30) DAYS OF FIRST ACQUIRING THE LICENSE KEY.  WRITTEN
    APPROVAL IS NOT A PREREQUISITE TO THE VALIDITY OR ENFORCEABILITY OF
    THIS LICENSE AND NO SOLICITATION OF ANY SUCH WRITTEN APPROVAL BY OR ON
    BEHALF OF ETNUS SHALL BE CONSTRUED AS AN INFERENCE TO THE CONTRARY.
    IF YOU HAVE ORDERED THIS SOFTWARE, ETNUS' ACCEPTANCE IS EXPRESSLY
    CONDITIONAL ON YOUR ASSENT TO THESE TERMS.
    
    1       Definitions.  In this License, the following terms shall have
    the following meanings:
    
    1.1     "License Key(s)" means the code(s) transferred from ETNUS to
    Licensee allowing Licensee to use the Software and establishing the
    Licensed Computer(s), Licensed Platform(s), Processor Maximum and
    Licensed User(s).
    
    1.2     "Derivative" means any computer program that may be developed
    containing all or any part of the Software (and any copies thereof),
    regardless of the form of code or intended use.
    
    1.3     "Documentation" means ETNUS' published Software manuals and
    any written or printed technical material generally provided by ETNUS
    with the Software to explain its operations and aid in its use.
    
    1.4     "ETNUS" means Etnus, Inc., a Delaware corporation with an
    office at 111 Speen Street, Framingham, MA 01701-2090.
    
    1.5     "License" means this End-User License Agreement and the rights
    and obligations it creates under all applicable laws.
    
    1.6     "Licensee" means the individual or entity licensing this copy
    of the Software and includes those persons in Licensee's immediate
    organization such as business associates, partners, and employees who
    are authorized to use this copy on the Licensed Computer(s) under the
    terms of this License.
    
    1.7     "Licensed Computer(s)" shall mean the server or servers for
    which the Software is licensed for use according to the License
    Key(s).
    
    1.8     "Licensed Platform(s)" shall mean the specific architecture or
    architectures of Licensed Computer(s) authorized under this Agreement
    and established for use according to the License Key(s).
    
    1.9     "Licensed User(s)" shall mean the maximum number of persons in
    Licensee's immediate organization who are licensed concurrently to
    operate the Software at any one time hereunder as established by the
    License Key(s).
    
    1.10    "Processor Maximum" shall mean the maximum number of
    processors per Licensed User Authorized under this Agreement as set
    forth according to the License Key(s).
    
    1.11    "Software" means, collectively, the version(s) of the enclosed
    ETNUS software program(s) in object code format, together with the
    Documentation, including updates, modifications or new releases of
    such software programs and Documentation that may be provided by ETNUS
    to Licensee from time to time, regardless of the form in which
    Licensee may subsequently use the Software.
    
    2.      Grant of License.
    
            Subject to the terms and conditions of this License, ETNUS
    grants to Licensee a nonsublicensable, nonexclusive, nontransferable,
    perpetual license (subject to Section 7 below) to use the Software
    internally on the Licensed Computer(s) and by the Licensed User(s).
    
    3.      Ownership of Software.
    
            As between the parties, ETNUS and its suppliers retain title
    to, ownership of and all proprietary rights with respect to the
    Software, and all copies and portions thereof, whether or not
    incorporated into or with other software.  The License does not
    constitute a sale of the Software or any portion or copy of it.
    Licensee acknowledges and agrees that the Software and the
    Documentation are ETNUS' proprietary products protected by
    U. S. Copyright and other laws, international treaty provisions and
    applicable laws, including copyright and intellectual property laws of
    the country in which the Software is being used.
    
    4.      Possession and Copying of Software.
    
            Licensee agrees that the Software will be installed or used on
    only the Licensed Computer(s) and Licensed Platforms by the Licensed
    User(s) and that Licensee shall not exceed the Processor Maximum.
    Licensee agrees to make no more than one (1) copy of the Software
    solely for backup or archival purposes, which (with the original) must
    be kept in Licensee's possession or control at all times.  Licensee
    agrees to place a label on the outside of any such separate and
    independent backup medium, showing the program name, the version
    number and the ETNUS copyright notice, restricted rights legend, and
    trademark notices, in the same form as they appear on the original
    licensed copy.
    
    5.      Transfer or Reproduction of Software.
    
    5.1     The Software may only be used on the Licensed Computer(s).
    Licensee may, subject to any applicable export requirements, change
    the Licensed Computer(s) which are authorized for the use of the
    Software to other computer(s) within Licensee's immediate organization
    after giving ETNUS prior notice of the CPU serial number(s) and
    location(s) of such computer(s) and making payment to ETNUS of the
    then-applicable fees.  If Licensee changes the computer(s) on which
    Licensee is using the Software, Licensee may no longer use the
    Software on the computers formerly used and the new computer(s) shall
    be deemed to be Licensed Computer(s).
    
    5.2     Licensee may not transfer any copy of the Software outside
    Licensee's immediate organization, on either a temporary or a
    permanent basis without obtaining the prior written approval of ETNUS.
    If the License transfer is approved, all copies of the Software,
    including the original, must be transferred to such transferee.  ETNUS
    has the immediate right to terminate this License, to trace serial
    numbers, and to take any appropriate legal action in the event any of
    these conditions are violated.
    
    5.3     Except as expressly provided in Sections 2 and 4 above,
    copying of the Software or any portion thereof, including Software
    that has been modified or incorporated into or with other software is
    expressly forbidden.  Licensee shall not (and shall not allow any
    third party to) (i) decompile, disassemble, discover any source code
    or underlying ideas or algorithms or file formats or programming or
    interoperability interfaces of the Software or of any files contained
    in or generated using the Software by any means whatsoever,
    (ii) remove any product identification, copyright or other notices of
    the Software, (iii) provide, lease, lend or use the Software for
    timesharing or service bureau purposes or otherwise use or allow
    others to use the Software to or for the benefit of third parties, or
    (iv) load or use any portion of the Software (whether or not modified
    or incorporated into or with other software) on or with any machine or
    system other than the applicable Licensed Computer(s).
    
    6.      License Fees.
    
            License fees are set forth in the Product Order(s) and/or
    attachments (the "License Fees") and are exclusive of shipping, taxes,
    duties and the like, which shall be paid by Licensee.  If not
    otherwise specified, applicable License Fees are due and payable
    within thirty (30) days of delivery or download of the Software,
    f.o.b. ETNUS.  Non-payment of License Fees shall be deemed a material
    breach of this License.
    
    7.      Termination of License.
    
            The License shall be deemed effective from the date Licensee
    downloads or receives the Software and accepts the terms herein (the
    "Effective Date"), and shall be effective only so long as Licensee
    uses or possesses the Software, unless the License is terminated by
    ETNUS for a violation of its terms or otherwise pursuant to the terms
    of this License.  The License will terminate immediately if:
    (i) Licensee fails to cure any material breach of this License within
    thirty (30) days of receiving notice of such breach from ETNUS (or
    immediately upon notice in the case of a breach of Sections 5 or 11 of
    this License); (ii) Licensee becomes insolvent or seeks protection
    under any bankruptcy, receivership, trust deed, creditors arrangement,
    composition or comparable proceeding; or (iii) Licensee ceases to do
    business or otherwise terminates its business operations.  Upon
    termination, the license grants under Section 2 shall terminate and
    Licensee shall immediately cease all use of the Software and return or
    destroy all copies of the Software and all portions thereof (whether
    or not modified or incorporated with or into other software) and, if
    requested, so certify to ETNUS in writing.  Except for provisions that
    survive according to their express terms and Sections 3, 5.2, 5.3, 6,
    7, 8.5, 8.6, 9, 10, 11, and 12 (as applicable), the rights and
    obligations of the parties shall cease immediately upon termination of
    this License..  Termination is not an exclusive remedy and all other
    remedies will be available whether or not the License is terminated.
    
    8.      Limited Warranty and Disclaimer.
    
    8.1     Software.  Subject to the conditions and limitations on
    liability stated herein, ETNUS warrants to the original Licensee only,
    that for a period of thirty (30) days from the Effective Date (the
    "Warranty Period"), Software will materially conform to ETNUS' then
    current Documentation for such Software.  This warranty covers only
    problems reported to ETNUS during the Warranty Period.
    
    8.2     Media.  For the Warranty Period, ETNUS warrants to the
    original Licensee only, that the media containing the Software (but
    not the Software itself) is free from physical defects.
    
    8.3     Documentation.  In the event of a descriptive error in the
    Documentation, ETNUS shall correct such an error without charge by
    providing addenda or substitute pages.  ETNUS need not treat such
    errors in the Documentation as errors in the Software, but may issue
    corrections to the Documentation instead.
    
    8.4     Exceptions.  Notwithstanding the above, the limited warranty
    under this Section shall not apply to any Software that has been
    abused, misused, damaged in transport, altered, neglected or subjected
    to unauthorized repair or installation as determined by ETNUS.
    
    8.5     Remedy.  ETNUS' sole and exclusive liability and Licensee's
    sole and exclusive remedy for a breach of the limited warranty under
    this Section shall be, at ETNUS' sole option, to repair or replace the
    defective Software or refund the License Fees paid for the Software.
    In the event that a reported defect is determined by ETNUS not to be a
    defect in the Software, Media or Documentation, or the defect is the
    result of unauthorized modifications or improper use of the Software,
    Licensee shall be subject to charges for consulting fees at then-
    current rates plus expenses incurred by ETNUS in responding to any
    defect report.
    
    8.6     DISCLAIMER.  EXCEPT AS EXPRESSLY PROVIDED IN THIS SECTION, THE
    SOFTWARE IS PROVIDED "AS IS" AND, TO THE MAXIMUM EXTENT PERMITTED BY
    APPLICABLE LAW, ETNUS DISCLAIMS ALL OTHER WARRANTIES, EXPRESS OR
    IMPLIED, REGARDING THE SOFTWARE, MEDIA AND ANY OTHER SUBJECT MATTER
    UNDER THIS LICENSE, INCLUDING ANY WARRANTY OF NONINFRINGEMENT AND THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    PURPOSE.  EXCEPT AS EXPRESSLY PROVIDED HEREIN, ETNUS DOES NOT WARRANT,
    GUARANTEE, OR MAKE ANY REPRESENTATIONS REGARDING THE USE, OR THE
    RESULTS OF THE USE, OF THE SOFTWARE OR DOCUMENTATION IN TERMS OF
    CORRECTNESS, ACCURACY, RELIABILITY, OR OTHERWISE.
    
    9.      LIMITATION OF LIABILITY.
    
            NOTWITHSTANDING ANYTHING ELSE IN THIS AGREEMENT OR OTHERWISE,
    ETNUS WILL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT MATTER OF THIS
    AGREEMENT UNDER ANY CONTRACT, NEGLIGENCE, STRICT LIABILITY OR OTHER
    LEGAL OR EQUITABLE THEORY FOR (i) ANY AMOUNTS IN EXCESS OF THE LICENSE
    FEES PAID TO ETNUS HEREUNDER FOR THE SOFTWARE OR (ii) ANY INCIDENTAL
    OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST OR INACCURATE DATA OR
    (iii) COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES.
    ETNUS SHALL HAVE NO LIABILITY FOR ANY FAILURE OR DELAY DUE TO MATTERS
    BEYOND ITS REASONABLE CONTROL.
    
    10.     Government Matters.
    
            Licensee agrees to comply with the U.S. Foreign Corrupt
    Practices Act (regarding among other things, payments to government
    officials) and all export laws, restrictions, national security
    controls and regulations of the United States or other applicable
    foreign agency or authority, and not to export or re-export, or allow
    the export or re- export of the Software or any copy or direct product
    thereof in violation of any such restrictions, laws or regulations, or
    to any group D:1 or E:2 country (or any national of such country)
    specified in the then current Supplement No. 1 to Part 740, or, in
    violation of the embargo provisions in Part 746, of the U.S. Export
    Administration Regulations (or any successor regulations or
    supplement), except in compliance with and with all licenses and
    approvals required under applicable export laws and regulations,
    including without limitation, those of the U.S. Department of
    Commerce.
    
            The Software is a "commercial item" as that term is defined in
    48 C.F.R. 2.101 (2/9/98), consisting of "commercial computer software"
    and "commercial computer software documentation", as such terms are
    used in 48 C.F.R. 12.212 (2/9/98).  Consistent with 48 C.F.R. 12.212
    and 48 C.F.R. 227.7202-1 through 227.7202-4 (1/22/98), all
    U.S. Government users, including contractors and subcontractors under
    any U.S. Government contract, acquire the Software with only those
    rights set forth in this License.  If Licensee is acquiring this
    License under a United States government contract, Licensee agrees to
    include all necessary and applicable restricted rights legends on the
    Software and the Documentation to protect ETNUS' proprietary rights
    under the regulations cited above. Licensee agrees always to include
    such legends whenever the Software or Documentation is, or is deemed
    to be, deliverable under that contract.
    
    11.     Confidentiality.
    
            Licensee agrees and acknowledges that the Software contains
    confidential and proprietary technology, ideas, know-how, algorithms
    and other information ("Confidential Information").  Except as
    expressly allowed by this License, Licensee will not use, disclose or
    allow any third party to have access to any Confidential Information
    except to the extent Licensee can document that such information is
    generally available (through no action or inaction of Licensee) for
    use and disclosure by the public without any charge or license.
    Licensee recognizes and agrees that there is no adequate remedy at law
    for a breach of this Section 11, that such a breach would irreparably
    harm ETNUS and that ETNUS is entitled to equitable relief (including,
    without limitations, injunctions) with respect to any such breach or
    potential breach in addition to any other remedies.
    
    12.     Miscellaneous.
    
    12.1    Except for Licensee, no other person or entity may rely on any
    rights, including but not limited to rights under the warranty
    provisions, granted in this License.  Neither this License nor any
    rights, licenses or obligations hereunder are assignable or
    transferable by Licensee without the prior written consent of ETNUS
    and any attempt to do so shall be void.
    
    12.2    Any notice, report, approval or consent hereunder shall be in
    writing.
    
    12.3    No failure to exercise, and no delay in exercising, on the
    part of either party, any privilege, any power or any rights hereunder
    will operate as a waiver thereof, nor will any single or partial
    exercise of any right or power hereunder preclude further exercise of
    any other right hereunder.
    
    12.4    If any provision of this License shall be adjudged by any
    court of competent jurisdiction to be unenforceable or invalid, that
    provision shall be limited or eliminated to the minimum extent
    necessary so that this License shall otherwise remain in full force
    and effect and enforceable.
    
    12.5    This License shall be deemed to have been made in, and shall
    be construed pursuant to the laws of the Commonwealth of Massachusetts
    and the United States without regard to conflicts of laws provisions
    thereof and without regard to the United Nations Convention on
    Contracts for the International Sale of Goods.
    
    12.6    The parties agree that a material breach of this License
    adversely affecting ETNUS' proprietary rights in the Software would
    cause irreparable injury to ETNUS for which monetary damages would not
    be an adequate remedy and that ETNUS shall be entitled to equitable
    relief in addition to any remedies it may have hereunder or at law.
    
    12.7    Any waivers or amendments shall be effective only if made in
    writing by non-pre-printed agreements clearly understood by both
    parties to be an amendment or waiver and signed by a representative of
    the respective parties authorized to bind the parties.  Both parties
    agree that this License is the complete and exclusive statement of the
    mutual understanding of the parties and supersedes and cancels all
    previous written and oral agreements and communications relating to
    the subject matter of this License.
    
    12.8    Each party recognizes and agrees that the warranty disclaimers
    and liability and remedy limitations in this License are material
    bargained for bases of this License and that they have been taken into
    account and reflected in determining the consideration to be given by
    each party under this License and in the decision by each party to
    enter into this License.
    
    12.9    Notwithstanding any provision hereof, for all purposes of this
    License each party shall be and act as an independent contractor and
    not as partner, joint venturer, or agent of the other and shall not
    bind nor attempt to bind the other to any contract.
    
    SLA #020499