Hi, I am writing in reference to my previous e-mails: 1. http://opendx.npaci.edu/mail/opendx-dev/2003.08/msg00000.html 2. http://opendx.npaci.edu/mail/opendx-dev/2003.07/msg00079.html
I am very glad to let you know that the problem is finally resolved! The problem is in the way OpenDX loads its modules on AIX. In the file "src/exec/dpexec/loader.c" it is done by calling the function "load", which does not initialize "static" C++ objects of out module. Then our module (exactly it was HDF5 library) wanted to operate on uninitialized objects, thus causing a segmentation fault. To cure the problem, IBM provides "dl" functions as a new way of handling modules (since AIX v. 4.2), and some replacement functions for "load" and "unload": "loadAndInit" and "terminateAndUnload". The file "loader.c" has two commented lines of code with functions "loadAndInit" and "terminateAndUnload", and my first try was to uncomment these lines (and to comment the lines with "load" and "unload"). But then I had to link dxexec with the C++ library by "-lC", because "loadAndInit" and "terminateAndUnload" are there. Once I added this option, dxexec would crash. I don't know why. Then I simply pruned all the code for "ibm6000" in loader.c and made the compiler use "dl" functions, which are supported on AIX since version 4.2. With this OpenDX and our modudule work correctly. I think it's a good idea to patch loader.c so that "dl" functions are used. It's better to aim for newer versions of AIX, then for older ones. Best, Irek
