VA CMP can show too many traces
Brought to you by:
billmenger,
seismick
This bug only occurs if built with x86_64_intel91_mpich2
If you load the CMP traces created by SVA, there is an error alert
CMP:
You have attempted to read traces
before of after the your file or the file
cannot be found or opened
Then all gathers are displayed instead of one. In the display parameters, the number of traces is correct.
If you advance to the next location, then only 2 traces appear for the CMP. If you go back to the first location
then the first gather is displayed with correct number of traces. Advance right again, and only 2 trace
appear in the other gathers.
One more problem with this platform - if the CMP gathers are high-fold and has many traces,
then when advancing to the next analysis location, VA will crash.
If launched from console window (not CFE), there is an error message:
You do not have enough memory on your server for this image.
The error messages come from check_size.cc
I found that _user->getNumberToSkip() and _user->getNumberToPlot() return very
large numbers. These are long integers. On closer inspection, these have these
have the correct value in the low-order 32 bits, but some other number has
been poked into the high-order half.
_user->getNumberToPlot() returns a variable _nplt. It goes bad in
function VaCmpGui::setParameters in va_comp_gui.cc when
setNPlt(_cmptp) is used. Variable _cmptp is in the CMP display parameters
menu, along with _cmpft and _cmpnskp. These 3 appear correct in the menu,
but garbage is passed back to code in va_comp_gui.cc. The other
variables in the display parameters menu are type float and are valid.
The problem is in the VaCmpGui constructor where CmpText[] is defined.
_cmptp, _cmpft and _cmpnskp are type long, but SLType_int is specified.
So change it to SLType_long instead like so:
static SLText CmpText[] =
{
{ "cmpft", NULL, NULL, SLType_long, CMPft },
{ "cmpnskp", NULL, NULL, SLType_long, CMPnskp },
{ "cmptp", NULL, NULL, SLType_long, CMPtp },
};
Then va compiled with Intel 64-bit goes okay.
64-bit gfortran build did not suffer from the bug, and still works
okay with above patch.