The ADL HDF packer and unpacker tend to be picky about the paths provided them. In the case of the packer, the only way to provide the output path is to modify the value of "DMS_PATH" in $ADL_HOME/cfg/DDSADL_CFG.xml. Environment variables are OK, but make sure the path is an absolute path and it's writable.
Assuming that's not your problem (I doubt it is), I think you're going to have to try to run the unpacker in a debugger. I'm not sure what debugger you use, but gdb is popular on Linux. You can use it like this:
Code: Select all
~/tmp > cat error.cpp
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
for(int i = 0; i < argc; ++i)
{
cout << "argv[i] is " << argv[i] << endl;
}
cout << "starting..." << endl;
int array[5];
int x = -100000;
int y = array[x];
cout << "finished..." << endl;
return 0;
}
~/tmp > g++44 -g error.cpp
~/tmp > ./a.out
argv[i] is ./a.out
starting...
Segmentation fault
~/tmp > gdb --args a.out file1
GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-32.el5_6.2)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/adluser/tmp/a.out...done.
(gdb) run
Starting program: /home/adluser/tmp/a.out file1
argv[i] is /home/adluser/tmp/a.out
argv[i] is file1
starting...
Program received signal SIGSEGV, Segmentation fault.
0x000000000040087d in main (argc=2, argv=0x7fffffffe5a8) at error.cpp:12
12 int y = array[x];
(gdb) where
#0 0x000000000040087d in main (argc=2, argv=0x7fffffffe5a8) at error.cpp:12
(gdb) print x
$1 = -100000
(gdb)
I created a sample C++ program with a segmentation fault as an example. You must compile with the "-g" flag to g++. The -g turns on debugging symbols when the code is compiled. The -g is already the default for ADL, so you shouldn't have to do anything special.
Then run the program with "gdb --args /home/scientist/CSPP/ADL/tools/bin/ADL_Unpacker.exe VAOOO_npp_d20120618_t1909025_e1910267_b03326_c20120619014327746381_noaa_ops.h5"
Once gdb starts, type "run" to execute the program. gdb should stop at the point it detects a seg fault. At that point, you can type "where" to get a stack trace and type "print aVarNameHere" to see the value of variables. If you get a stack trace, please post it to this thread.
Do other h5 files cause a segmentation fault? Or is it just that one? How large of a file is it? Is it able to be emailed? If it's easily emailed, I can try to run unpack it and see if I see the segmentation fault. If I could reproduce it, you wouldn't need to use gdb.
As always, please post back if something doesn't make sense.