On Wed, 7 Dec 2005, Tim Jenness wrote:
> On Wed, 7 Dec 2005, Mark Taylor wrote:
>
> > On Wed, 7 Dec 2005, Starlink Software wrote:
> >
> >> Module: starjava15
> >> Status: failed
> >> Build URL: http://dev.starlink.ac.uk/build/RHEL-WS3-3_i386/logs/starjava15.1133916004.log
> >
> > Chaps,
> >
> > this is failing during the JNIHDS unit tests with a SEGV during a call
> > of the java method datGet0D. I think the failures started about 2-3
> > nights ago, though I'm not certain of the timescale. The relevant
> > code at the JNI end is (I think)
>
> I've just added a DAT_GET0D test to hds_test.f and it works fine (which
> isn't a surprise given that oracdr worked). Can you get a backtrace for
> the segv?
Whether it breaks seems highly dependent on tiny tweaks to the code
(e.g. whether there's print statements in there) so possibly something's
uninitialised somewhere. The trouble usually seems to have
something to do with datGet0C() today though.
If I run the following code (full checkout and build from last night)
#include <hds.h>
#include <stdio.h>
#define LENG 1024
main( int argc, char **argv ) {
int status = 0;
HDSLoc *top = NULL;
HDSLoc *data1 = NULL;
HDSLoc *dataArray = NULL;
HDSLoc *wcs1 = NULL;
HDSLoc *wcsArray = NULL;
hdsdim subs[ 1 ];
HDSLoc *firstWcsLine = NULL;
char line[ LENG ];
hdsOpen( "/stardev/bin/kappa/m31", "READ", &top, &status );
datFind( top, "WCS", &wcs1, &status );
printf( "status: %d\n", status );
datFind( wcs1, "DATA", &wcsArray, &status );
printf( "status: %d\n", status );
subs[ 0 ] = 1;
line[ 0 ] = 0;
printf( "status: %d\n", status );
datCell( wcsArray, 1, subs, &firstWcsLine, &status );
printf( "status: %d\n", status );
datGet0C( firstWcsLine, line, LENG, &status );
printf( "line is >%s<\n", line );
}
compiled like this:
gcc -I/mbt/starauto/include/star -I/mbt/starauto/include -g -static thds.c -L/mbt/starauto/lib `/mbt/starauto/bin/hds_link`
I get this output:
status: 0
status: 0
status: 0
status: 0
Segmentation fault (core dumped)
with a core dump that looks like this:
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
Core was generated by `./a.out'.
Program terminated with signal 11, Segmentation fault.
#0 0x0804e681 in datGetC (locator=0x80c6598, ndim=0, dims=0xbfffe1f8,
values=0xbfffe220 " Begin FrameSet", ' ' <repeats 185 times>...,
char_len=1023, status=0xbfffe63c) at datget.c:314
314 return hds_gl_status;
(gdb) where
#0 0x0804e681 in datGetC (locator=0x80c6598, ndim=0, dims=0xbfffe1f8,
values=0xbfffe220 " Begin FrameSet", ' ' <repeats 185 times>...,
char_len=1023, status=0xbfffe63c) at datget.c:314
#1 0x08049053 in datGet0C (loc=0x80c6598,
value=0xbfffe220 " Begin FrameSet", ' ' <repeats 185 times>...,
str_len=1024, status=0xbfffe63c) at datget0x.c:116
#2 0x080482ec in main (argc=1, argv=0xbfffe884) at thds.c:29
#3 0x0805b6ff in __libc_start_main ()
Not certain that all this has got to do with the original problem,
but it's preventing me from tracking it down in any case.
I've been living in java land so long that it's possible I'm doing
something dim somewhere along the line - apologies if so.
Mark
--
Mark Taylor Astronomical Programmer Physics, Bristol University, UK
[log in to unmask] +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/
|