Difference between revisions of "OCS Release Notes Aprobe 4.5.4ai Linux32"

From OC Systems Wiki!
Jump to: navigation, search
(Created page with "<pre> *READ THIS FIRST* Release Notes for INFORMAL RootCause Version 2.3.4ai (Aprobe Version 4.5.4ai) for AIX...")
 
m
 
Line 1: Line 1:
 
<pre>
 
<pre>
 +
                                 
 
                           *READ THIS FIRST*
 
                           *READ THIS FIRST*
  
 
                           Release Notes for
 
                           Release Notes for
        INFORMAL RootCause Version 2.3.4ai (Aprobe Version 4.5.4ai) for AIX
+
              RootCause Version 2.3.4ai (Aprobe Version 4.5.4ai)
                            Sep 27, 2021
+
                  for 32-bit Linux/x86 Applications
+
                            Sep 27, 2021
 
+
                                 
 +
                                 
 
This file contains brief release notes for RootCause 2.3.4ai and Aprobe
 
This file contains brief release notes for RootCause 2.3.4ai and Aprobe
4.5.4ai for 32-bit AIX.  Changes are relative to RootCause version
+
4.5.4ai for 32-bit Linux x86 platforms.  Changes are relative to RootCause  
2.3.4 (Aprobe 4.5.4) released Sep 2021.
+
version 2.3.4 (Aprobe 4.5.4) released Sep 2021.
  
Features and Fixes in RootCause 2.3.4ai (AIX32 platform)
+
Features and Fixes in RootCause 2.3.4ai/Aprobe 4.5.4ai for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
 
  (2721) statprof -r option produces odd resutls
 
  (2721) statprof -r option produces odd resutls
 +
(2722) apcgen core dumps reading DWARF variant with no disc
 +
(2723) Handle Linux reg param for inlined func
  
 +
Features in prior releases are listed below (look for "PRIOR").
  
Features in prior releases are listed below (look for "PRIOR").
 
  
 
Getting Help
 
Getting Help
Line 32: Line 36:
 
The RootCause Console 'Help' menu points to the OCS Web site, as
 
The RootCause Console 'Help' menu points to the OCS Web site, as
 
well as the full documentation delivered with the product.
 
well as the full documentation delivered with the product.
 +
 +
The RootCause User Guides are available in PDF format in the files
 +
RootCauseJava.pdf and RootCauseCpp.pdf in the product installation
 +
directory.
  
  
Installation  
+
Installation
 
------------
 
------------
  
Product Installation and Licensing is described in Chapter 2 of the
+
Product Installation and Licensing is described in Chapter 2 of each
RootCause User Guide and in the file "install.txt" located in the root
+
RootCause User Guide, and in the "install.txt" file located in the
directory of the CD.  
+
root directory of the CD. The installation process has not changed in
 
+
this update.
Once installation is complete, you must source the RootCause/Aprobe setup
 
script to use the product. To do this, run:
 
 
 
  . <install_dir>/setup            (for ksh)
 
  source <install_dir>/setup.csh    (for csh)
 
  
 
After you have successfully installed RootCause, you should work
 
After you have successfully installed RootCause, you should work
Line 51: Line 54:
 
RootCause User Guide.
 
RootCause User Guide.
  
If you are already a user of Aprobe, you can assume that this version
+
Supported Versions
works the same.
+
------------------
 +
 
 +
All support is for 32-bit applications (native or Java only), although
 +
they can be running on 64-bit linux kernel.
 +
 
 +
For 64-bit applications, you must download and install the corresponding
 +
64-bit version.
 +
 
 +
We support and have tested with Redhat versions 9.0, Red Hat Enterprise 2, 3,
 +
4, 5, 6, 7; and corresponding Centos and Fedora Core versions. 
 +
We fully support C and C++ programs compiled with GCC version 3.x and 4.x
 +
compilers using -g.  We support Java programs
 +
compiled with Sun Java 1.4 or newer.
 +
 
 +
This release fully supports 32-bit programs compiled with public GNAT
 +
4.4.7 and the latest versions of GNATPro GNAT (currently 7.4.1 and
 +
17.0 wavefronts).
 +
 
  
 
Compatibility
 
Compatibility
Line 62: Line 82:
 
That means you must recompile your probes from their APC source.
 
That means you must recompile your probes from their APC source.
  
This version of RootCause/Aprobe runs only on AIX 5.3 or newer.  If
+
Libiberty.so
you need it to run on an older version, please contact OC Systems.
+
------------
  
This version of RootCause/Aprobe is only applicable to 32-bit AIX
+
The libiberty.so shared library is delivered under the terms of the Lesser GPL.
(xcoff32) applications. Aprobe64 for AIX is available separately.
+
A description of this, and a copy of the license, can be found in
 +
README.libiberty.
  
The RootCause Console requires Java 1.5 or higher.
 
  
RootCause Intercept
+
Libelf.so
-------------------
+
---------
  
The RootCause "intercept" capability (rootcause on) is not fully
+
This version of RootCause requires libelf.so.1 to be in your library
implemented for AIX. It is approximated by copying or soft-linking
+
pathIf you don't have this contact support@ocsystems.com and we'll
a special script in place of any program to be intercepted.   
+
help you find one for your linux version.
See the User's Guide for details.
 
  
Dynamically-loaded libraries
 
----------------------------
 
  
Tracing a "dynamic module" C/C++/Ada library causes it to be
+
Dynamically-loaded (dlopen) libraries
statically loaded at program start (via aprobe using -dll command).
+
-------------------------------------
This means that one must be sure that the library specified in the
+
 
RootCause workspace must be the exact same one which the program would
+
Tracing a "dynamic module" C/C++ library causes it to be statically
normally load.  Furthermore, this won't work at all for libraries
+
loaded at program start (via aprobe using -dll command). This means
whose initialization depends on program state. Any -dll libraries that
+
that one must be sure that the library specified in the RootCause
cause libc.so to be loaded at a different address than defined in the
+
workspace must be the exact same one which the program would normally
 +
load.  Furthermore, this won't work at all for libraries whose
 +
initialization depends on program state. Any -dll libraries that cause
 +
libc.so to be loaded at a different address than defined in the
 
program header will cause problems.
 
program header will cause problems.
   
+
 
 +
Setuid Applications
 +
-------------------
 +
Applications which are owned by root and have the "setuid" bit set
 +
require special consideration. Contact support@ocsystems.com
 +
for assistance.
 +
 
 
Java
 
Java
 
----
 
----
Line 95: Line 121:
 
probes.  See the User's Guide and/or contact support@ocsystems.com about
 
probes.  See the User's Guide and/or contact support@ocsystems.com about
 
probing Java.
 
probing Java.
 +
 +
Logging data over NFS
 +
---------------------
 +
Aprobe's log mechanism uses memory-mapped APD files to achieve its excellent
 +
performance.  When the APD files are located on an NFS-mounted disk,
 +
corruption or loss of data logged to multiple APD ring files may occur.
 +
This has always been the case, and Aprobe and RootCause documentation
 +
encourages users to log to files on local (or at least non-NFS-mounted) disks. 
 +
However, it can be very confusing when it does happen and you don't
 +
realize it, so we introduced a warning (only with aprobe -v) and a
 +
mechanism to avoid the problem.  The mechanism is enabled by exporting
 +
the environment variable AP_NFS_TMP=1 before running aprobe.  Aprobe
 +
will recognize when NFS logging is taking place, and instead log under
 +
/tmp. When program execution is complete, the apd files are copied to the
 +
final destination.  Until this copy occurs, the APD file is instead a text
 +
file that explains what's going on.  If you would like more information,
 +
or have problems using this feature, please contact support@ocsystems.com.
 +
  
 
---------------------------------------------------------------------------
 
---------------------------------------------------------------------------
Line 103: Line 147:
 
prior releases of RootCause and Aprobe.
 
prior releases of RootCause and Aprobe.
  
Features and Fixes in RootCause 2.3.4 (AIX32 platform)
+
Features and Fixes in RootCause 2.3.4/Aprobe 4.5.4 for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
 +
(2688) Apc compiler fails to convert class with incomplete base type
 +
(2689) Handling of virtual base classes is problematic
 
  (2691) add probe to log memory for hex dump at format
 
  (2691) add probe to log memory for hex dump at format
 
  (2692) create a call path profile probe
 
  (2692) create a call path profile probe
 +
(2694) branch coverage warning about unknown opcode
 
  (2695) memcheck does not record C++ allocations
 
  (2695) memcheck does not record C++ allocations
(2698) Apcentry crashes handling PA variant records
 
 
  (2699) add AP_MAKE_CPP_STRING to cppstring.h/c
 
  (2699) add AP_MAKE_CPP_STRING to cppstring.h/c
 +
(2704) Linux32 does not handle fixed point type
 +
(2705) Gnat 22/Gcc 10 changed subprogram overload suffixes
 
  (2706) traced inlined code line numbers confusing
 
  (2706) traced inlined code line numbers confusing
 +
(2707) only print Gnat [nnnn] suffix waring in verbose mode
 +
(2708) bad layout for Ada record with dynamic fields
 +
(2709) Gnat 22.0w4 runtime exception signals changed
 +
(2710) Gnat 22.0w4 uses variant/variant_part tags
 +
(2711) bad layout for repc spec'd variant type
 +
(2712) filter compiler generated functiosn in Gnat 22
 
  (2713) remove help output from coverage output
 
  (2713) remove help output from coverage output
  (2716) AIX can't set member field in class type
+
  (2715) LINUX 32 DWRF query ap_dwarf_loclist_n fails
  (2720) xlC base class offset bug (too large)
+
  (2718) x87 float registers (ST(n)) not correct
 +
(2719) GNAT 22 exception names have @CXXABI suffix
  
Features and Fixes in RootCause 2.3.3 (AIX32 platform)
+
Features and Fixes in RootCause 2.3.3/Aprobe 4.5.3 for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
(2667) AIX symbol demangling fooled by file sec.C
 
(2668) Allow patching PPC trap instructions
 
(2669) AIX Aprobe can't find start address in stripped exe
 
(2677) AIX variant record size computed incorrectly
 
 
  (2678) Create probe to track (large) memory operations
 
  (2678) Create probe to track (large) memory operations
 
  (2679) hmtb.ual doesn't show tracebacks
 
  (2679) hmtb.ual doesn't show tracebacks
  (2682) Set maxdata for apmkadi
+
  (2681) Allow more flexible call patches (on Linux).
 +
(2686) Aprobe fails on RHEL8 program wiht dlopen() exceptions
  
Features and Fixes in RootCause 2.3.2 (AIX32 platform)
+
Features and Fixes in RootCause 2.3.2/Aprobe 4.5.2 for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
 
  (2637) Coverage snapshot missing for forked pids
 
  (2637) Coverage snapshot missing for forked pids
(2639) AIX: can't probe stripped executable (Adaentry)
 
 
  (2640) statprof report improvements
 
  (2640) statprof report improvements
  (2641) aprobe core dump on Xbarco Gcc app
+
  (2642) Gnat20/Gcc8 optimized code hard to probe
 
  (2645) Create apcgen -U type dictionary.
 
  (2645) Create apcgen -U type dictionary.
 +
(2646) union field type not found in apc.
 
  (2647) hmp report label MaxOutstanding not clear
 
  (2647) hmp report label MaxOutstanding not clear
 +
(2648) Apcentry can't handle struct with field of stub type
 
  (2649) create HMTB - heap memory traceback probe
 
  (2649) create HMTB - heap memory traceback probe
 +
(2650) Struct field references don't compile in apc
 
  (2651) prototype using a overloaded function selector
 
  (2651) prototype using a overloaded function selector
 +
(2654) ap_ThrowGccString does not work with -q min_heap
  
Features and Fixes in RootCause 2.3.1 (AIX32 platform)
+
Features and Fixes in RootCause 2.3.1/Aprobe 4.5.1 for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
(2219) More helpful error message(s) when no reachable patch area
 
(2582) Aprobe AIX does not demangle PowerAda operators
 
 
  (2592) COVERFILE should exclude (more) compiler generated func
 
  (2592) COVERFILE should exclude (more) compiler generated func
 
  (2604) enhancements to memcheck: -S -e -E options
 
  (2604) enhancements to memcheck: -S -e -E options
 
  (2610) Add pragma trap_patch to allow a trap patch on PPC
 
  (2610) Add pragma trap_patch to allow a trap patch on PPC
 
  (2613) provide mechanism to register dll/so with Aprobe
 
  (2613) provide mechanism to register dll/so with Aprobe
 +
(2614) Linux compiler-generated member names with special char
 +
(2615) core dump using ap_GnatRaiseException
 
  (2616) small return type does not set entire reg
 
  (2616) small return type does not set entire reg
 
  (2617) branch coverage report should show which tests take branch
 
  (2617) branch coverage report should show which tests take branch
 +
(2618) Linux use of ap_StringValue() in on_entry fails to compile
 
  (2619) Linux/AIX ap_StubRoutine on_line/offset does not work
 
  (2619) Linux/AIX ap_StubRoutine on_line/offset does not work
 
  (2620) memcheck should support resetting freed block values
 
  (2620) memcheck should support resetting freed block values
 
  (2621) Add indication of inlined function to apcgen -D
 
  (2621) Add indication of inlined function to apcgen -D
 +
(2622) ap_ThrowGccException does not work on Linux
 +
(2623) Gcc optimized hot/cold funcitons have no debug info
 +
(2626) apc compile error: Expecting an operand of a numeric type RHEL8
 
  (2628) track taken test names in brcov
 
  (2628) track taken test names in brcov
 +
(2629) stdlib.h compile error using Apcentry on REHL8
 +
(2630) apc parse error on slice range with Gcc 8
 +
(2631) fail apc compile of __alignof__ keyword on RHEL8
 +
(2632) Aprobe fails at startup on RHEL8
 +
(2633) Gnat exceptions not working with exit probes
 +
(2634) ap_RaiseGnatException() not working on_line
 +
(2635) ap_ThrowGccException() not working on_line
  
Features and Fixes in RootCause 2.3.0 (AIX32 platform)
+
Features and Fixes in RootCause 2.3.0/Aprobe 4.5.0 for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
 
  (2552) statprof -a timings off due to bogus extra entry
 
  (2552) statprof -a timings off due to bogus extra entry
  (2554) AIX boolean out parameter not set right on_exit
+
  (2557) statprof -c fails on linux64
 
  (2558) COVERFILE should exclude compiler generated functions
 
  (2558) COVERFILE should exclude compiler generated functions
 
  (2559) include date in statprof timestamp
 
  (2559) include date in statprof timestamp
 
  (2560) APO file doesn't handle single quote for options
 
  (2560) APO file doesn't handle single quote for options
 
  (2561) coverage does not do branches for some functions
 
  (2561) coverage does not do branches for some functions
 +
(2562) Linux Gcc try harder to find exception name/message
 +
(2563) Gnat/Gcc parameters not referenced correctly when -O
 
  (2564) struct with ap_TimeT fields get false unions
 
  (2564) struct with ap_TimeT fields get false unions
  (2566) out of memory reading XCOFF to patch program exit actions
+
  (2567) x86/64 disassemlber sets float mem ins class OTHER
 +
(2568) Linux/Gnat Apcentry doesn't allow target type expr outside probe
 +
(2569) Linux/Gnat dynamically-sized struct fields not generated
 +
(2570) apcgen core dump processing optimized Gnat code
 
  (2572) add heap memory profile (hmp) probe
 
  (2572) add heap memory profile (hmp) probe
 +
(2574) Handle Gnat optimized symbol names
 +
(2575) Gnat optimized code has formals in lexical block
  
Features and Fixes in RootCause 2.2.9 (AIX32 platform)
+
Features and Fixes in RootCause 2.2.9/Aprobe 4.4.9 for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
 +
(2510) brcov.cfg missing from delivery
 
  (2511) add ability to prune ADI files  
 
  (2511) add ability to prune ADI files  
 +
(2512) Apc generates bad layout for variant record
 +
(2513) apc core dump when emiting warning message
 +
(2515) support GNAT Pro 19.0
 +
(2516) apc can't compile gcc std::tuple with formal parm __ele
 
  (2517) merge brcov into coverage and extras
 
  (2517) merge brcov into coverage and extras
 +
(2518) problem with GNAT exception propagation
 +
(2520) Linux gcc problem reading static member variable
 
  (2521) add early Aprobe debug
 
  (2521) add early Aprobe debug
 +
(2522) fail to handle gcc const variables
 +
(2523) DWARF2 has no location for extern var
 +
(2524) failure to find g++ sepcial symbols
 +
(2525) x86 support for XMM registers
 
  (2527) default name matching for .adi files not convenient
 
  (2527) default name matching for .adi files not convenient
 
  (2528) apbc should process similar .brc files
 
  (2528) apbc should process similar .brc files
 
  (2529) memleak and memwatch should have delayed start
 
  (2529) memleak and memwatch should have delayed start
(2530) run axdln on .brc file when written by apformat
 
 
  (2531) apcgen reads all debug even if -f used
 
  (2531) apcgen reads all debug even if -f used
(2532) AIX sigaction instrumentation causes memory problem
 
 
  (2533) coverage.ual core dumps if -if used
 
  (2533) coverage.ual core dumps if -if used
 
  (2535) apbc doesn't handle similar .brc files with .eab
 
  (2535) apbc doesn't handle similar .brc files with .eab
  (2538) axdln -b foo.bc.orig doesn't work
+
  (2537) g++ const value uses 4 byte block
 
  (2539) provide option to set statprof interval
 
  (2539) provide option to set statprof interval
  (2540) Upgrades to apcgp.
+
  (2540) Upgrades to apcgp.  
 
  (2541) abrmerge should warn if source file not found
 
  (2541) abrmerge should warn if source file not found
(2544) ppc branch coverage causes core dump with -O
 
 
  (2545) add statprof option to profile address range
 
  (2545) add statprof option to profile address range
 +
(2546) problem probing __x86.get_pc_thunk.XX() on Linux
 +
(2547) gcc 7.3.1 C++ symbols not demangled
 +
(2549) Linux params/locals not correct on_line
  
Features and Fixes in RootCause 2.2.8 (AIX32 platform)
+
Features and Fixes in RootCause 2.2.8/Aprobe 4.4.8 for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
 +
(1197) Linux: exit() from thread doesn't trigger program on_exit
 +
(2490) provide axdln for Linux
 
  (2492) axdln doesn't tolerate # lines
 
  (2492) axdln doesn't tolerate # lines
 
  (2493) apc rejects -unit name with mixed case
 
  (2493) apc rejects -unit name with mixed case
 
  (2494) apc should prefer local symbol if file scope given
 
  (2494) apc should prefer local symbol if file scope given
 
  (2495) Further branch coverage improvements
 
  (2495) Further branch coverage improvements
 +
(2496) GNAT Linux reference to inout param in stubbed function wrong
 
  (2497) apcgen -T and -M don't work
 
  (2497) apcgen -T and -M don't work
  (2498) AIX _exit() from thread doesn't trigger program on_exit
+
  (2499) apmkadi on Linux checksum relies on stripped item
 +
(2501) core dump on stripped Linux executable
 
  (2505) create a name demangling tool
 
  (2505) create a name demangling tool
  (2508) AIX apcgen prints wrong decl file/line
+
  (2507) compile errors in APC compile for array struct members
  
Features and Fixes in RootCause 2.2.7 (AIX32 platform)
+
Features and Fixes in RootCause 2.2.7/Aprobe 4.4.7 for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
(2068) apc+PA+AIX: apc size warning for 2d array
 
(2389) AIX apc reports MP_TREE_COLLISION
 
 
  (2449) brcov doesn't handle lines from multiple files
 
  (2449) brcov doesn't handle lines from multiple files
 +
(2450) cannot log GNAT static-sized record subtype
 
  (2451) support enable/disable calls and apdemand in memstat
 
  (2451) support enable/disable calls and apdemand in memstat
 
  (2453) brcov improvements
 
  (2453) brcov improvements
 
  (2454) COVERFILE files cause core dump when inserting multiple files
 
  (2454) COVERFILE files cause core dump when inserting multiple files
 
  (2457) apbc.pl doesn't correctly mark some lines
 
  (2457) apbc.pl doesn't correctly mark some lines
(2458) AIX Apcentry ap_StrFree coredump in CloseCoffModule
+
  (2460) apcgen warnings fo C++ symbol _Z
(2459) AIX Apcentry coredump in SetCurrentStatement
 
  (2460) apcgen warnings for C++ symbol _Z
 
 
  (2461) apcgen -La reads all debug info
 
  (2461) apcgen -La reads all debug info
 
  (2462) apbc/bc.pl does not handle unprobed lines in .bc
 
  (2462) apbc/bc.pl does not handle unprobed lines in .bc
  (2467) apcgen and apc should declare maxdata:0x40000000
+
  (2463) coverage does not handle fork() well
 +
(2465) Trap patch on line at end of function not made
 +
(2469) apc problems with wavefront 18.0w 20170628
 +
(2471) GNAT 18.0 w20170601: main-nested subp debug info not fo
 
  (2472) typo in error message
 
  (2472) typo in error message
 
  (2474) Aprobe setup script must check for all of Aprobe
 
  (2474) Aprobe setup script must check for all of Aprobe
  (2475) deliver AdaDI shared library with AIX Aprobe
+
  (2476) Upgrade i386 disassembly
 +
(2477) apc generates incorrect layout for repspec'd variant record
 +
(2480) no line information in Gnat shared library
 +
(2481) Linux libdal.so does not support preinit
 
  (2484) -qmin_heap breaks memstat traceback table
 
  (2484) -qmin_heap breaks memstat traceback table
 +
(2485) apc defines unknown types for type nested in subp decl
  
Features and Fixes in RootCause 2.2.6d (AIX32 platform)
+
Features and Fixes in RootCause 2.2.6d1/Aprobe 4.4.6d1 for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
  (2053) probe calling ap_FileExists causes Ada exception
+
(2464) GNAT exception reraise changed for wavefront 18.0w 2017
 +
(2468) aprobe setup script doesn't handle blanks in PATH
 +
 
 +
Features and Fixes in RootCause 2.2.6d/Aprobe 4.4.6d for (32-bit) Linux
 +
-----------------------------------------------------------------------
 +
  (2373) wrong filename scope for GNAT symbols
 
  (2374) $APROBE/setup should update library path
 
  (2374) $APROBE/setup should update library path
 
  (2375) Warn if probing system calls
 
  (2375) Warn if probing system calls
 
  (2376) log fixed-length string return value fails
 
  (2376) log fixed-length string return value fails
 
  (2378) partial coverage percentages not obvious
 
  (2378) partial coverage percentages not obvious
 +
(2379) Linux target expression problems
 +
(2382) Linux/Gnat exception reason string not right
 +
(2383) Add support to raise C++ exception from probe
 +
(2384) Linux/Gnat position of fixed-length string params wrong
 +
(2387) emit DWARF warning messages in verbose mode
 
  (2388) atcmerge should print Aprobe version
 
  (2388) atcmerge should print Aprobe version
 +
(2390) support gnatpro 18.0w for APTs
 +
(2393) support apcgen -D for big Linux executables
 
  (2394) support wildcard in apcgen -p argument
 
  (2394) support wildcard in apcgen -p argument
 
  (2395) support logging local/global variables in apcgen
 
  (2395) support logging local/global variables in apcgen
 
  (2396) make ExpandDottedLines the default for coverage
 
  (2396) make ExpandDottedLines the default for coverage
 
  (2397) support COVERFILE 'sourcefilename' in coverage.cfg
 
  (2397) support COVERFILE 'sourcefilename' in coverage.cfg
  (2400) axdln -s doesn't work on specs
+
  (2399) fix logging Linux return structs
 
  (2401) Coverage should report reasons functions not probed
 
  (2401) Coverage should report reasons functions not probed
 +
(2402) Gnat 18.0w DWARF subtypes before base type
 
  (2404} Warn about mismatched function version in coverage
 
  (2404} Warn about mismatched function version in coverage
 
  (2405) atcmerge should allow merging diff func versions
 
  (2405) atcmerge should allow merging diff func versions
 
  (2406) apbc should warn if no source files found/given
 
  (2406) apbc should warn if no source files found/given
 +
(2407) Warn if Gnat [nnn] suffix not needed
 
  (2409) atcmerge should produce .bc file as an option
 
  (2409) atcmerge should produce .bc file as an option
 
  (2411) Allow aliases of module names (libc.so.6)
 
  (2411) Allow aliases of module names (libc.so.6)
 +
(2413) Aprobe Linux32 stat/fstat/lstat on 64-bit file system
 
  (2415) Coverage should report maximum offset count for line count
 
  (2415) Coverage should report maximum offset count for line count
 
  (2423) Add source file matching option to apcgen
 
  (2423) Add source file matching option to apcgen
 
  (2424) apcgen generated incorrect scope for func-local var
 
  (2424) apcgen generated incorrect scope for func-local var
 +
(2425) apc can't reference Gnat out params when optimized
 
  (2426) Problem stubbing abort() with coverage.ual
 
  (2426) Problem stubbing abort() with coverage.ual
(2427) Need mechanism to specify function not to sacrifice
 
 
  (2430) provide access to STL exception message
 
  (2430) provide access to STL exception message
 
  (2431) exceptions.ual should provide Ada/C++ exception message string
 
  (2431) exceptions.ual should provide Ada/C++ exception message string
  (2437) on_exit probe breaks cross-lang exception raise
+
  (2432) move DWARF warnings to verbose mode
(2439) ppc sacrifice function with large TOC
+
(2435) Linux/Gnat tag field is hidden when logging
 +
(2436) Linux on_exit probe breaks cross-lang exception raise.
 
  (2441) memstat statistics are displayed incorrectly
 
  (2441) memstat statistics are displayed incorrectly
  (2443) provided traceback blacklist address support
+
  (2443) provide traceback blacklist address support
 +
(2445) Linux/Gcc handle cxx11 tag when demangling names
 +
(2455) apc generated bad code for Gnat in array param ref
  
Features and Fixes in RootCause 2.2.6c (AIX32 platform)
+
Features and Fixes in RootCause 2.2.6c/Aprobe 4.4.6c for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
(2368) AIX coverage.ual reports empty non-executed lines for
+
  (2370) wrong symbol filename used due to #include
  (2370) AIX: wrong symbol filename used due to #include
+
(2371) Linux aprobe fails to demangle 'gnat170w9' symbols
  
Features and Fixes in RootCause 2.2.6b (AIX32 platform)
+
Features and Fixes in RootCause 2.2.6b/Aprobe 4.4.6b for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
  (2320) AIX C++ coverage included lines/files wrong
+
(2280) Linux Aprobe problem with LD_PRELOAD in forked process
 +
(2300) Linux/GNAT upscope references not supported
 +
(2318) bc support for linux
 +
(2319) Linux/Gnat exception reason string not reported.
 +
  (2321) sigsegv.ual causes core dump on Linux386
 +
(2322) Linux/Gnat Interfaces.C.Long_Float not handled
 +
(2323) Linux/Gnat records with dynamic sized components layout
 +
(2326) Linux apc fails when probes in same file
 +
(2332) Continuation of i2329 Gnat tracebacks
 +
(2333) Linux (F) 'thread stacks were overlapped'
 +
(2334) coverage.ual should do final snapshot on abort
 +
(2335) Linux coverage gets bad line info, causes sigsegv
 +
(2337) C++ const int declarations not handled
 +
(2338) ap_RaiseGnatException broken for Gnat shared library
 +
(2340) implement ap_UnprobeThread to avoid GNAT stackwalk core
 +
(2341) C++ exceptions not translating correctly
 +
(2342) GNAT abort task causes core dump unwinding
 +
(2346) Switch to pthread TLS support for thread tables
 +
(2348) Linux/GNAT: on_line probe gets wrong param value in nes
 +
(2349) use lower case exception name for GnatRaiseExceptionByN
 +
(2350) support ap_GnatRaiseException in on_entry and on_line
  
Features and Fixes in RootCause 2.2.6 (AIX32 platform)
+
Features and Fixes in RootCause 2.2.6a/Aprobe 4.4.6a for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
  (2268) can't set float return value in on_exit after stub
+
(2324) Aprobe traceback skips a frame when exit probe present
  (2276) AIX apinfo core dump AddressOfCallToMain
+
  (2329) Linux/Gnat cannot instrument lines with extended float instructions
  (2303) AIX atcmerge core dump, 0 length FT (E74103)
+
 
  (2304) axdln doesn't handle nested generics
+
Features and Fixes in RootCause 2.2.6/Aprobe 4.4.6 for (32-bit) Linux
  (2305) AIX apcgen -D prints wrong line number for symbol
+
-----------------------------------------------------------------------
  (2308) AIX fail to handle Ada function named operator (E74146)
+
(2090) Linux/GNAT: update out parameter on_exit wrong
  (2309) AIX axdln must tolerate C++ symbols and old-style input
+
(2243) Linux apcgen, apc should work with g++/gnat .o files
  (2313) AIX C++ global symbol not demangled
+
  (2259) GNAT/Linux core dump in __gnat_backtrace
  (2314) apinfo -h dumps core on AIX
+
  (2267) bad reference from probe for GNAT out parameter
 +
(2272) linux problems with ap_CallerLocation
 +
(2277) Linux atcmerge core dump
 +
(2278) Linux/GNAT: problems logging ada.bounded_string component
 +
(2279) GNAT/Linux apcgen wrong for param after string param
 +
  (2282) Gnat/Linux record layout problem
 +
  (2283) deliver libdal.so.stub for Linux
 +
  (2285) Gnat/Linux support for backtrace(3)
 +
(2286) Linux/Gnat apcgen assert on char16_t predef type
 +
  (2287) Linux/g++ DW_DLE_ATTR_FORM_BAD on huge struct
 +
  (2288) Linux/g++ exception class ctor debug info not found
 +
(2289) Linux/Gnat Ada out param with cast wrong
 +
(2290) apc: object location cannot be determined
 +
(2293) Gnat/Linux access to in param on_exit
 +
(2295) Gnat/Linux array slice lower bound not static
 +
(2297) apc c constant array treated as Ada
 +
(2298) gnat generates REP component for partial rep spec
 +
(2299) Linux apcgen prints wrong source file name
 +
  (2307) Linux/Gnat filenames wrong for template methods
 +
(2310) use MAP_ANONYMOUS on linux
 +
(2311) Linux/Gnat problems with exit probes, exceptions, Ada-C++
 
  (2317) deliver call graph probe apcgp.ual
 
  (2317) deliver call graph probe apcgp.ual
 +
(2318) bc support for Linux
  
Features and Fixes in RootCause 2.2.5d (AIX32 platform)
+
RootCause 2.2.5d/Aprobe 4.4.5d for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
 
  1. (1361) add changes, comments to coverage.2/bc.pl
 
  1. (1361) add changes, comments to coverage.2/bc.pl
 
  2. (1477) coverage sometimes fails to report missed lines
 
  2. (1477) coverage sometimes fails to report missed lines
  3. (1516) AIX aprobe reports wrong lines for inlined C++
+
  3. (2203) coverage.cfg should allow inline comments
4. (2203) coverage.cfg should allow inline comments
+
  4. (2239) Linux/386 bad messages for unkown ins type
  5. (2221) AIX apc logs wrong registers for xlC/ C++ parameters
+
  5. (2240) no coverage snapshot on SIGINT or exception
  6. (2228) implement trap patches on AIX PPC.
+
  6. (2241) atcmerge fails merging .tc files from multiple apps
7. (2240) no coverage snapshot on SIGINT or exception
+
  7. (2242) apcgen -f doesn't handle include files
  8. (2241) atcmerge fails merging .tc files from multiple apps
+
8. (2244) apcgen misses C++ members fields in big class
  9. (2242) apcgen -f doesn't handle include files
+
9. (2246) failure for slice of array'access
10. (2244) apcgen misses C++ members fields in big class
+
10. (2248) core dump on ap_CallerLocation
 
11. (2249) optionally reset counts between coverage snapshots
 
11. (2249) optionally reset counts between coverage snapshots
 
12. (2250) each coverage snapshot should write separate .tc and .bc
 
12. (2250) each coverage snapshot should write separate .tc and .bc
 
13. (2253) coverage summary report line should put symbol last
 
13. (2253) coverage summary report line should put symbol last
 
14. (2254) coverage CommaOutputFile gets duplicate content
 
14. (2254) coverage CommaOutputFile gets duplicate content
15. (2255) implement ap_LoadAllSymbols for AIX...
+
15. (2256) improvements to coverage reports
16. (2256) improvements to coverage reports
+
16. (2261) add experimental expand-dotted-lines tool
17. (2261) add experimental expand-dotted-lines tool
+
17. (2262) support .bc files on Linux
18. (2269) enhance statprof to profile entire address space
+
18. (2263) no APC type created for GNAT rep spec'd field
19. (2270) report all default options in coverage cfg file
+
19. (2264) handle private incomplete types in GNAT
 
+
20. (2269) enhance statprof to profile enitre address space
Increasing patch capacity
+
21. (2270) report all default options in coverage cfg file
-------------------------
 
 
 
Several improvements to Aprobe for AIX were made in Aprobe 4.4.5d to
 
increase the number of patches that can be applied, mainly to support
 
coverage testing on lines.  Two options will increase the (limited)
 
base capacity for patching:
 
 
 
-qenable_trap_patches :
 
 
 
This option enables trap patching, which, while slightly slower than normal
 
branch patching, avoids the restriction that patch space must be reachable
 
from the patched function.  Patch areas may be located anywhere in the address
 
space rather than within reach of or within the application module.
 
 
 
-qenable_patch_alloc:
 
 
 
This option enables Aprobe to allocate new patch space if the base patch
 
area is exhausted.
 
  
Features and Fixes in RootCause 2.4.5c (AIX32 platform)
+
RootCause 2.2.5c/Aprobe 4.4.5c
-------------------------------------------------------
+
------------------------------
  1. (2174) aprobe cores loading UAL that depends on a .so
+
  1. (2186) GNAT array base address computation incorrect
  2. (2176) aprobe should give more info when ual fails to load
+
  2. (2189) GNAT exceptions not intercepted
  3. (2179) update AdaUnboundedString.h for PowerAda i2172
+
  3. (2198) GNATPro/Linux: core dumps reading DWARF
  4. (2195) ADI files from same src should be bitwise identical
+
  4. (2199) core dumps instrumenting Firefox
 
  5. (2205) problem parsing gcc 5.x attribute list
 
  5. (2205) problem parsing gcc 5.x attribute list
 
  6. (2207) ap_DoCoverageSnapshot() doesn't work
 
  6. (2207) ap_DoCoverageSnapshot() doesn't work
  7. (2217) apc driver should not invoke user's .kshrc file
+
  7. (2213) Linux/GNAT CompilerKind wrong if package 'sec'
  8. (2218) Provide a way to increase density of patches on AIX
+
  8. (2215) Linux/Aprobe/GNAT core dump reading line information
  9. (2219) More helpful error message(s) when no reachable patch
+
  9. (2224) Linux assert failure in ap_CallerLocation
10. (2227) system_ual.apc cannot compute StartAddress
+
10. (2237) apcgen doesn't recognize C++ built w/GNAT
 
 
Features and Fixes in RootCause 2.4.5b (AIX32 platform)
 
-------------------------------------------------------
 
 
 
1. (2139) lines not logged if duplicate timestamp
 
2. (2141) apc parse error parsing complex gnu C type decl
 
3. (2145) AIX crash starting IBM MB with aprobe
 
4. (2146) AIX aprobe on java6_64 causes memory corruption
 
5. (2152) AIX apcgen doesn't recognize .o as being C++ if -qnotimestamps
 
6. (2155) optionally disable __ThrowV6 probe
 
7. (2160) fix memwatch, memstat examples, output
 
8. (2161) java_memstat, java_exceptions no longer supported
 
9. (2164) java aborts under RC trace
 
 
 
Features and Fixes in RootCause 2.4.5a (AIX32 platform)
 
-------------------------------------------------------
 
1. 2117 show instantiation line in apc/apcgen comments
 
 
 
Features and Fixes in RootCause 2.4.5 (AIX32 platform)
 
-------------------------------------------------------
 
 
 
1.(1182) on_line(last) doesn't work for generic instance
 
2.(2069) unhelpful message for $a[i, j]
 
3.(2074) AIX RC Trace Setup doesn't show lines, modules
 
4.(2108) adapt aprobe to PowerAda i2098 change
 
5.(2114) AIX apjava doesn't recognize java7
 
 
 
Note about i2108: AIX PowerAda 5.8 introduced a small change in stack
 
layout in order to fix an incompatibility with the AIX ABI.  This change
 
breaks upscope data references in probes built with Aprobe 4.4.4a and
 
earlier. That is, if you're logging Ada variables in your probe, and
 
you want the probe to work with PowerAda 5.8, then you have to install
 
and use version 4.4.5a or newer.
 
  
Features and Fixes in RootCause 2.4.4a (AIX32 platform)
+
Features and Fixes in RootCause 2.2.5b/Aprobe 4.4.5b for (32-bit) Linux
-------------------------------------------------------
+
-----------------------------------------------------------------------
 +
1. (2138) problems building on centos7
 +
2. (2139) lines not logged if duplicate timestamp
 +
3. (2141) apc parse error parsing complex gnu C type decl
 +
4. (2144) gcc4.8 requires dwarf4 support
 +
5. (2160) fix memwatch, memstat examples, output
 +
6. (2164) java aborts under RC trace
  
The focus of this delivery was compatibility with AIX 7.
+
Features and Fixes in RootCause 2.2.5a/Aprobe 4.4.5a for (32-bit) Linux
This version also introduces a new "demand.ual" predefined
+
-----------------------------------------------------------------------
probe, and fixes some RootCause UI problems. Specifically:
+
1. (2117) show instantiation line in apc/apcgen comments
  
1. (1966) apjava fails on latest IBM Java5
+
Features and Fixes in RootCause 2.2.5/Aprobe 4.4.5 for (32-bit) Linux
2. (2023) aprobe doesn't install gcc on aix6,7
+
---------------------------------------------------------------------
3. (2028) apc can't parse unistd.h on aix7
 
4. (2030) rootcause crashes on AIX7 expanding modules
 
5. (2034) add a general user demand interface to apc
 
6. (2036) memstat gui closes prematurely
 
7. (2037) AIX RC 'Add Dynamic Library' should handle libX.a(shr.o)
 
8. (2038) Update RC/Aprobe FAQ
 
9. (2044) AIX apc gens wrong code to deref short C++ ref param
 
  
 +
1. (1182) on_line(last) doesn't work for generic instance
 +
2. (1921) avoid NFS apd logging
 +
3. (2051) Linux: coverage breaks I/O app
 +
4. (2069) unhelpful message for $a[i, j]
 +
5. (2085) support public gnat on linux
  
demand.ual
+
Features and Fixes in RootCause 2.2.4/Aprobe 4.4.4 for (32-bit) Linux
----------
+
---------------------------------------------------------------------
 +
1. (1894) rhel6: sometimes can't instrument on_line(first)
 +
2. (1996) problems with trace.ual in PA/ada2cpp/g++ Linux applications
 +
3. (2002) PA eqOp symbol demangled wrong by RC223a
  
A new predefined probe, "demand.ual", along with its header file
 
demand.h and supporting command-line tool apdemand, provide a
 
framework for "demanding" action from another probe, from the
 
command-line at run-time, independent of what the probed program might
 
be doing.  This is an advanced feature, but can be powerful in the
 
right circumstances.  To learn more, copy the example directory
 
$APROBE/examples/predefined_probes/demand to a working area, and start
 
with the README file there.  It shows how you can use demand.ual in
 
conjunction with profile.ual to take a performance snapshot
 
"on demand".  The "RemoteControl" file in that same directory
 
provides more detail in how to use this to control your own probes
 
and applications.  Contact support@ocsystems.com if you have questions.
 
  
 +
Features and Fixes in RootCause 2.2.3a for (32-bit) Linux
 +
---------------------------------------------------------
  
Features and Fixes in RootCause 2.2.3b (AIX32 platform)
+
1. (1962) (OCS) don't retry failed demangling
-------------------------------------------------------
+
  2. (1964) (OCS) provide libaprobe.adi
  1. (2002) PA eqOp symbol demangled wrong by RC223a
 
  
Features and Fixes in RootCause 2.2.3a (AIX32 platform)
+
Features and Fixes in RootCause 2.2.3 for (32-bit) Linux
-------------------------------------------------------
+
---------------------------------------------------------
1. (1960) apmkadi takes a long time on new AIX/C++
 
2. (1962) (OCS) don't retry failed demangling
 
3. (1964) (OCS) provide libprobe.adi
 
  
 +
1. (1865) No module found for pa4_get_reraise_ptr(0)
 +
2. (1880) apcgen: '(E) ap_dwarf_loclist_n: DW_DLE_ATTR_FORM_BAD'
 +
3. (1885) PROGRAM_ERROR from apc refing C file in Linux PA exe.
 +
4. (1892) local data addressed wrong on rhel6/gcc4
 +
5. (1842) Linux mismatched ADI files not flagged
 +
6. (1884) function inside probe thread hangs
 +
7. (1896) apc -v shouldn't do gcc -v
 +
8. (1897) rhel6, handle non-standard frame base reg
 +
9. (1899) rhel6, Apcentry can't demangle g++ names
 +
10. (1900) gcc4.4, g++ file-static debug info not found
 +
11. (1911) typeof doesn't find C types in Ada binary
 +
12. (1912) redefinition of typedef .. PtrTo_void
 +
13. (1930) provide C++ string helper UAL
  
Features and Fixes in RootCause 2.2.3 (AIX32 platform)
+
All of the above fixes also apply to the 64-bit version of the product.
-------------------------------------------------------
 
  
1. (1896) apc -v shouldn't do gcc -v
+
Fixes 1..4 were delivered as patch 4.4.2i-p1 on November 16, 2011.
2. (1912) redefinition of typedef .. PtrTo_void
 
3. (1930) provide C++ string helper UAL
 
  
  All of the above fixes also apply to the 64-bit version of the product.
+
Issue 1930 introduces "cppstring.ual" which provides ap_GetCppString() and
 +
ap_SetCppString() functions for use in your probe. Its usage is
 +
illustrated in $APROBE/examples/predefined_probes/cppstring/.
  
Issue 1930 introduces "cppstring.ual" which provides ap_GetCppString()
+
Features and Fixes in RootCause 2.2.2i
and ap_SetCppString() functions for use in your probe. Its usage is
+
--------------------------------------
illustrated in $APROBE/examples/predefined_probes/cppstring/.
 
  
Features and Fixes in RootCause 2.2.2h (AIX32 platform)
+
1. (1020) sigsegv stack trace incomplete
-------------------------------------------------------
+
2. (1802) port sigsegv.apc to 64-bit Linux
 +
3. (1804) support universal_traceback in PowerAda/Linux
  
1. (1391) bad layout for C++ struct
+
Features and Fixes in RootCause 2.2.2h
2. (1432) bad APC layout for Ada Recon_Table_List_T array
+
--------------------------------------
3. (1673) memstat totals must be 64 bits
 
4. (1688) 'offsetof' w/gcc4 breaks apc parser
 
5. (1702) regression in apc type layout for Convert_Route_Sr
 
6. (1707) 'typeof app_type apc_type' ignored in ERAM app
 
7. (1718) ApcDI shouldn't call back for powerada debug info
 
8. (1724) ap_DoPeriodically() should be cancellable
 
9. (1738) parse error for c99 restrict keyword
 
10. (1739) adapt to xlc10
 
11. (1771) unhandled sm_class (22)
 
12. (1772) huge array generated for xlC 11.1 variable
 
13. (1783) regression in tasltrc-aix.apt
 
14. (1786) C++ double fields not correctly aligned
 
  
Features and Fixes in RootCause 2.2.2f1 (Aprobe 4.4.2f1)
+
  1. (1724) ap_DoPeriodically() should be cancellable
--------------------------------------------------------
+
  2. (1770) support gcc4 optimized code
  1. (1639) core in utb_RegisterAprobeFrameCallback()
+
  3. (1773) handle some linux386 struct return logic (tzsrgsc1)
  2. (1643) provide probes to use AIX hardware watchpoints
 
  3. (1660) bad branch in call patch crashes g1.eab
 
4. (1689) apc crashes due to gcc4 internal error (patch f1)
 
  
  
Issue 1643 introduces a new predefined probe, traphwp.ual. 
+
Features and Fixes in RootCause 2.2.2g
Documentation for this is in $APROBE/probes/traphwp.README.  
+
--------------------------------------
An example is in directory $APROBE/examples/predefined_probes/traphwp.
 
  
Features and Fixes in RootCause 2.2.2e (Aprobe 4.4.2e)
+
1. (1730) fix Linux Aprobe/Java failure for JRE 1.6.0_18
------------------------------------------------------
+
2. (1738) fix apc parse error for c99 'restrict' keyword
Version *.2.2e was not released for AIX.
+
3. (1756) remove ksh requirement
The following changes from that version apply to the AIX platform:
 
  
1. (1335) apcgen -D should force -d
 
2. (1551) deliver memleak.ual
 
3. (1574) AIX: add jvmti-based java probes
 
4. (1581) AIX: perf_cpu.ual not getting delivered
 
5. (1582) AIX: aprobe.jar has classes not in com.ocsystems
 
6. (1586) AIX: update Aprobe's gcc to 4.x, use -gxcoff
 
7. (1588) AIX: regression in PowerAda variant record accesses
 
8. (1592) AIX: apsymbols should not apply -x on AIX
 
9. (1617) Make traceback_compression compilable by user
 
10. (1621) ap_DoPeriodically incorrectly uses signal on threaded app
 
11. (1636) fix problems with log_env probe
 
  
Issue 1551 introduces a new predefined probe, memleak.ual.
+
Features and Fixes in RootCause 2.2.2e
Documentation for this is the source for the probe itself,
+
--------------------------------------
$APROBE/probes/memleak.apc. A simple example is in directory
 
$APROBE/examples/predefined_probes/memleak/
 
  
Features and Fixes in RootCause 2.2.2d (Aprobe 4.4.2d)
+
  1. (1207) apformat should remember ADI files (see NOTE 1)
------------------------------------------------------
+
  2. (1386) (OCS) fix string leak in CopyNode
1.  (1382) apcgen crash listing overloaded symbols
+
  3. (1434) (OCS) provide workaround for bad type layout (see NOTE 2)
2.  (1508) Update examples/predefined_probes/coverage.2/bc.pl
+
4. (1436) (OCS) refactor type replacement implementation
3.  (1510) (AIX) AIX 5.3 TL6 enforces PT_MULTI 
+
5. (1441) (OCS) implement 'formatof' to manipulate apc print routines (NOTE 2)
4.  (1513) build and deliver $APROBE/lib/libdal.so.stub
+
6. (1442) different apc results for upper, lower case
5.  (1514) apformat symbol lookup crashes in split PA csect
+
7. (1485) formatof + typeof don't work together (NOTE 2)
6.  (1528) deliver $APROBE/lib/libdal.exp (see i1513)
+
8. (1497) RC/Linux: g++ 3.4 trace setup problems
7.  (1539) (OCS) adapt to PA i1385 export preamble size change
+
9. (1551) Provide memleak ual for Aprobe
8.  (1540) (OCS) wrong or no line number for exported PA routines
+
10. (1561) RCLinux: aprobe DOA on FC6
 
+
11. (1570) Linux: make scripts more linux-friendly
Features and Fixes in RootCause 2.2.2c (Aprobe 4.4.2c)
+
12. (1582) JVMTI: aprobe.jar has classes not in com.ocsystems
------------------------------------------------------
+
13. (1600) Linux: aprobe runtime can't find lines in .so file
 
+
14. (1602) Update linux examples
The following changes and fixes are included in this release that
+
15. (1621) ap_DoPeriodically incorrectly uses signal on threaded app
were absent from the previous one.
+
16. (1624) Linux: FC9 parse error on __signed__
 
+
17. (1625) Linux: gcc4 line numbers all wrong
  1. (1189) apc fails on module with bad/missing supporting module
+
18. (1626) Linux: gcc4 exceptions not supported
2. (1207) apformat should remember ADI files (see NOTE 1)
+
19. (1631) Linux: probes on libc from .h files don't work
  3. (1360) Allow user to specify patch saving mode (see NOTE 2)
+
20. (1632) Linux: profile.ual's benchmark broken
4. (1386) (OCS) fix string leak in CopyNode
+
21. (1633) Linux: RC trace setup has no debug info due to libdwarf
  5. (1401) xreraise not found while doing coverage
+
22. (1635) Linux: do 'set +u' in setup scripts to avoid breakage
6. (1404) add apexc v3 support (see NOTE 3)
+
23. (1636) Linux: problems with log_env probe
7. (1415) Java 1.4.2 has libjvm.a in sovvm directory
 
8. (1429) Aprobe should save/restore FPSCR
 
9. (1431) Remove sovvm as built-in JVM (see NOTE 4)
 
10. (1434) (OCS) provide workaround for bad type layout (see NOTE 5)
 
11. (1436) (OCS) refactor type replacement implementation
 
12. (1441) (OCS) implement 'formatof' to manipulate apc print routines
 
13. (1442) different apc results for upper, lower case
 
14. (1451) aprobe must register with utb at startup
 
15. (1465) (OCS) apexc regression misses subprograms
 
16. (1467) $result_mask not found when many probes in 1 file
 
17. (1484) fix regression with Ada field names
 
18. (1485) formatof + typeof don't work together
 
19. (1487) -x module path must override LIBPATH (see NOTE 6)
 
 
 
 
 
The following notes explain new features introduced in 2.2.2c/4.4.2c:
 
  
 
   NOTE 1: apformat now "remembers" ADI files (i1207)
 
   NOTE 1: apformat now "remembers" ADI files (i1207)
Line 517: Line 576:
 
    
 
    
 
    
 
    
   NOTE 2: New aprobe -q conserve_patch_space option added (i1360)
+
   NOTE 2: APC auto-formatting extensions added (i1434, i1436, i1441, i1485)
 
 
  If you are getting errors like "Could not allocate a patch area
 
  reachable from address 0xd1234560", you can try re-running with -q
 
  converse_patch_space.  This attempts to use smaller (16-byte) patches
 
  which branch to allocated memory rather than putting the entire
 
  (80-byte) patch in the code section, which may enable all your patches
 
  to fit, at the expense of a slight slowdown in execution.
 
 
 
 
 
  NOTE 3: Apexc version 3.0 introduced (i1404, i1465)
 
 
 
  Aprobe's exception analysis and call graph generation tool was
 
  significantly enhanced earlier in the year at customer request,
 
  and is included in this release.  Usage has changed significantly:
 
  see $APROBE/apexc/ApexcUserGuide.doc or ApexcUserGuide.htm.
 
 
 
 
 
  NOTE 4: Probing Java on AIX 5.3 fixed (i1415, i1431)
 
 
 
  The IBM /usr/java14/bin/java command analyzes the machine its running
 
  on, and selects which of several JVM libraries to load in an undocumented
 
  manner.  RootCause/Aprobe must know this library ahead of time in order
 
  to apply probes.  If Java probes don't seem to be working for you,
 
  you can do the following in your environment and re-start your java
 
  application:
 
    export APROBE_OVERRIDE_LIBJVM=sovvm
 
  If this doesn't resolve your problem, contact support@ocsystems.com.
 
 
 
 
  NOTE 5: APC auto-formatting extensions added (i1434, i1436, i1441)
 
 
    
 
    
 
   This version introduces two extensions to the APC language to allow
 
   This version introduces two extensions to the APC language to allow
Line 652: Line 681:
 
   like a good way to capture the original intent.
 
   like a good way to capture the original intent.
  
 +
Features in RootCause 2.2.2
 +
---------------------------
  
  NOTE 6. Issue 1189 fixed some problems with reading supporting
+
  1. RootCause now supports 32-bit apps on 64-bit linux. (i735)
  modules from explicitly provided module, including the problem where
+
     64-bit applications are still not supported.
  LIBPATH was ignored.  Issue 1487 fixed a related issue where a
 
  supporting module PATH overrode a path from the command-line in
 
  certain cases.  The result of these fixes is to implement the
 
  original intended behavior of apc: that if m.exe references libt1.so
 
  (as shown by ldd or dump -H), and your probe t1.apc contains
 
  'probe "foo()" in "libt1.so"', then 'apc t1.apc -x m.exe' will
 
  find libt1.so and load it just as when you run m.exe.
 
 
 
 
 
Features and Fixes in RootCause 2.2.2a (Aprobe 4.4.2a)
 
------------------------------------------------------
 
 
 
NOTE: RootCause 2.2.2b (Aprobe 4.4.2b) was not released, so its
 
      changes are documented above as part of the current release.
 
 
 
The following changes and fixes are included in this release that
 
were absent from the previous one.
 
 
 
1. (1216) PowerAda exception & shared runtime issues (See NOTE 1 below.)
 
2. (1324) apexc doesn't correctly match class-wide catcher (See Note 2 below.)
 
3. (1328) AIX aprobe gives misleading 'saprobe' message
 
4. (1333) apmkadi v4.4.2, xlC8.0.0.11 crashes on cc.eab
 
5. (1336) PA line table read wrong for shr.o in archive
 
6. (1344) update apexc docs and official name
 
7. (1347) (F) Aprobe internal error...xreraise() not found
 
8. (1354) install_rootcause doesn't set gcc path
 
 
 
  NOTE 1: PowerAda Exception Support
 
 
 
  Support for ap_RaisePowerAdaException in the context of PowerAda shared
 
  libraries was added.  Most of this is not user-visible, except that
 
  operations now work that didn't before.  However, a new macro was provided
 
  to allow the user to specify the shared library in which an exception
 
  is defined, if it is not present in the module being probed:
 
    ap_RaisePowerAdaExceptionInModule(Name, Module)
 
  for example:
 
    on_exit
 
      ap_RaisePowerAdaExceptionInModule("App_Error", ap_ApplicationModuleId());
 
 
 
  NOTE 2: apexc now fully supports C++
 
 
 
  While Aprobe 4.4.2 included most of the C++ support for apexc, there
 
  were still some problems, which are now resolved, and apexc may be
 
  analyze C++ exception usage.
 
 
 
 
 
Features and Fixes in RootCause 2.2.2 (Aprobe 4.4.2)
 
----------------------------------------------------
 
 
 
This delivery includes the following fixes/features not in previous
 
releases or patches: 
 
 
 
1.  (970) report error calling ap_Free() with an ap_StrDup'd pointer
 
2. (1014) Execute user-provided prebuild.ksh, postbuild.ksh in RC workspace
 
3. (1108) add ap_StackTop() to aprobe.h
 
4. (1123) timing window in ThreadContextPtr management.
 
5. (1135) apc crash: nodetype.c, line 270: Unexpected Operation ...
 
6. (1144) probe thread nested functions may get wrong thread context
 
7. (1146) Aprobe: Aix: target mem ops for large blocks
 
8. (1150) #pragma xyz { fails with parse error
 
9. (1154) ap_DoPeriodically is unreliable in signal mode
 
10. (1155) Java Class Verification Error - duplicate names
 
11. (1157) \r is not handled by the probe config file reader
 
12. (1174) aprobe gets wrong size for powerada array
 
13. (1181) add apformat -f support (see NOTE 1 below)
 
14. (1196) apcgen -x shared_library should use correct shared lib name
 
15. (1209) verbose output from aprobe tools should go stderr (see NOTE 2 below)
 
16. (1215) ADI-mismatch warning not given for shared libraries
 
17. (1217) sigsegv should treat SIGABRT as 'fatal'
 
18. (1222) apc crashes against optimized code
 
19. (1231) periodic thread may get context of another thread
 
20. (1238) add GNAT support to AIX Aprobe (see NOTE 3 below)
 
21. (1240) implement AIX gcc/GNAT uplevel references
 
22. (1250) rootcause_install prompt should mention Ada
 
23. (1258) bad param passed to nsleep() by ap_Pause
 
24. (1259) adapt aprobe assembly to PowerAda 5.5
 
25. (1281) aprobe crash on pa5.5 exported proc
 
26. (1282) apcgen emits bad APC for GNAT record param
 
27. (1289) apc logs bad string size for opt. PA param (see NOTE 4 below)
 
28. (1290) aprobe problems on PA5.5 pop_stack_and_call*
 
29. (1291) apexc cores on c5.eab
 
30. (1299) no line info for export PA5.5 C routines
 
31. (1303) avoid race condition in ap_HashTableDelete
 
32. (1310) re-enable 'DisplayReport SubtotalReport' in events.ual
 
 
 
 
 
  NOTE 1: Using 'apformat -f'
 
 
 
  The -f option to apformat, introduced in Aprobe 4.4.2, indicates that
 
  apformat should run in follow mode, similar to "tail -f", in which APD
 
  files are continuously read and formatted as they are written.
 
  Formatting starts at the file specified by the -n option, just as it
 
  does without -f:
 
 
 
    - By default (-n not specified), formatting starts at the beginning
 
      of the lowest (oldest) undeleted ring file.
 
 
 
    - If n > 0, formatting starts at the specified number, e.g.,
 
      apformat -f -n 2 t.apd starts formatting at t-2.apd if available.
 
 
 
    - If n == 0, formatting starts at the beginning of the file
 
      currently being written (the newest).
 
 
 
    - If n < 0, starts at newest + n, that is, if t-4.apd is newest,
 
      then 'apformat -f -n -2 t.apd' will start formatting at t-2.apd.
 
 
 
  In all cases, apformat will wait for new data to arrive, even if the
 
  probed process is no longer running.  You can cause apformat to exit
 
  at the end of data by logging on program exit using a format that calls
 
  "_exit()", as follows:
 
 
 
    static ap_BooleanT ExitFormatsCalled = FALSE;
 
    probe format
 
    {
 
        on_exit
 
          ExitFormatsCalled = TRUE;
 
    }
 
 
 
    extern void ap_RunFormatExitProbes();
 
 
 
    static void ProgramExitFormat()
 
    {
 
        if (!ExitFormatsCalled)
 
        {
 
          // Force the exit to avoid
 
          ap_RunFormatExitProbes();
 
 
 
          // Flush the buffers and exit.
 
          fflush(stdout);
 
          fflush(stderr);
 
          // Use _exit(), instead of exit(), so that atexit()
 
          // actions would not get triggered again.
 
          _exit(0);
 
        }
 
    }
 
 
 
    probe program
 
    {
 
        on_exit
 
          // Record the fact that we are exiting the program.
 
          // This will allow us to stop formatting in apformat -f (tail) mode.
 
          log() with ProgramExitFormat;
 
    }
 
 
 
 
 
  NOTE 2: Debug, Verbose Output Changes
 
 
 
  Output written as a result of the following operations is now written
 
  to standard error, whereas before this was written to standard output:
 
    - specifying options -! or -v to aprobe and apformat
 
    - calling ap_Debug()
 
     - calling ap_DumpMemory()
 
 
 
 
 
  NOTE 3: Support for GNAT Applications on AIX
 
 
 
  This version introduces support for GNAT-compiled programs on AIX.
 
  All support is as described for GNAT Ada programs in the user guide,
 
  with the following exceptions:
 
 
 
      - exceptions raised by signals don't show a good traceback.  Use the
 
        sigsegv.ual predefined probe to get reliable signal traceback.
 
        This is a permanent limitation.
 
   
 
      - ap_RaiseGnatException is only supported on_line, not on_entry or
 
        on_exit, and the traceback information reported for an exception
 
        raised by ap_RaiseGnatException is not reliable. (i1313)
 
 
 
 
 
  NOTE 4: Logging Parameters on_exit
 
 
 
  In earlier versions, an attempt was made to log scalar (in-mode,
 
  pass-by-value) parameters on_exit from their location on the function's
 
  stack, in order to pick up any changes the user code may have made.
 
  However, in the presence of optimization, parameter values are often not
 
  stored and bad values were reported. Under issue 1289, 'on_exit log($1)'
 
  will always log the value of the first parameter as it was saved on_entry
 
  _unless_ the user compiles the apc with the new option, "-y", which forces
 
  it to log what's actually in the parameter's canonical location on_exit.
 
  You'd really only use -y if you wanted to get the correct value of "i"
 
  on_exit to something like the following: void foo(int i) { i++; }
 
  
Features and Fixes in Aprobe patch 4.4.1a1
+
2. Parameters of type 'long double' are now supported. (i787)
------------------------------------------
 
  
  1. 1251 handle PA _AnonField as WrapperFields
+
  3. Numerous improvements to the handling of ADI files. (i829, i844, i963,
2. 1254 apc crashes in ParseTypeXCOFF
+
    i1188)
3. 1261 xlc8 puts '<' in stabstrings
 
4. 1263 handle 'empty' base class from xlC8
 
  
Features and Fixes in RootCause 2.2.1a/Aprobe 4.4.1a
+
4. Reduced runtime memory usage, including an option -qmin_heap which
----------------------------------------------------
+
    discards symbol table after instrumentation. (i879, i885, others)
 +
    (See NOTE 1 below.)
  
The purpose of this patch delivery is to support programs compiles with
+
5. 'Find Function in Trace Events' now works from Event Summary Tree. (i902)
IBM xlC8.0 on AIX 5.3. This delivery includes fixes for the following
 
problems:
 
  
  1. (1109) xlCBind+AdaSym'Access+ADI = bad ap_FunctionPointer(AdaSym)
+
  6. The mechanism for disabling/enabling probes has been overhauled
2. (1171) apexc crashes on df.eab
+
    with more reliable mechanisms (i948). (See NOTE 2 below.)
3. (1220) handle programs compiled with xlC 8.0
 
4. (1226) fix crash in libdal after signal
 
5. (1227) libdal waitpid() should retry on EINTR
 
6. (1232) AIX: xlC8 doesn't list compiler param in stabs
 
7. (1236) handle "# pragma" found in xlC8 header files
 
  
 +
7. RootCause 'Build' operation now invokes prebuild.ksh, postbuild.ksh in
 +
    workspace if present, writing output to Message window. (i1014)
  
Features and Fixes in RootCause 2.2.1/Aprobe 4.4.1
+
8. Extended functionality of APROBE_DUMP_CORE_IF_ERROR. (i1018)
--------------------------------------------------
+
    (See NOTE 3 below.)
  
1. (1000) sacrifice/relocation of yylex crashes cc.eab
+
  9. Fixed crash on thread data initialization. (i1049)
2. (1009) on fork, patch server process calls atexit()
 
3. (1010) FormatAddressSize may be insufficient
 
4. (1011) probe-based call/exception reporting tool (Note 1)
 
5. (1013) ap_FormatAddress() crashes for lines
 
6. (1018) make APROBE_DUMP_CORE_IF_ERROR more useful
 
7. (1029) incorrect layout of dynamically-sized PowerAda type (Note 2)
 
8. (1043) stack overflow due to bad sacrificed function size
 
  9. (1047) apc NO_BIND_INFO crash reading C++ main Ada modules
 
10. (1056) enhance info.apc to dump address, size for symbols
 
11. (1081) GCC cplus_demangle leaks memory
 
12. (1094) sacrifice of libjvm 1.4 symbol cores apjava
 
13. (1097) extra white space in formatted output
 
14. (1101) aprobe -if -u trace prints null timestamps
 
  
  NOTE 1: apexc tool introduced
+
10. Fixed Java 1.5 class verification error. (i1155)
  
  AIX Aprobe 4.4.1 includes "apexc", an Aprobe-based tool for
+
11. Added 'apformat -f', analogous to 'tail -f', to format apd file(s) as they
  building a database of call and exception propagation information for
+
    are written(See NOTE 4 below.)
  PowerAda programsFor full information see
 
  $APROBE/apexc/ApexcUserGuide.htm or ApexcUserGuide.doc.
 
 
 
  NOTE 2: PowerAda version compatibility
 
  
  Part of the fix for i1029 is in PowerAda 5.4d, and requires
+
12. Fixed problem with JVM and java -server invocation. (i1191)
  that version or higher.  A number of other bugs reported against
 
  Aprobe's behavior with PowerAda programs were fixed in PowerAda 5.4d
 
  as well:
 
    514 warn if multiple powerada libs in single apc command
 
    701 order of ada probes causes 'no debug available'
 
    906 apc chokes on inst of bc hash_table
 
  1043 stack overflow due to bad sacrificed function size
 
  1047 apc NO_BIND_INFO crash reading C++ main Ada modules
 
  
 +
13. Add support of IBM JVM on Linux i386. (i1204)
  
 +
14. Make all -v, -!, ap_Debug() and ap_DumpMemory() output go to stderr.
 +
    (i1209)
  
Features and Fixes in RootCause 2.2.0/Aprobe 4.4.0
+
15. Fixed problems with Linux runtime module location, size on RHEL4.
--------------------------------------------------
+
    (i1211, i1280)
  
This is a major version change and as such introduces Aprobe API
+
16. Make ap_DoPeriodically() use threads when available on Linux. (i1231)
changes. The primary focus of this delivery is reduction of Aprobe
 
memory usage.  There are no new features in the RootCause graphical user
 
interface.
 
  
1. When running under RootCause (with Aprobe), Aprobe now adds
+
17. Removes spurious warnings when using gcc 4.x.  
    about 1/4 as much memory overhead as in the previous version.
 
  
2. At runtime, RootCause (Aprobe) now gets its memory from the application
+
18. Avoid optimization problems with params on_exit by using saved on_entry
    heap by default, rather than using private memory-mapped regions which
+
     params unless overridden with 'apc -y'. (i1289)
     are wasteful of virtual memory.  An environment variable
 
    APROBE_MMAP_HEAP may be defined to force use of mmap for Aprobe memory,
 
    but this is not recommended.
 
  
3. A new flag, "-qmin_heap" may be specified which reduces memory
+
19. Use libelf.so rather than libelf.a. (i1298)
    usage much more for large applications with many symbols, but which
 
    disables some operations at run-time.   See "Memory-Reduction Options"
 
    below for more details.
 
  
4. A new tool, "dumpxcoff" is provided as an aid in analyzing the
+
20. Fixed a race condition in ap_HashTableDelete. (i1303)
    content of AIX xcoff modules.
 
  
5. The mechanism for disabling/enabling probes has been overhauled
+
21. Re-enabled support for DisplayReport SubtotalReport in events.apc. (i1310)
    with more reliable mechanisms.   See "Disabling Probes" below.
 
  
6. The file $APROBE/lib/aprobepatcharea.o is delivered for inclusion in
 
    your applications.  Just add
 
        $APROBE/lib/aprobepatcharea.o \
 
        -bkeepfile:$APROBE/lib/aprobepatcharea.o
 
    to your link (xlC or ld) command to include a patch area to avoid
 
    "No patch area reachable" warnings.
 
  
  
Bug Fixes in RootCause 2.2.0/Aprobe 4.4.0
 
-----------------------------------------
 
  
1. Message "Double field size and/or alignment cannot be reproduced by apc"
+
Features in RootCause 2.1.4b
    is gone; the PowerAda long_float field is correctly logged. (i700)
+
----------------------------
  
  2. Two new macros, "BeforePoweradaCall" and "AfterPoweradaCall" are provided
+
  1. RedHat Fedora Core 3 and Enterprise Linux 4 (kernel 2.6.x) are now  
    to allow PowerAda calls to be made from within Probes. (i722)
+
     supported.
 
 
3. Crash during PowerAda exception propagation across probes due when using
 
    Ada shared libraries is fixed. (i823)
 
 
 
4. References from probes to PowerAda package static data no longer
 
    contain module-specific numeric offsets. (i855)
 
 
 
5. A failure to instrument the correct malloc() variant in the memwatch and
 
    memstat probes on AIX 5.3 was fixed. (i871)
 
 
 
6. A problem with automatically referencing a user-provided 'ap_patcharea'
 
    definition was fixed. (i872)
 
 
 
7. apcgen no longer generates the syntactically-incorrect '$virtual-base-ptr'
 
    for C++ methods (i887).
 
 
 
8. The operation "Find Function in Trace Events" now works for Summary nodes
 
    in the RootCause Trace Display window. (i902)
 
 
 
9. The "bc.pl" script provided in examples/predefined_probes/coverage.2
 
    no longer requires a full path name to the Ada source file, and the
 
    documentation has been updated to reflect Ada limitations. (i904)
 
 
 
10. A boundary-condition problem with long names in ADI files was fixed. (i754)
 
 
 
11. Prevent duplicate symbol recording in ADI files. (i756)
 
 
 
12. Correctly handle (ignore) deleted xcoff debug symbol entries. (i815)
 
 
 
13. Provide $APROBE/include/AdaUnboundedString.h for logging these. (i827)
 
 
 
14. Unmap ADI file after reading (i844) and writing (i829).
 
 
 
15. Correctly handle xcoff bigtoc patch ("@FIX") symbols. (i836)
 
 
 
16. Ignore duplicate symbols created by -qfuncsect switch. (i839)
 
 
 
17. Avoid gcc bug in system_ual.so causing PTHDB_CALLBACK error (i840)
 
 
 
18. Avoid crash when using aprobe -! option. (i842)
 
 
 
19. Avoid duplicate fieldnames caused by multiple virtual inheritance. (i881)
 
 
 
 
 
Features and Fixes Introduced in RootCause 2.1.4b
 
-------------------------------------------------
 
1. Corrected a problem where incorrect code was generated by apc for
 
    a PowerAda record type (i36)
 
 
 
2. Corrected a problem where incorrect code was generated by apc for
 
    accessing members of a class with multiple parent classes some of
 
    which are virtual. (i89, i642)
 
 
 
3. The libdal.so library is now included in
 
     rootcause_agent.tar.Z. (i523)
 
 
 
4. A problem with correct adjustment of file references in a deployed
 
    workspace was fixed. (i624)
 
 
    
 
    
  5. A workaround was implemented for IBM PMR 46650.487, in which mmap
+
  2. The function ap_GetHostId() was changed to return the same value
    failed to correctly read data from memory-mapped files.  The
+
     as the "hostid" command instead of the license manager's host ID,  
    workaround is enabled by defining the environment variable
+
     which is now provided by the new function ap_HostLicenseId().   
    APROBE_AIX53_MMAP_WORKAROUND to a nonempty value. (i631)
+
     The function ap_GetHostName() which returns the same string as  
 
 
6. The file $APROBE/probes/events.cfg was updated to reflect current
 
    implementation. (i638)
 
 
 
7. A problem, in which probing parameters $8 and above for a PowerAda
 
    subprogram in which an earlier parameter is a
 
    dynamically-constrained packed bit array, was fixed. (i645).
 
 
 
8. The function ap_GetHostId() was changed to return the same value
 
     as the "hostid" command instead of the license manager's host ID,
 
     which is now provided by the new function ap_HostLicenseId().  The
 
     function ap_GetHostName() which returns the same string as
 
 
     "hostname". (i647)
 
     "hostname". (i647)
  
  9. The memwatch, memstat java_memstat probes now support "REMOVE"
+
  3. The memwatch, memstat java_memstat probes now support "REMOVE"
     filters which identify allocations that should not be reported.
+
     filters which identify allocations that should not be reported.
 
     This are documented in the sample configuration files for these
 
     This are documented in the sample configuration files for these
 
     probes provided in $APROBE/probes. (i650)
 
     probes provided in $APROBE/probes. (i650)
  
10. Several small runtime memory leaks were closed. (i668, i681, i720)
+
  4. The ADI (Aprobe Debug Information) support has been improved in
 
 
11. The memstat and java_memstat probes now copy the default
 
    configuration file from $APROBE/probes when none exists, rather
 
    than generating one internally. There is no functional change,
 
    but it allows installation-wide customization of the
 
    configuration. (i674)
 
 
 
12. The ADI (Aprobe Debug Information) support has been improved in
 
 
     several ways: aprobe will look for the default-named adi file in
 
     several ways: aprobe will look for the default-named adi file in
 
     the same directory as the application and will use it if it's
 
     the same directory as the application and will use it if it's
Line 1,041: Line 764:
 
     checksum mismatch).  (i680)
 
     checksum mismatch).  (i680)
  
13. An infinite recursion reading the debug information for a PowerAda
 
    recursive record type was fixed, but the fix requires PowerAda
 
    version 5.4b. (i694)
 
 
14. The time required to start RootCause on a large application was
 
    reduced by only reading partial information at startup. (i697)
 
 
15. The option -D_THREAD_SAFE is now implicitly provided when
 
    compiling apc files, to ensure the thread-safe value of "errno" is
 
    used. (i709)
 
 
16. The 'cc' and 'xlc' compiler profiles have been restored to the
 
    delivered compiler_profiles file, to allow probes on C and C++
 
    applications to be compiled with the application compiler for
 
    easier debugging. (i709)
 
 
17. A problem using thread-level probe data from a nested probe was
 
    fixed (i714).
 
 
18. A potential deadlock in use of ap_HashTable was removed. (i717)
 
 
19. The libdal library has been enhanced to tolerate multiple
 
    invocations.  This will allow an application to explicitly specify
 
    a negative priority to force libdal initialization prior to early
 
    application initialization with
 
    "-binitfini:ap_DalLibraryLoader::-100000000" (i718)
 
 
20. Better error diagnostics are provided if libdal.so fails during
 
    patching. (i724)
 
 
21. A problem in which some C++ exception propagation routines in
 
    libC.a were not being probed was fixed.  (i727).
 
  
  
 
Features in RootCause 2.1.4a
 
Features in RootCause 2.1.4a
 
----------------------------
 
----------------------------
 
 
  1. The management of APD rings in the presence of frequent process creation
 
  1. The management of APD rings in the presence of frequent process creation
 
     was made more robust (i409).
 
     was made more robust (i409).
Line 1,084: Line 774:
 
     lines (i538).
 
     lines (i538).
  
  3. Interpretation of reference parameters with function calls has been
+
  3. Several improvements were made to the 'statprof' probe (i579, i585).
    reverted to the behavior prior to 4.3.4 (i578)
 
  
 
  4. PowerAda shared libraries are now supported by the RootCause  
 
  4. PowerAda shared libraries are now supported by the RootCause  
 
     Trace Setup dialog (i581).
 
     Trace Setup dialog (i581).
  
5. A regression in the statprof probe was fixed (i584).
 
  
6. A bug in logging PowerAda records with trailing pad bytes was
 
    fixed (i599).
 
  
7. A crash caused by an unsupported xlC debug symbol was fixed (i604).
+
Features in RootCause 2.1.4
 +
----------------------------
  
  8. A bug causing xlC line information to be lost was fixed (i605)
+
  1. Programs compiled with GCC version 3.x compilers with the "-g" flag
 +
    (which generates DWARF debug information) are now fully supported.
  
 +
2. Several critical defects in RootCause deploy functionality were
 +
    corrected.
  
Features in RootCause 2.1.4
+
3. The statprof.apc probe was ported to linux.  This probe enables
----------------------------
+
    the kernel services for performing statistical profiling on a
 +
    given address space range.
  
  1. The events probe was enhanced to export JNI calls for all functions defined
+
  4. The events probe was enhanced to export JNI calls for all
    in events.h.
+
    functions defined in events.h.
  
  2. Improvements were made in the way dot-indicators are propagated
+
  5. Improvements were made in the way dot-indicators are propagated
 
     in the GUI's Trace Setup window.
 
     in the GUI's Trace Setup window.
  
  3. AIX 5.3 is now supported by Aprobe.
+
  6. A problem where Aprobe disturbs the global "errno" value was been
 
 
4. apc, apcgen now correctly find PowerAda debug information from
 
    shared library archive members like libutilities.a(ada_shr.o), and
 
    no longer invoke the 'nm' tool.
 
 
 
5. A problem where Aprobe disturbs the global "errno" value was been
 
 
     corrected.
 
     corrected.
  
  6. A new option (-r) has been implemented for the statprof custom
+
  7. A new option (-r) has been implemented for the statprof custom
 
     probe that resets the counts to zero for each snapshot. This will
 
     probe that resets the counts to zero for each snapshot. This will
 
     result in profiling results for each interval between snapshots
 
     result in profiling results for each interval between snapshots
Line 1,124: Line 809:
 
     is cumulative.
 
     is cumulative.
  
  7. Several corrections were made to the custom memcheck probe.
+
  8. Java 1.5 is now supported.
  
  8. A custom probe is provided to allow instrumentation of the
+
  9. Several corrections were made to the custom memcheck probe.
 +
 
 +
10. A custom probe is provided to allow instrumentation of the
 
     de-facto standard for Java logging, log4j. This probe provides the
 
     de-facto standard for Java logging, log4j. This probe provides the
 
     ability to watch the configuration file to look for changes.
 
     ability to watch the configuration file to look for changes.
  
9. Handling of very large Java methods has been improved.
+
11. Handling of very large Java methods has been improved.
  
10. A new function is added to aprobe.h:
+
12. A new function is added to aprobe.h:
  
 
       extern void ap_HeapStats(ap_Uint64  *TotalBytesAllocated,
 
       extern void ap_HeapStats(ap_Uint64  *TotalBytesAllocated,
Line 1,148: Line 835:
 
               Freed bytes: 0
 
               Freed bytes: 0
  
11. The Aprobe run-time system and probes, as well as any user probes
+
13. The Aprobe run-time system and probes, as well as any user probes
 
     that use ap_Malloc(), now allocate heap memory from shared memory
 
     that use ap_Malloc(), now allocate heap memory from shared memory
 
     allocated using mmap() rather than from the program's memory space
 
     allocated using mmap() rather than from the program's memory space
Line 1,156: Line 843:
 
     The aprobe configuration parameter "-qmmap=<address>" has been
 
     The aprobe configuration parameter "-qmmap=<address>" has been
 
     extended to apply to all uses of mmap including this heap memory
 
     extended to apply to all uses of mmap including this heap memory
     allocation.  Hence the specification, "-qmmap=0xb0000000" on AIX
+
     allocation.  Hence the specification, "-qmmap=0x20000000" would
     would indicate that the first mmap operation would begin in segment
+
     indicate that the first mmap operation would begin at that address
     11, and each subsequent mmap operation would request the next
+
     and each subsequent mmap operation would request the next
     available page after that, whether used for APD files, aprobe heap,
+
     available page after that, whether used for APD files, aprobe
    or another purpose.
+
    heap, or another purpose.
  
 
     In order to allow all aprobe shared memory usage to fit into a
 
     In order to allow all aprobe shared memory usage to fit into a
Line 1,170: Line 857:
 
     this can be changed with the -sp option.
 
     this can be changed with the -sp option.
  
12. At apformat time, the coverage.ual probe now puts out a new
+
14. When the 'apc' command fails due to a non-fatal error, and the
    (additional) file with suffix .bc which contains individual line
 
    count information.  This information is for consumption by a
 
    customer-provided source merging script for selective coverage
 
    reporting of an integration test and for easier visual
 
    verification of path coverage.  Contact OC Systems support for
 
    more information.
 
 
 
13. When the 'apc' command fails due to a non-fatal error, and the
 
 
     option -g or -C was specified, the intermediate C file (with suffix
 
     option -g or -C was specified, the intermediate C file (with suffix
 
     .apc_c.c) is now preserved as a potential debugging aid.
 
     .apc_c.c) is now preserved as a potential debugging aid.
  
14. A number of formatting improvements were made in the memstat and  
+
15. A number of formatting improvements were made in the memstat and  
 
     java_memstat report files.
 
     java_memstat report files.
 
Features in RootCause 2.1.3b
 
----------------------------
 
 
1. Process Intercept support scripts are now provided that
 
    perform the linking/unlinking based upon an application
 
    list file.
 
 
2. Enhancements to support Java exceptions on newer JVM versions.
 
  
 
Features in RootCause 2.1.3a
 
Features in RootCause 2.1.3a
Line 1,231: Line 901:
 
12. Improvements have been made to the manner in which time is
 
12. Improvements have been made to the manner in which time is
 
     computed for recursive function calls.
 
     computed for recursive function calls.
 +
 +
13. RootCause now ships with version 1.4.2 of the java JRE.
  
 
Features in RootCause 2.1.3
 
Features in RootCause 2.1.3
Line 1,272: Line 944:
 
     this is now performed automatically in ap_LogSubprogramEntry/Exit.
 
     this is now performed automatically in ap_LogSubprogramEntry/Exit.
  
10. Performance enhancements have been made to Java method entry/exit logging.
+
10. Performance enhancements have been made to java method entry/exit logging.
  
11. Patch count support has been added for the AIX platform, reducing the
+
11. memcheck.apc is now distributed. It is a memory corruption probe
    overhead of load-shedding.
 
 
 
12. Enhanced support for per-thread CPU timing is implemented by the
 
    perf_cpu.ual probe for AIX 5.  The perf_cpu_nothread.ual probe
 
    preserves the per-process CPU times.
 
 
 
13. memcheck.apc is now distributed. It is a memory corruption probe
 
 
     that uses a "fence" technique to detect buffer under/over runs,  
 
     that uses a "fence" technique to detect buffer under/over runs,  
     as well as multiple deallocates.
+
     as well as multiple deallocates.
 
 
14. A potential thread-safety issue on multi-processor POWER4 systems
 
    has been addressed.
 
  
15. Support for upcoming PowerAda 5.3.1 was added.
+
12. Support for upcoming PowerAda 5.3.1 was added.
  
  
Line 1,294: Line 956:
 
-------------------------------------
 
-------------------------------------
  
  1. RootCause for Java is fully supported in this version.
+
  1. The -jar option is now supported for Java. In order for this to work,
 +
    the .jar file must be used to initialize the workspace (normally
 +
    this will be automatic).  The previous workaround, changing this to
 +
    specify the .jar file on the classpath and explicitly providing the
 +
    main class, may be removed.
  
  2. The Memory Analysis Probes "memstat" and "java_memstat" have been
+
  2. Exceptions raised by C++ code compiled with gcc 3.x are now supported.
    integrated with RootCause. These probes use statistical sampling
 
    and analysis to collect memory and Java object usage data about your
 
    program with low enough overhead to use in real-world testing.
 
    See http://docs.ocsystems.com/Memstat_Predefined_Probe for a
 
    complete description.
 
  
  3. New performance analysis support has been added to RootCause, with
+
  3. Numerous fixes have been made to the handling of PowerAda debug
     which resource data is collected at runtime and then summarized by
+
     information. This version only supports the new PowerAda 5.3 and
    thread and call-site under a new "Event Summary" node.
+
     newer.
    The existing trace probe, and new "perf_cpu" and "perf_rusage" probes
 
    make use of this support to provide much of the power that the
 
     Aprobe "events.ual" probe provides to command-line users.
 
  
  4. New statistical tables for performance analysis have been
+
  4. The time span displayed in the event tree is now clearly displayed.
    introduced in place of the CALL_COUNTS tables. These provide
 
    summaries of both call counts and wall-clock times for methods and
 
    functions, and show additional statistics if provided by predefined
 
    UALs. This change allows out of the box profiling-style information
 
    to be viewed.
 
  
  5. Numerous fixes have been made to the handling of PowerAda debug
+
  5. All event nodes can now be displayed in a text window for better
     information. This version only supports the new PowerAda 5.3 and newer.
+
     integration with standard probes. This also fixes problems with
 +
    the truncation of some useful data such as tracebacks.
  
  6. gcc (which is the back-end compiler required for compiling PowerAda probes)
+
  6. New statistical tables for performance analysis have been introduced,
    is delivered with RootCause and will be automatically installed and
+
    in place of the CALL_COUNTS tables. These provide summaries of both
     configured. This means an external C compiler is no longer required
+
    call counts and wall-clock times for methods and functions, and
     for compiling probes.
+
     show additional statistics if provided by predefined UALs. This
 +
     change allows out of the box profiling-style information to be viewed.
  
  7. The time span displayed in the event tree is now clearly displayed.
+
  7. A new option to log parameters for multiple Java methods has been
 +
    introduced in the trace setup window.
  
  8. All event nodes can now be displayed in a text window for better
+
  8. The deploy option is no longer licensed separately and customers who have
     integration with standard probes. This also fixes problems with
+
     any RootCause console license will be able to deploy.
    the truncation of some useful data such as tracebacks.
 
  
  9. The deploy option is no longer licensed separately and customers
+
  9. RootCause now correctly handles java (1.4) command lines where the JVM
     who have any RootCause console license will be able to deploy.
+
     kind (server, client, etc.) is not the first parameter specified.
  
10. Wildcard performance in the trace setup has been improved and a
+
10. Wildcard performance in the trace setup has been improved and a number of
     number of fixes made to the propagation of the trace / probe
+
     fixes made to the propagation of the trace / probe markers.
    markers.
 
  
 
11. Lines are no longer truncated in the source pane.
 
11. Lines are no longer truncated in the source pane.
  
12. Memstat output in the event viewer has been greatly improved.
+
12. Memstat and Java memstat output in the event viewer has been greatly
 +
    improved.
  
 
13. A liberty.so library is now delivered allowing demangling of gcc 3.x  
 
13. A liberty.so library is now delivered allowing demangling of gcc 3.x  
     C++ methods. (Note that on AIX gcc 3.x is not specifically supported
+
     C++ methods.
    by RootCause though some applications will work correctly).
 
  
14. A new cached hashtable facility is now available in the
+
14. A new cached hashtable facility is now available in the runtime. See the
    runtime. See the ap_Cache... routines in aprobe.h for details.
+
    ap_Cache... routines in aprobe.h for details.
  
15. Problems related to enabling and disabling of trace have been
+
15. The Memstat probes now correctly analyze the data when long runs are used
     addressed.
+
     in combination with a format start time option.
  
16. A newer version of the xlC demangling library is now used which
+
16. The Java memstat probe will disable the -parallel GC option which is not
     addresses crashes seen with certain C++ symbols.
+
     supported by the JVMPI interface.
  
17. The patch area allocation algorithm has been improved allowing
+
17. The perf_cpu and perf_rusage probes are now included in the agent
     more symbols to be instrumented in shared libraries.
+
     installation.
  
18. PowerAda exceptions raised from shared libraries are now handled
+
18. Problems related to enabling and disabling of trace have been addressed.
    correctly.
 
  
19. The memstat and mewatch probes have been adapted to malloc changes
+
19. Formatting from the RootCause GUI has been fixed on RedHat 9. There appears
     introduced in AIX 5.2.
+
     to be a bug in the system call but this has been worked around.
  
 +
20. A problem with the thread-stack handling code on Linux has been fixed.
  
Features and Fixes in RootCause 2.1.1/Aprobe 4.3.1
+
21. Problems with attempting to demangle Fortran symbols as if they were Ada
--------------------------------------------------
+
    symbols have been fixed.
  
1. An incorrect ordering in the "View By Time" view in the Trace Display
+
22. The licensing software has changed and now uses the same version across
     was fixed.
+
    all platforms. The upshot of this for Linux is that new license keys are
 +
     required.
  
2. A problem with incorrect nesting of events in the Trace Display was fixed.
+
Features and Fixes in RootCause 2.1.1
 +
-------------------------------------
  
  3. The "Remove All Probes" operation in Trace Setup is now much faster.
+
  1. You can now print graphs produced by the memstat and java_memstat
 +
    probes.
  
  4. Installing RootCause from CD no longer requires 'root' privilege
+
  2. A workaround for a JVMPI bug causing OutOfMemory errors was added
     (after the CD is mounted).
+
     to java_memstat.
  
  5. Very long aprobe command-lines are now accepted.
+
  3. Empty jar files and empty methods are now tolerated by RootCause.
  
  6. RootCause now operates by default in a "Developer" mode where
+
  4. You can now directly add a classpath entry via "Find Class..."  
     the "Deploy" and "Decollect" operations are not supported.  An
+
     in the Trace Display.
    additional license key is required to enable these operations.
 
  
 +
5. An incorrect ordering in the "View By Time" view in the Trace Display
 +
    was fixed.
  
Features and Fixes in Aprobe 4.3 relative to 4.2.5
+
6. A problem with incorrect nesting of events in the Trace Display was fixed.
--------------------------------------------------
 
The significant improvements in Aprobe version 4.3 are listed below.
 
If you have specific issues you're concerned with, contact OC Systems
 
directly as described in "Getting Help" above.
 
  
1. Support for linking aprobe into an executable [d9606].
+
7. The "Remove All Probes" operation in Trace Setup is now much faster.
  
  Starting with Aprobe 4.3, you can link the "libdal.so" shared library
+
8. Installing RootCause from CD no longer requires 'root' privilege
  into your AIX executable object module.  This was previously
+
    (after the CD is mounted).
  supported only for Solaris, as described in Chapter 4 of the  
 
  User's Guide.  Use of this feature for AIX is described in
 
  "Linking Aprobe Into Your AIX Application" below and
 
  will be added to the User's Guide in a future version.
 
  
2. apcgen "dictionary" mode [f14760]
+
9. Very long aprobe command-lines (e.g., due to long classpath)
 +
    are now accepted.
  
  A new flag, '-D' has been added to apcgen to list each function
+
10. An off-by-one problem with line numbers in tracebacks was fixed.
  in the application along with the source file and line number where
 
  it's declared, if any, in a format that can be postprocessed.
 
  This is especially useful for Ada applications which have overloaded
 
  subprograms and it's not clear which overloading is the one you want.
 
  For PowerAda programs, this works even in the absence of the PowerAda
 
  library, since source file and line information are stored in the
 
  executable itself.
 
  
3. apcgen -T, typeof now work for PowerAda programs. [d14706]
+
11. Several problems mapping PowerAda symbols to the corresponding debug
 +
    information in the PowerAda library have been fixed.
  
  Type names from the PowerAda library are now available in apc code
+
12. RootCause now operates by default in a "Developer" mode where
  and printed by the 'apcgen -T' command.
+
    the "Deploy" and "Decollect" operations are not supported.  An
 +
    additional license key is required to enable these operations.
  
4. Target expression "-file t.ada" qualifier now works for PowerAda.
 
  
  PowerAda now supports the "-file" context specification in APC,
+
Features and Fixes in RootCause 2.1.0
  in addition to "-unit".
+
-------------------------------------
  
 +
1. The Memory Analysis Probes "memstat" and "java_memstat" have been
 +
    integrated with RootCause.  These probes use statistical sampling
 +
    and analysis to collect memory and Java object usage data about your
 +
    program with low enough overhead to use in real-world testing.
 +
    See http://www.ocsystems.com/user_guide/probes/memstat.html for a
 +
    complete description.
  
Linking Aprobe Into Your AIX Application
+
2. New performance analysis support has been added to RootCause, with
----------------------------------------
+
    which resource data is collected at runtime and then summarized by
Aprobe includes a special shared library called libdal.so
+
    thread and call-site under a new "Event Summary" node.  
("DAL" stands for "Dynamic Action Linker"). If you re-link your
+
    The existing trace probe, and new "perf_cpu" and "perf_rusage" probes  
application with libdal.so, it will do on startup what aprobe normally
+
    make use of this support to provide much of the power that the  
does, and your probes will be in effect. The aprobe options are read
+
     Aprobe "events.ual" probe provides to command-line users.
from an APO file as described above.
 
 
 
For example, suppose you're developing a program 'Abcentry' which is
 
invoked by another program called 'abc', and you want to probe Abcentry
 
with a UAL file Abcentry.ual.
 
 
 
$ mv Abcentry Abcentry.noprobe
 
$ cc -o Apcentry Apcentry.c -brtl -ldal -L$APROBE/lib
 
$ echo "-u Abcentry.ual" > Abcentry.apo
 
 
 
Now you can just run abc as usual, it will invoke Abcentry, and as
 
long as the Abcentry.apo and Abcentry.ual files are in the current
 
directory at the time Abcentry is invoked, the probes will be loaded.
 
 
 
The command needed to link with libdal varies with each platform
 
and compiler. 
 
 
 
For AIX you need to specify that the runtime linker is used with the -brtl
 
flag:
 
 
 
For AIX C applications:
 
 
 
     cc -o Apcentry Apcentry.c -brtl -ldal -L$APROBE/lib
 
 
 
For PowerAda
 
 
 
  ada -b main ... -i-brtl -i-ldal -i-L$APROBE/lib
 
 
 
or
 
 
 
  aprojbuild -b main ... -- -i-brtl -i-ldal -i-L$APROBE/lib
 
 
 
or
 
 
 
  abuild -b main ... -Bi-brtl -Bi-ldal -Bi-L$APROBE/lib
 
 
 
On AIX you can relink an executable if it's not stripped,
 
making sure you pass the full set of libraries it was built with. 
 
For example:
 
 
 
# determine what libraries are referenced by 'hello_mt':
 
$ dump -H hello_mt | grep "^[1-9]"
 
1                                    libpthreads.a        shr.o             
 
2                                    libc_r.a              shr.o
 
 
 
# relink hello_mt with those original libraries plus libdal, plus -brtl:
 
$ ld -o hello_mt.apx hello_mt -lc_r -lpthreads -brtl -ldal -L$APROBE/lib
 
  
 +
3. The UALs tree in the RootCause Main window has been "cleaned up", and
 +
    the RootCause Help menu now provides a "UALs" item that describes
 +
    each of the probes in the UALs tree.
  
Features and Fixes in Aprobe 4.2.5 relative to Aprobe 3.2.0c
+
4. A "Find Text In Source" popup menu item has been added in the
------------------------------------------------------------
+
    source pane. Just right-click (with MB3) in the upper-right pane
 +
    when source is visible to see the item, and click on it to bring
 +
    up a dialog.
  
1. Improve shared library patching (patch area acquisition) [d13393]
+
5. A "Copy" action has been added to the  Event Tree and Details Tree
 +
    in the Trace Display.  Just select nodes by clicking (with normal
 +
    multi-select behavior by using the Control and Shift keys), then
 +
    right-click to show the popup menu.  Click on Copy, and this will
 +
    copy an image of the selected nodes to the primary clipboard. 
 +
    You can then use the "xclipboard" utility to access the copied text.
  
  Previous versions of AIX Aprobe often encountered problems when
+
  6. The NO ACTION default item in the Probes tab in Trace Setup has been
  patching shared libraries. AIX Aprobe V4 incorporates a new procedure
+
    removed, so the default is now Function Entry.
  for acquiring patch areas for shared libraries so that this is no
 
  longer an issue. The use of the 'apcpc' utility for adding patch
 
  space in local copies of shared libraries is no longer required.
 
  
 +
7. A problem re-opening a workspace on a smaller display has been fixed.
  
2. shmat no longer used for APD files [d13397]
+
8. Performance of the Trace Display has been improved.
  
  AIX Aprobe V3 used the shmat system call to access APD files. This
+
9. Shadow include directories are now included by default when parsing the
  had the potential of interfering with applications which also used
+
    header files so you can more easily create your own shadow headers.
  shmat, and was especially troublesome when those applications used
 
  shmat without specifying an address to attach to.  AIX Aprobe V4 no
 
  longer uses shmat so this interference is no longer an issue. In the
 
  event that there is a conflict with shared memory, the -q mmap=<address>
 
  option is used instead of -s1.  Contact OC Systems for
 
  assistance in this case.
 
  
 +
10. Problems with the list of APD files being incomplete have been fixed.
  
3. Less restrictive concurrent-use licensing rules
 
  
  Concurrent-licensing problems resulting from processes started from
+
Features and Fixes in Aprobe 4.3.0
  different ttys have been addressed by treating all processes run by
+
----------------------------------
  the same user on the same machine as a single user. Because of this
 
  change, concurrent-use licenses cannot be issued for both version 3
 
  and version 4 Aprobe from the same license server.
 
  
 +
1. A new probe (java_memstat.ual) is now delivered for analyzing Java object
 +
  leaks. This utilizes the JVMPI interface provided by the Java virtual
 +
    machine to statistically sample and analyze java object growth and pinpoint
 +
    problem objects.
  
4. PowerAda Support
+
2. The existing memstat probe has been substantially improved to provide
 +
    many of the same features as the new Java object leak probes. It too
 +
    can now sample and statistically analyze the memory usage of applications
 +
    that use the standard malloc and free system calls.  
  
  Aprobe and RootCause support source-level probes against programs
+
3. An interface UAL to the JVMPI is now available. Its specification is in
  compiled with PowerAda version 5.0 or newer.
+
    libapjvmpi.h but a working knowledge of the JVMPI interface is recommended
 +
    to make use of it.  
  
 +
4. The logged data has been optimized a little better to increase the number
 +
    of traced items that can be stored in each data file.
  
5. "Shadow include file" support
+
5. The heap.ual predefined probe that some of our customers have grown
 +
    attached to over the years is now delivered again, albeit in an
 +
    undocumented state.
  
  Parameter type information is available for many functions in
+
6. New APIs for creating a vector from a hash table have been added.
  libc.a due to a feature in apc and apcgen that reads this
 
  information from C header files.
 
  
 +
7. Support for getting symbol and debug information from archive files
 +
    has been added to 'apc' and 'apcgen'.
  
2. 64-bit applications are not supported by this version. Aprobe64 for AIX
 
 
</pre>
 
</pre>

Latest revision as of 17:14, 22 September 2021

                                   
                          *READ THIS FIRST*

                          Release Notes for
              RootCause Version 2.3.4ai (Aprobe Version 4.5.4ai)
                  for 32-bit Linux/x86 Applications
                             Sep 27, 2021
                                   
                                   
This file contains brief release notes for RootCause 2.3.4ai and Aprobe
4.5.4ai for 32-bit Linux x86 platforms.  Changes are relative to RootCause 
version 2.3.4 (Aprobe 4.5.4) released Sep 2021.

Features and Fixes in RootCause 2.3.4ai/Aprobe 4.5.4ai for (32-bit) Linux
-----------------------------------------------------------------------
 (2721) statprof -r option produces odd resutls
 (2722) apcgen core dumps reading DWARF variant with no disc
 (2723) Handle Linux reg param for inlined func

Features in prior releases are listed below (look for "PRIOR").


Getting Help
------------

If you have any questions or problems, please contact OC Systems by
e-mail at support@ocsystems.com, or by phone at 703-359-8160.

Documentation
-------------

All OC Systems product documentation is available at 
http://docs.ocsystems.com.

The RootCause Console 'Help' menu points to the OCS Web site, as
well as the full documentation delivered with the product.

The RootCause User Guides are available in PDF format in the files
RootCauseJava.pdf and RootCauseCpp.pdf in the product installation
directory.


Installation
------------

Product Installation and Licensing is described in Chapter 2 of each
RootCause User Guide, and in the "install.txt" file located in the
root directory of the CD.  The installation process has not changed in
this update.

After you have successfully installed RootCause, you should work
through the Demonstration Program described in Chapter 5 of the
RootCause User Guide.

Supported Versions
------------------

All support is for 32-bit applications (native or Java only), although
they can be running on 64-bit linux kernel.

For 64-bit applications, you must download and install the corresponding 
64-bit version. 

We support and have tested with Redhat versions 9.0, Red Hat Enterprise 2, 3,
4, 5, 6, 7; and corresponding Centos and Fedora Core versions.  
We fully support C and C++ programs compiled with GCC version 3.x and 4.x 
compilers using -g.  We support Java programs 
compiled with Sun Java 1.4 or newer.

This release fully supports 32-bit programs compiled with public GNAT
4.4.7 and the latest versions of GNATPro GNAT (currently 7.4.1 and
17.0 wavefronts).


Compatibility
-------------

This release is source-code compatible with previous
versions, so you shouldn't need to change any APC files. However,
this version is NOT binary-compatible, with respect to UAL files.  
That means you must recompile your probes from their APC source.

Libiberty.so
------------

The libiberty.so shared library is delivered under the terms of the Lesser GPL.
A description of this, and a copy of the license, can be found in
README.libiberty.


Libelf.so
---------

This version of RootCause requires libelf.so.1 to be in your library
path.  If you don't have this contact support@ocsystems.com and we'll
help you find one for your linux version.


Dynamically-loaded (dlopen) libraries
-------------------------------------

Tracing a "dynamic module" C/C++ library causes it to be statically
loaded at program start (via aprobe using -dll command).  This means
that one must be sure that the library specified in the RootCause
workspace must be the exact same one which the program would normally
load.  Furthermore, this won't work at all for libraries whose
initialization depends on program state. Any -dll libraries that cause
libc.so to be loaded at a different address than defined in the
program header will cause problems.

Setuid Applications
------------------- 
Applications which are owned by root and have the "setuid" bit set
require special consideration.  Contact support@ocsystems.com
for assistance.

Java
----
Java probes written completely differently than native (C/C++/Ada)
probes.  See the User's Guide and/or contact support@ocsystems.com about
probing Java.

Logging data over NFS
---------------------
Aprobe's log mechanism uses memory-mapped APD files to achieve its excellent
performance.  When the APD files are located on an NFS-mounted disk, 
corruption or loss of data logged to multiple APD ring files may occur. 
This has always been the case, and Aprobe and RootCause documentation 
encourages users to log to files on local (or at least non-NFS-mounted) disks.   
However, it can be very confusing when it does happen and you don't
realize it, so we introduced a warning (only with aprobe -v) and a
mechanism to avoid the problem.  The mechanism is enabled by exporting
the environment variable AP_NFS_TMP=1 before running aprobe.  Aprobe
will recognize when NFS logging is taking place, and instead log under
/tmp. When program execution is complete, the apd files are copied to the
final destination.  Until this copy occurs, the APD file is instead a text
file that explains what's going on.  If you would like more information,
or have problems using this feature, please contact support@ocsystems.com.


---------------------------------------------------------------------------
               FEATURES INTRODUCED IN PRIOR RELEASES
---------------------------------------------------------------------------

You may be interested in these features/changes introduced in 
prior releases of RootCause and Aprobe.

Features and Fixes in RootCause 2.3.4/Aprobe 4.5.4 for (32-bit) Linux
-----------------------------------------------------------------------
 (2688) Apc compiler fails to convert class with incomplete base type
 (2689) Handling of virtual base classes is problematic
 (2691) add probe to log memory for hex dump at format
 (2692) create a call path profile probe
 (2694) branch coverage warning about unknown opcode
 (2695) memcheck does not record C++ allocations
 (2699) add AP_MAKE_CPP_STRING to cppstring.h/c
 (2704) Linux32 does not handle fixed point type
 (2705) Gnat 22/Gcc 10 changed subprogram overload suffixes
 (2706) traced inlined code line numbers confusing
 (2707) only print Gnat [nnnn] suffix waring in verbose mode
 (2708) bad layout for Ada record with dynamic fields
 (2709) Gnat 22.0w4 runtime exception signals changed
 (2710) Gnat 22.0w4 uses variant/variant_part tags
 (2711) bad layout for repc spec'd variant type
 (2712) filter compiler generated functiosn in Gnat 22
 (2713) remove help output from coverage output
 (2715) LINUX 32 DWRF query ap_dwarf_loclist_n fails
 (2718) x87 float registers (ST(n)) not correct
 (2719) GNAT 22 exception names have @CXXABI suffix

Features and Fixes in RootCause 2.3.3/Aprobe 4.5.3 for (32-bit) Linux
-----------------------------------------------------------------------
 (2678) Create probe to track (large) memory operations
 (2679) hmtb.ual doesn't show tracebacks
 (2681) Allow more flexible call patches (on Linux).
 (2686) Aprobe fails on RHEL8 program wiht dlopen() exceptions

Features and Fixes in RootCause 2.3.2/Aprobe 4.5.2 for (32-bit) Linux
-----------------------------------------------------------------------
 (2637) Coverage snapshot missing for forked pids
 (2640) statprof report improvements
 (2642) Gnat20/Gcc8 optimized code hard to probe
 (2645) Create apcgen -U type dictionary.
 (2646) union field type not found in apc.
 (2647) hmp report label MaxOutstanding not clear
 (2648) Apcentry can't handle struct with field of stub type
 (2649) create HMTB - heap memory traceback probe
 (2650) Struct field references don't compile in apc
 (2651) prototype using a overloaded function selector
 (2654) ap_ThrowGccString does not work with -q min_heap

Features and Fixes in RootCause 2.3.1/Aprobe 4.5.1 for (32-bit) Linux
-----------------------------------------------------------------------
 (2592) COVERFILE should exclude (more) compiler generated func
 (2604) enhancements to memcheck: -S -e -E options
 (2610) Add pragma trap_patch to allow a trap patch on PPC
 (2613) provide mechanism to register dll/so with Aprobe
 (2614) Linux compiler-generated member names with special char
 (2615) core dump using ap_GnatRaiseException
 (2616) small return type does not set entire reg
 (2617) branch coverage report should show which tests take branch
 (2618) Linux use of ap_StringValue() in on_entry fails to compile
 (2619) Linux/AIX ap_StubRoutine on_line/offset does not work
 (2620) memcheck should support resetting freed block values
 (2621) Add indication of inlined function to apcgen -D
 (2622) ap_ThrowGccException does not work on Linux
 (2623) Gcc optimized hot/cold funcitons have no debug info
 (2626) apc compile error: Expecting an operand of a numeric type RHEL8
 (2628) track taken test names in brcov
 (2629) stdlib.h compile error using Apcentry on REHL8
 (2630) apc parse error on slice range with Gcc 8
 (2631) fail apc compile of __alignof__ keyword on RHEL8
 (2632) Aprobe fails at startup on RHEL8
 (2633) Gnat exceptions not working with exit probes
 (2634) ap_RaiseGnatException() not working on_line
 (2635) ap_ThrowGccException() not working on_line

Features and Fixes in RootCause 2.3.0/Aprobe 4.5.0 for (32-bit) Linux
-----------------------------------------------------------------------
 (2552) statprof -a timings off due to bogus extra entry
 (2557) statprof -c fails on linux64
 (2558) COVERFILE should exclude compiler generated functions
 (2559) include date in statprof timestamp
 (2560) APO file doesn't handle single quote for options
 (2561) coverage does not do branches for some functions
 (2562) Linux Gcc try harder to find exception name/message
 (2563) Gnat/Gcc parameters not referenced correctly when -O
 (2564) struct with ap_TimeT fields get false unions
 (2567) x86/64 disassemlber sets float mem ins class OTHER
 (2568) Linux/Gnat Apcentry doesn't allow target type expr outside probe
 (2569) Linux/Gnat dynamically-sized struct fields not generated
 (2570) apcgen core dump processing optimized Gnat code
 (2572) add heap memory profile (hmp) probe
 (2574) Handle Gnat optimized symbol names
 (2575) Gnat optimized code has formals in lexical block

Features and Fixes in RootCause 2.2.9/Aprobe 4.4.9 for (32-bit) Linux
-----------------------------------------------------------------------
 (2510) brcov.cfg missing from delivery
 (2511) add ability to prune ADI files 
 (2512) Apc generates bad layout for variant record 
 (2513) apc core dump when emiting warning message
 (2515) support GNAT Pro 19.0
 (2516) apc can't compile gcc std::tuple with formal parm __ele
 (2517) merge brcov into coverage and extras
 (2518) problem with GNAT exception propagation
 (2520) Linux gcc problem reading static member variable
 (2521) add early Aprobe debug
 (2522) fail to handle gcc const variables
 (2523) DWARF2 has no location for extern var
 (2524) failure to find g++ sepcial symbols
 (2525) x86 support for XMM registers
 (2527) default name matching for .adi files not convenient
 (2528) apbc should process similar .brc files
 (2529) memleak and memwatch should have delayed start
 (2531) apcgen reads all debug even if -f used
 (2533) coverage.ual core dumps if -if used
 (2535) apbc doesn't handle similar .brc files with .eab
 (2537) g++ const value uses 4 byte block
 (2539) provide option to set statprof interval
 (2540) Upgrades to apcgp. 
 (2541) abrmerge should warn if source file not found
 (2545) add statprof option to profile address range
 (2546) problem probing __x86.get_pc_thunk.XX() on Linux
 (2547) gcc 7.3.1 C++ symbols not demangled
 (2549) Linux params/locals not correct on_line

Features and Fixes in RootCause 2.2.8/Aprobe 4.4.8 for (32-bit) Linux
-----------------------------------------------------------------------
 (1197) Linux: exit() from thread doesn't trigger program on_exit
 (2490) provide axdln for Linux
 (2492) axdln doesn't tolerate # lines
 (2493) apc rejects -unit name with mixed case
 (2494) apc should prefer local symbol if file scope given
 (2495) Further branch coverage improvements
 (2496) GNAT Linux reference to inout param in stubbed function wrong
 (2497) apcgen -T and -M don't work
 (2499) apmkadi on Linux checksum relies on stripped item
 (2501) core dump on stripped Linux executable
 (2505) create a name demangling tool
 (2507) compile errors in APC compile for array struct members

Features and Fixes in RootCause 2.2.7/Aprobe 4.4.7 for (32-bit) Linux
-----------------------------------------------------------------------
 (2449) brcov doesn't handle lines from multiple files
 (2450) cannot log GNAT static-sized record subtype
 (2451) support enable/disable calls and apdemand in memstat
 (2453) brcov improvements
 (2454) COVERFILE files cause core dump when inserting multiple files
 (2457) apbc.pl doesn't correctly mark some lines
 (2460) apcgen warnings fo C++ symbol _Z
 (2461) apcgen -La reads all debug info
 (2462) apbc/bc.pl does not handle unprobed lines in .bc
 (2463) coverage does not handle fork() well
 (2465) Trap patch on line at end of function not made
 (2469) apc problems with wavefront 18.0w 20170628
 (2471) GNAT 18.0 w20170601: main-nested subp debug info not fo
 (2472) typo in error message
 (2474) Aprobe setup script must check for all of Aprobe
 (2476) Upgrade i386 disassembly
 (2477) apc generates incorrect layout for repspec'd variant record
 (2480) no line information in Gnat shared library
 (2481) Linux libdal.so does not support preinit
 (2484) -qmin_heap breaks memstat traceback table
 (2485) apc defines unknown types for type nested in subp decl

Features and Fixes in RootCause 2.2.6d1/Aprobe 4.4.6d1 for (32-bit) Linux
-----------------------------------------------------------------------
 (2464) GNAT exception reraise changed for wavefront 18.0w 2017
 (2468) aprobe setup script doesn't handle blanks in PATH

Features and Fixes in RootCause 2.2.6d/Aprobe 4.4.6d for (32-bit) Linux
-----------------------------------------------------------------------
 (2373) wrong filename scope for GNAT symbols
 (2374) $APROBE/setup should update library path
 (2375) Warn if probing system calls
 (2376) log fixed-length string return value fails
 (2378) partial coverage percentages not obvious
 (2379) Linux target expression problems
 (2382) Linux/Gnat exception reason string not right
 (2383) Add support to raise C++ exception from probe
 (2384) Linux/Gnat position of fixed-length string params wrong
 (2387) emit DWARF warning messages in verbose mode
 (2388) atcmerge should print Aprobe version
 (2390) support gnatpro 18.0w for APTs
 (2393) support apcgen -D for big Linux executables
 (2394) support wildcard in apcgen -p argument
 (2395) support logging local/global variables in apcgen
 (2396) make ExpandDottedLines the default for coverage
 (2397) support COVERFILE 'sourcefilename' in coverage.cfg
 (2399) fix logging Linux return structs
 (2401) Coverage should report reasons functions not probed
 (2402) Gnat 18.0w DWARF subtypes before base type
 (2404} Warn about mismatched function version in coverage
 (2405) atcmerge should allow merging diff func versions
 (2406) apbc should warn if no source files found/given
 (2407) Warn if Gnat [nnn] suffix not needed
 (2409) atcmerge should produce .bc file as an option
 (2411) Allow aliases of module names (libc.so.6)
 (2413) Aprobe Linux32 stat/fstat/lstat on 64-bit file system
 (2415) Coverage should report maximum offset count for line count
 (2423) Add source file matching option to apcgen
 (2424) apcgen generated incorrect scope for func-local var
 (2425) apc can't reference Gnat out params when optimized
 (2426) Problem stubbing abort() with coverage.ual
 (2430) provide access to STL exception message
 (2431) exceptions.ual should provide Ada/C++ exception message string
 (2432) move DWARF warnings to verbose mode
 (2435) Linux/Gnat tag field is hidden when logging
 (2436) Linux on_exit probe breaks cross-lang exception raise.
 (2441) memstat statistics are displayed incorrectly
 (2443) provide traceback blacklist address support
 (2445) Linux/Gcc handle cxx11 tag when demangling names
 (2455) apc generated bad code for Gnat in array param ref

Features and Fixes in RootCause 2.2.6c/Aprobe 4.4.6c for (32-bit) Linux
-----------------------------------------------------------------------
 (2370) wrong symbol filename used due to #include
 (2371) Linux aprobe fails to demangle 'gnat170w9' symbols

Features and Fixes in RootCause 2.2.6b/Aprobe 4.4.6b for (32-bit) Linux
-----------------------------------------------------------------------
 (2280) Linux Aprobe problem with LD_PRELOAD in forked process
 (2300) Linux/GNAT upscope references not supported
 (2318) bc support for linux
 (2319) Linux/Gnat exception reason string not reported.
 (2321) sigsegv.ual causes core dump on Linux386
 (2322) Linux/Gnat Interfaces.C.Long_Float not handled
 (2323) Linux/Gnat records with dynamic sized components layout
 (2326) Linux apc fails when probes in same file
 (2332) Continuation of i2329 Gnat tracebacks
 (2333) Linux (F) 'thread stacks were overlapped'
 (2334) coverage.ual should do final snapshot on abort
 (2335) Linux coverage gets bad line info, causes sigsegv
 (2337) C++ const int declarations not handled
 (2338) ap_RaiseGnatException broken for Gnat shared library
 (2340) implement ap_UnprobeThread to avoid GNAT stackwalk core
 (2341) C++ exceptions not translating correctly
 (2342) GNAT abort task causes core dump unwinding
 (2346) Switch to pthread TLS support for thread tables
 (2348) Linux/GNAT: on_line probe gets wrong param value in nes
 (2349) use lower case exception name for GnatRaiseExceptionByN
 (2350) support ap_GnatRaiseException in on_entry and on_line

Features and Fixes in RootCause 2.2.6a/Aprobe 4.4.6a for (32-bit) Linux
-----------------------------------------------------------------------
 (2324) Aprobe traceback skips a frame when exit probe present
 (2329) Linux/Gnat cannot instrument lines with extended float instructions

Features and Fixes in RootCause 2.2.6/Aprobe 4.4.6 for (32-bit) Linux
-----------------------------------------------------------------------
 (2090) Linux/GNAT: update out parameter on_exit wrong
 (2243) Linux apcgen, apc should work with g++/gnat .o files
 (2259) GNAT/Linux core dump in __gnat_backtrace
 (2267) bad reference from probe for GNAT out parameter
 (2272) linux problems with ap_CallerLocation
 (2277) Linux atcmerge core dump
 (2278) Linux/GNAT: problems logging ada.bounded_string component
 (2279) GNAT/Linux apcgen wrong for param after string param
 (2282) Gnat/Linux record layout problem
 (2283) deliver libdal.so.stub for Linux
 (2285) Gnat/Linux support for backtrace(3)
 (2286) Linux/Gnat apcgen assert on char16_t predef type
 (2287) Linux/g++ DW_DLE_ATTR_FORM_BAD on huge struct
 (2288) Linux/g++ exception class ctor debug info not found
 (2289) Linux/Gnat Ada out param with cast wrong
 (2290) apc: object location cannot be determined
 (2293) Gnat/Linux access to in param on_exit
 (2295) Gnat/Linux array slice lower bound not static
 (2297) apc c constant array treated as Ada
 (2298) gnat generates REP component for partial rep spec
 (2299) Linux apcgen prints wrong source file name
 (2307) Linux/Gnat filenames wrong for template methods
 (2310) use MAP_ANONYMOUS on linux
 (2311) Linux/Gnat problems with exit probes, exceptions, Ada-C++
 (2317) deliver call graph probe apcgp.ual
 (2318) bc support for Linux

RootCause 2.2.5d/Aprobe 4.4.5d for (32-bit) Linux
-----------------------------------------------------------------------
 1. (1361) add changes, comments to coverage.2/bc.pl
 2. (1477) coverage sometimes fails to report missed lines
 3. (2203) coverage.cfg should allow inline comments
 4. (2239) Linux/386 bad messages for unkown ins type
 5. (2240) no coverage snapshot on SIGINT or exception
 6. (2241) atcmerge fails merging .tc files from multiple apps
 7. (2242) apcgen -f doesn't handle include files
 8. (2244) apcgen misses C++ members fields in big class
 9. (2246) failure for slice of array'access
10. (2248) core dump on ap_CallerLocation
11. (2249) optionally reset counts between coverage snapshots
12. (2250) each coverage snapshot should write separate .tc and .bc
13. (2253) coverage summary report line should put symbol last
14. (2254) coverage CommaOutputFile gets duplicate content
15. (2256) improvements to coverage reports
16. (2261) add experimental expand-dotted-lines tool
17. (2262) support .bc files on Linux
18. (2263) no APC type created for GNAT rep spec'd field
19. (2264) handle private incomplete types in GNAT
20. (2269) enhance statprof to profile enitre address space
21. (2270) report all default options in coverage cfg file

RootCause 2.2.5c/Aprobe 4.4.5c
------------------------------
 1. (2186) GNAT array base address computation incorrect
 2. (2189) GNAT exceptions not intercepted
 3. (2198) GNATPro/Linux: core dumps reading DWARF
 4. (2199) core dumps instrumenting Firefox
 5. (2205) problem parsing gcc 5.x attribute list
 6. (2207) ap_DoCoverageSnapshot() doesn't work
 7. (2213) Linux/GNAT CompilerKind wrong if package 'sec'
 8. (2215) Linux/Aprobe/GNAT core dump reading line information
 9. (2224) Linux assert failure in ap_CallerLocation
10. (2237) apcgen doesn't recognize C++ built w/GNAT

Features and Fixes in RootCause 2.2.5b/Aprobe 4.4.5b for (32-bit) Linux
-----------------------------------------------------------------------
 1. (2138) problems building on centos7
 2. (2139) lines not logged if duplicate timestamp
 3. (2141) apc parse error parsing complex gnu C type decl
 4. (2144) gcc4.8 requires dwarf4 support
 5. (2160) fix memwatch, memstat examples, output
 6. (2164) java aborts under RC trace

Features and Fixes in RootCause 2.2.5a/Aprobe 4.4.5a for (32-bit) Linux
-----------------------------------------------------------------------
 1. (2117) show instantiation line in apc/apcgen comments

Features and Fixes in RootCause 2.2.5/Aprobe 4.4.5 for (32-bit) Linux
---------------------------------------------------------------------

 1. (1182) on_line(last) doesn't work for generic instance
 2. (1921) avoid NFS apd logging
 3. (2051) Linux: coverage breaks I/O app
 4. (2069) unhelpful message for $a[i, j]
 5. (2085) support public gnat on linux

Features and Fixes in RootCause 2.2.4/Aprobe 4.4.4 for (32-bit) Linux
---------------------------------------------------------------------
 1. (1894) rhel6: sometimes can't instrument on_line(first)
 2. (1996) problems with trace.ual in PA/ada2cpp/g++ Linux applications
 3. (2002) PA eqOp symbol demangled wrong by RC223a


Features and Fixes in RootCause 2.2.3a for (32-bit) Linux
---------------------------------------------------------

 1. (1962) (OCS) don't retry failed demangling
 2. (1964) (OCS) provide libaprobe.adi

Features and Fixes in RootCause 2.2.3 for (32-bit) Linux
---------------------------------------------------------

 1. (1865) No module found for pa4_get_reraise_ptr(0)
 2. (1880) apcgen: '(E) ap_dwarf_loclist_n: DW_DLE_ATTR_FORM_BAD'
 3. (1885) PROGRAM_ERROR from apc refing C file in Linux PA exe.
 4. (1892) local data addressed wrong on rhel6/gcc4
 5. (1842) Linux mismatched ADI files not flagged
 6. (1884) function inside probe thread hangs
 7. (1896) apc -v shouldn't do gcc -v
 8. (1897) rhel6, handle non-standard frame base reg
 9. (1899) rhel6, Apcentry can't demangle g++ names
10. (1900) gcc4.4, g++ file-static debug info not found
11. (1911) typeof doesn't find C types in Ada binary
12. (1912) redefinition of typedef .. PtrTo_void
13. (1930) provide C++ string helper UAL

All of the above fixes also apply to the 64-bit version of the product.

Fixes 1..4 were delivered as patch 4.4.2i-p1 on November 16, 2011.

Issue 1930 introduces "cppstring.ual" which provides ap_GetCppString() and
ap_SetCppString() functions for use in your probe.  Its usage is 
illustrated in $APROBE/examples/predefined_probes/cppstring/.

Features and Fixes in RootCause 2.2.2i
--------------------------------------

 1. (1020) sigsegv stack trace incomplete
 2. (1802) port sigsegv.apc to 64-bit Linux
 3. (1804) support universal_traceback in PowerAda/Linux

Features and Fixes in RootCause 2.2.2h
--------------------------------------

 1. (1724) ap_DoPeriodically() should be cancellable
 2. (1770) support gcc4 optimized code
 3. (1773) handle some linux386 struct return logic (tzsrgsc1)


Features and Fixes in RootCause 2.2.2g
--------------------------------------

 1. (1730) fix Linux Aprobe/Java failure for JRE 1.6.0_18
 2. (1738) fix apc parse error for c99 'restrict' keyword
 3. (1756) remove ksh requirement 


Features and Fixes in RootCause 2.2.2e
--------------------------------------

 1. (1207) apformat should remember ADI files (see NOTE 1)
 2. (1386) (OCS) fix string leak in CopyNode
 3. (1434) (OCS) provide workaround for bad type layout (see NOTE 2)
 4. (1436) (OCS) refactor type replacement implementation
 5. (1441) (OCS) implement 'formatof' to manipulate apc print routines (NOTE 2)
 6. (1442) different apc results for upper, lower case
 7. (1485) formatof + typeof don't work together (NOTE 2)
 8. (1497) RC/Linux: g++ 3.4 trace setup problems
 9. (1551) Provide memleak ual for Aprobe 
10. (1561) RCLinux: aprobe DOA on FC6
11. (1570) Linux: make scripts more linux-friendly
12. (1582) JVMTI: aprobe.jar has classes not in com.ocsystems
13. (1600) Linux: aprobe runtime can't find lines in .so file
14. (1602) Update linux examples
15. (1621) ap_DoPeriodically incorrectly uses signal on threaded app
16. (1624) Linux: FC9 parse error on __signed__
17. (1625) Linux: gcc4 line numbers all wrong
18. (1626) Linux: gcc4 exceptions not supported
19. (1631) Linux: probes on libc from .h files don't work
20. (1632) Linux: profile.ual's benchmark broken
21. (1633) Linux: RC trace setup has no debug info due to libdwarf
22. (1635) Linux: do 'set +u' in setup scripts to avoid breakage
23. (1636) Linux: problems with log_env probe

  NOTE 1: apformat now "remembers" ADI files (i1207)
  
  By customer request, aprobe logs the paths of ADI files that were
  loaded at runtime, and apformat attempts to load these again at
  format-time.  apformat will not fail if they are absent, and apformat
  can be forced not to load them by renaming the .adi file itself, or
  specifying -z on the apformat command line and explicitly naming UALs
  that are wanted.  Also, apformat -u info -p "-u" ... now lists ADI
  files applied at runtime.
  
  
  NOTE 2: APC auto-formatting extensions added (i1434, i1436, i1441, i1485)
  
   This version introduces two extensions to the APC language to allow
   user-specified replacement of default apc behavior.
   
   ** typeof Declaration **
   
   The first extension is a new use of the keyword 'typeof' to designate
   a locally defined APC type to be used in place of the type that the
   apc compiler would generate to overlay the in-memory image of a
   target program's type.  For example:
   
     typedef struct
     {
        int word0, word1;
     } my_time_type;
     
     typeof $time_type  my_time_type;
   
   Then wherever an object or field of type $time_type was logged, it
   would be interpreted as type my_time_type.
   
   Why would you do this?  Mostly to work around bugs or limitations in
   the APC compiler.  The above is a real-world case where time_type was
   defined as a 'double' but the 8-byte alignment imposed by the apc
   backend compiler didn't match the 4-byte alignment used by the target
   compiler.  By replacing the 'double' with a struct consisting of 2
   ints, the alignment restriction was removed and everything worked.
   
   The onus is entirely on the user to define a compatible type; there
   is no checking for compatibility.  The original type layout must be
   determined by looking at the C code generated by the 'apc' compiler:
   
     apc -g t.apc -x t.exe  # creates t.apc_c.c file
   
   This can be further cleaned up and made readable, for example:
  
     cat t.apc_c.c | \
       grep -v "^#line" | \
       sed "s/^ *//" | grep -v "^$" | \
       indent -st -sob -dj -i3 -bl | expand -3
   
   It can still be complicated, so generally the replacement type will
   be determined in cooperation with OC Systems support.  This can then
   be defined in an include file that users can include into their
   probes as needed.
   
   
   ** formatof declaration **
   
   The typeof extension described above led to the need for a
   corresponding formatting extension, so that the replacement type
   could be printed as if it were the original, or in any other way the
   user desires:
   
      formatof type_name print_proc_name;
   
   This declaration says: when generating the automatic formatting code,
   call the already-defined function 'print_proc_name' to print any 
   object or field of type 'type_name'.   A "print proc" always has the
   prototype:
   
      void print_proc_name(int Indent, ap_NameT Prompt, type_name *Arg);
   
   For example, see the functions ap_Print_* in aprobe.h.  So, to use
   the formatof declaration to print "my_time_type" as a double value,
   you would do something like:
   
      static void 
      Print_my_time_type(int Indent, ap_NameT Prompt, my_time_type *Arg)
      { 
         double d;
         memcpy(&d, Arg, sizeof d);
         ap_Print_double(Indent, Prompt, d);
      } 
   
      formatof my_time_type Print_my_time_type;
   
   As with typeof, there is another form of 'formatof' which gives
   the existing print procedure name for a given type or expression:
   
      formatof( type_name )
   
   So you could replace the call to ap_Print_double above with:
   
      formatof(double) (Indent, Prompt, d);
   
   Yes, it looks strange, but it works.
   
   As with 'typeof', it's up to the user to ensure that the print
   routine is declared with the right prototype and does something
   sensible.  As with format routines the Arg parameter is passed by
   reference as in the example above.
   
   The major limitation we know of right now is that the 'formatof'
   mechanism doesn't work for array types, even fixed-sized ones.  
   This is because of the special handling of such types to capture the 
   size of an array as a "slice".  
   
   Aprobe historians may know that 'formatof' was originally defined
   as part of the language, for actually defining format routines.
   While the syntax was recognized, it was never implemented because it
   didn't fit the general usage of automatic formatting.  This seemed
   like a good way to capture the original intent.

Features in RootCause 2.2.2
---------------------------

 1. RootCause now supports 32-bit apps on 64-bit linux. (i735)
    64-bit applications are still not supported.

 2. Parameters of type 'long double' are now supported. (i787)

 3. Numerous improvements to the handling of ADI files. (i829, i844, i963, 
    i1188)

 4. Reduced runtime memory usage, including an option -qmin_heap which
    discards symbol table after instrumentation. (i879, i885, others)
    (See NOTE 1 below.)

 5. 'Find Function in Trace Events' now works from Event Summary Tree. (i902)

 6. The mechanism for disabling/enabling probes has been overhauled
    with more reliable mechanisms (i948). (See NOTE 2 below.)

 7. RootCause 'Build' operation now invokes prebuild.ksh, postbuild.ksh in 
    workspace if present, writing output to Message window. (i1014)

 8. Extended functionality of APROBE_DUMP_CORE_IF_ERROR. (i1018)
    (See NOTE 3 below.)

 9. Fixed crash on thread data initialization. (i1049)

10. Fixed Java 1.5 class verification error. (i1155)

11. Added 'apformat -f', analogous to 'tail -f', to format apd file(s) as they
    are written.  (See NOTE 4 below.)

12. Fixed problem with JVM and java -server invocation. (i1191)

13. Add support of IBM JVM on Linux i386. (i1204)

14. Make all -v, -!, ap_Debug() and ap_DumpMemory() output go to stderr. 
    (i1209)

15. Fixed problems with Linux runtime module location, size on RHEL4.
    (i1211, i1280)

16. Make ap_DoPeriodically() use threads when available on Linux. (i1231)

17. Removes spurious warnings when using gcc 4.x. 

18. Avoid optimization problems with params on_exit by using saved on_entry 
    params unless overridden with 'apc -y'. (i1289) 

19. Use libelf.so rather than libelf.a. (i1298)

20. Fixed a race condition in ap_HashTableDelete. (i1303)

21. Re-enabled support for DisplayReport SubtotalReport in events.apc. (i1310)




Features in RootCause 2.1.4b
----------------------------

 1. RedHat Fedora Core 3 and Enterprise Linux 4 (kernel 2.6.x) are now 
    supported.
  
 2. The function ap_GetHostId() was changed to return the same value
    as the "hostid" command instead of the license manager's host ID, 
    which is now provided by the new function ap_HostLicenseId().  
    The function ap_GetHostName() which returns the same string as 
    "hostname". (i647)

 3. The memwatch, memstat java_memstat probes now support "REMOVE"
    filters which identify allocations that should not be reported.  
    This are documented in the sample configuration files for these
    probes provided in $APROBE/probes. (i650)

 4. The ADI (Aprobe Debug Information) support has been improved in
    several ways: aprobe will look for the default-named adi file in
    the same directory as the application and will use it if it's
    checksum matches; apmkadi -v reports more information; aprobe -v
    will report whether ADI file was used and if not, why not (e.g.,
    checksum mismatch).  (i680)



Features in RootCause 2.1.4a
----------------------------
 1. The management of APD rings in the presence of frequent process creation
    was made more robust (i409).

 2. apinfo -l now prints the source file name associated with source
    lines (i538).

 3. Several improvements were made to the 'statprof' probe (i579, i585).

 4. PowerAda shared libraries are now supported by the RootCause 
    Trace Setup dialog (i581).



Features in RootCause 2.1.4
----------------------------

 1. Programs compiled with GCC version 3.x compilers with the "-g" flag
    (which generates DWARF debug information) are now fully supported.

 2. Several critical defects in RootCause deploy functionality were 
    corrected.

 3. The statprof.apc probe was ported to linux.  This probe enables
    the kernel services for performing statistical profiling on a
    given address space range.

 4. The events probe was enhanced to export JNI calls for all
    functions defined in events.h.

 5. Improvements were made in the way dot-indicators are propagated
    in the GUI's Trace Setup window.

 6. A problem where Aprobe disturbs the global "errno" value was been
    corrected.

 7. A new option (-r) has been implemented for the statprof custom
    probe that resets the counts to zero for each snapshot. This will
    result in profiling results for each interval between snapshots
    which are independent of each other, rather that the default which
    is cumulative.

 8. Java 1.5 is now supported.

 9. Several corrections were made to the custom memcheck probe.

10. A custom probe is provided to allow instrumentation of the
    de-facto standard for Java logging, log4j. This probe provides the
    ability to watch the configuration file to look for changes.

11. Handling of very large Java methods has been improved.

12. A new function is added to aprobe.h:

       extern void ap_HeapStats(ap_Uint64   *TotalBytesAllocated,
                                ap_Uint64   *TotalBytesFreed);

    This may be called any time in a probe to determine the amount of
    memory allocated by Aprobe itself, separate from the application
    being probed.  When running aprobe with the -v flag, these
    statistics are printed at various points during program startup, for
    example:

       Aprobe: Initialized thread stack
       Aprobe: Heap memory stats
               Allocated bytes: 26016
               Freed bytes: 0

13. The Aprobe run-time system and probes, as well as any user probes
    that use ap_Malloc(), now allocate heap memory from shared memory
    allocated using mmap() rather than from the program's memory space
    using malloc().  This allows Aprobe to handle applications with huge
    symbol tables and memory needs.

    The aprobe configuration parameter "-qmmap=<address>" has been
    extended to apply to all uses of mmap including this heap memory
    allocation.  Hence the specification, "-qmmap=0x20000000" would
    indicate that the first mmap operation would begin at that address
    and each subsequent mmap operation would request the next
    available page after that, whether used for APD files, aprobe
    heap, or another purpose.

    In order to allow all aprobe shared memory usage to fit into a
    single segment by default, the default size of a single APD file was
    reduced from 256M to 64M.  As always, this can be changed with the
    -s option and multiple APD files can be specified with the -s
    option.  The default size of the persistent APD file (the one
    without a numeric suffix) is reduced from 256M to 128M.  As always
    this can be changed with the -sp option.

14. When the 'apc' command fails due to a non-fatal error, and the
    option -g or -C was specified, the intermediate C file (with suffix
    .apc_c.c) is now preserved as a potential debugging aid.

15. A number of formatting improvements were made in the memstat and 
    java_memstat report files.

Features in RootCause 2.1.3a
----------------------------

 1. The Trace Events summary tree may now be pruned based upon
    statistic usage ratios between parent and child nodes.

 2. Instrumentation overhead can now be specified and reflected in
    the Trace Events summary tree.

 3. Statistics are now reported for individual nodes of the Trace
    Events summary tree.

 4. Text save/copy operations have been implemented for individual
    nodes of the Trace Events tree.

 5. Function/Method TRIGGERS have been added to the RootCause GUI.
    This mechanism allows tracing to be specified globally and
    controlled dynamically at runtime based upon function/method
    entry.

 6. Support has been added to allow probes to modify the parameters
    passed to java methods.

 7. stub support has been implemented for java methods.

 8. java run and format -time performance improvements have been
    implemented.

 9. Functions/Methods reported in the Load Shed table are no
    longer reported in the Performance Summary tables.

10. Some trace UAL options have been deprecated.

11. Various improvements have been made to tables in Trace Events.

12. Improvements have been made to the manner in which time is
    computed for recursive function calls.

13. RootCause now ships with version 1.4.2 of the java JRE.

Features in RootCause 2.1.3
---------------------------

 1. The "rootcause merge" command has been enhanced and a 
    "rootcause copy" command added to better support the use of a general
    Workspace against multiple applications.

 2. The LogTraceback method in TraceBean is now exported to facilitate
    logging throwable exceptions.

 3. The suffix ".xml" is now recognized as an alternative to ".xmj" 
    as a valid suffix for a Java Probe deployment descriptor file.

 4. Support has been added to allow dynamic Workspace selection
    based upon the instrumented application's command line arguments.
    See http://www.ocsystems.com/faqs/rc_aprobe_faq.html#q9.12.

 5. The default limit on number of trace events has been increased to
    1,000,000.  Note that since this is a per-user preference, this
    will only apply to new users or if you change your APROBE_HOME 
    directory.

 6. Trace logging performance improvements have been implemented for 
    recording machine time.

 7. .zip files discovered in the classpath are now treated just like
    .jar files.

 8. Two new pragmas are available to categorize probe targets. "pragma
    required" (the default if the module is found) identifies a probe
    target that must be present, while "pragma optional" (the default
    if the module is not found) identifies a probe target that need
    not be present. Use of these new pragmas make probes more
    readable, avoid runtime warning messages, and support the ability
    to use parameters from header files.

 9. Custom probes no longer need to explicitly check
    ap_RootCauseTraceIsEnabled to determine if tracing is enabled,
    this is now performed automatically in ap_LogSubprogramEntry/Exit.

10. Performance enhancements have been made to java method entry/exit logging.

11. memcheck.apc is now distributed. It is a memory corruption probe
    that uses a "fence" technique to detect buffer under/over runs, 
    as well as multiple deallocates.

12. Support for upcoming PowerAda 5.3.1 was added.


Features and Fixes in RootCause 2.1.2
-------------------------------------

 1. The -jar option is now supported for Java. In order for this to work, 
    the .jar file must be used to initialize the workspace (normally
    this will be automatic).  The previous workaround, changing this to
    specify the .jar file on the classpath and explicitly providing the
    main class, may be removed.

 2. Exceptions raised by C++ code compiled with gcc 3.x are now supported.

 3. Numerous fixes have been made to the handling of PowerAda debug
    information. This version only supports the new PowerAda 5.3 and
    newer.

 4. The time span displayed in the event tree is now clearly displayed.

 5. All event nodes can now be displayed in a text window for better
    integration with standard probes. This also fixes problems with
    the truncation of some useful data such as tracebacks.

 6. New statistical tables for performance analysis have been introduced,
    in place of the CALL_COUNTS tables. These provide summaries of both
    call counts and wall-clock times for methods and functions, and
    show additional statistics if provided by predefined UALs. This
    change allows out of the box profiling-style information to be viewed.

 7. A new option to log parameters for multiple Java methods has been
    introduced in the trace setup window.

 8. The deploy option is no longer licensed separately and customers who have
    any RootCause console license will be able to deploy.

 9. RootCause now correctly handles java (1.4) command lines where the JVM
    kind (server, client, etc.) is not the first parameter specified.

10. Wildcard performance in the trace setup has been improved and a number of
    fixes made to the propagation of the trace / probe markers.

11. Lines are no longer truncated in the source pane.

12. Memstat and Java memstat output in the event viewer has been greatly
    improved.

13. A liberty.so library is now delivered allowing demangling of gcc 3.x 
    C++ methods.

14. A new cached hashtable facility is now available in the runtime. See the
    ap_Cache... routines in aprobe.h for details.

15. The Memstat probes now correctly analyze the data when long runs are used
    in combination with a format start time option.

16. The Java memstat probe will disable the -parallel GC option which is not
    supported by the JVMPI interface.

17. The perf_cpu and perf_rusage probes are now included in the agent
    installation.

18. Problems related to enabling and disabling of trace have been addressed.

19. Formatting from the RootCause GUI has been fixed on RedHat 9. There appears
    to be a bug in the system call but this has been worked around.

20. A problem with the thread-stack handling code on Linux has been fixed.

21. Problems with attempting to demangle Fortran symbols as if they were Ada
    symbols have been fixed.

22. The licensing software has changed and now uses the same version across
    all platforms. The upshot of this for Linux is that new license keys are
    required.

Features and Fixes in RootCause 2.1.1
-------------------------------------

 1. You can now print graphs produced by the memstat and java_memstat
    probes.

 2. A workaround for a JVMPI bug causing OutOfMemory errors was added 
    to java_memstat.

 3. Empty jar files and empty methods are now tolerated by RootCause.

 4. You can now directly add a classpath entry via "Find Class..." 
    in the Trace Display.

 5. An incorrect ordering in the "View By Time" view in the Trace Display 
    was fixed.

 6. A problem with incorrect nesting of events in the Trace Display was fixed.

 7. The "Remove All Probes" operation in Trace Setup is now much faster.

 8. Installing RootCause from CD no longer requires 'root' privilege 
    (after the CD is mounted).

 9. Very long aprobe command-lines (e.g., due to long classpath)
    are now accepted.

10. An off-by-one problem with line numbers in tracebacks was fixed.

11. Several problems mapping PowerAda symbols to the corresponding debug
    information in the PowerAda library have been fixed.

12. RootCause now operates by default in a "Developer" mode where 
    the "Deploy" and "Decollect" operations are not supported.  An 
    additional license key is required to enable these operations.


Features and Fixes in RootCause 2.1.0
-------------------------------------

 1. The Memory Analysis Probes "memstat" and "java_memstat" have been 
    integrated with RootCause.  These probes use statistical sampling
    and analysis to collect memory and Java object usage data about your
    program with low enough overhead to use in real-world testing.
    See http://www.ocsystems.com/user_guide/probes/memstat.html for a 
    complete description.

 2. New performance analysis support has been added to RootCause, with
    which resource data is collected at runtime and then summarized by
    thread and call-site under a new "Event Summary" node. 
    The existing trace probe, and new "perf_cpu" and "perf_rusage" probes 
    make use of this support to provide much of the power that the 
    Aprobe "events.ual" probe provides to command-line users.

 3. The UALs tree in the RootCause Main window has been "cleaned up", and 
    the RootCause Help menu now provides a "UALs" item that describes
    each of the probes in the UALs tree.

 4. A "Find Text In Source" popup menu item has been added in the
    source pane.  Just right-click (with MB3) in the upper-right pane 
    when source is visible to see the item, and click on it to bring
    up a dialog.

 5. A "Copy" action has been added to the  Event Tree and Details Tree
    in the Trace Display.  Just select nodes by clicking (with normal
    multi-select behavior by using the Control and Shift keys), then
    right-click to show the popup menu.  Click on Copy, and this will 
    copy an image of the selected nodes to the primary clipboard.  
    You can then use the "xclipboard" utility to access the copied text.

 6. The NO ACTION default item in the Probes tab in Trace Setup has been
    removed, so the default is now Function Entry.

 7. A problem re-opening a workspace on a smaller display has been fixed.

 8. Performance of the Trace Display has been improved.

 9. Shadow include directories are now included by default when parsing the
    header files so you can more easily create your own shadow headers.

10. Problems with the list of APD files being incomplete have been fixed.


Features and Fixes in Aprobe 4.3.0
----------------------------------

 1. A new probe (java_memstat.ual) is now delivered for analyzing Java object 
   leaks. This utilizes the JVMPI interface provided by the Java virtual
    machine to statistically sample and analyze java object growth and pinpoint
    problem objects.

 2. The existing memstat probe has been substantially improved to provide
    many of the same features as the new Java object leak probes. It too
    can now sample and statistically analyze the memory usage of applications
    that use the standard malloc and free system calls. 

 3. An interface UAL to the JVMPI is now available. Its specification is in
    libapjvmpi.h but a working knowledge of the JVMPI interface is recommended
    to make use of it. 

 4. The logged data has been optimized a little better to increase the number
    of traced items that can be stored in each data file.

 5. The heap.ual predefined probe that some of our customers have grown
    attached to over the years is now delivered again, albeit in an
    undocumented state.

 6. New APIs for creating a vector from a hash table have been added.

 7. Support for getting symbol and debug information from archive files
    has been added to 'apc' and 'apcgen'.