Hi Dustin,
I'm trying to build custom indices on large subset of SDSS DR9 data, and I'm consistently getting segfaults. Initially I saw the bug with
astrometry.net 0.42, but svn-22501 showed it as well
Here is the short and long gdb backtrace:
(gdb) bt
#0 memcpy () at ../sysdeps/x86_64/memcpy.S:119
#1 0x0000000000485d6a in read_chunk (fb=0x21316a00, chunk=0x21317090) at fitsbin.c:511
#2 0x0000000000485f90 in fitsbin_read (fb=0x21316a00) at fitsbin.c:551
#3 0x0000000000413d89 in quadfile_switch_to_reading (qf=0x21316cc0) at quadfile.c:230
#4 0x0000000000404391 in step_hpquads (p=0x7fffffffdcc0, p_codes=0x7fffffffdab8, p_quads=0x7fffffffdab0,
p_codefn=0x7fffffffda80, p_quadfn=0x7fffffffda88, starkd=0x6afa2dd0, skdtfn=0x0, tempfiles=0x3ded6c0)
at build-index.c:81
#5 0x0000000000405d2a in build_index (catalog=0x3de6010, p=0x7fffffffdcc0, p_index=0x7fffffffdba0,
indexfn=0x0) at build-index.c:579
#6 0x0000000000406312 in build_index_files (infn=0x7fffffffe206 "stars.fits",
indexfn=0x7fffffffe214 "index-130329000.fits", p=0x7fffffffdcc0) at build-index.c:672
#7 0x0000000000406e9f in main (argc=21, argv=0x7fffffffdec8) at build-index-main.c:279
(gdb) bt full
#0 memcpy () at ../sysdeps/x86_64/memcpy.S:119
No locals.
#1 0x0000000000485d6a in read_chunk (fb=0x21316a00, chunk=0x21317090) at fitsbin.c:511
i = 0
tabstart = 0
tabsize = 0
ext = 0
expected = 18446744072229333200
mode = 64928016
flags = 0
mapstart = 140737488345232
mapoffset = 0
table_nrows = 175921805
table_rowsize = 16
inmemext = 0x1022c41f0
__func__ = "read_chunk"
#2 0x0000000000485f90 in fitsbin_read (fb=0x21316a00) at fitsbin.c:551
chunk = 0x21317090
i = 0
#3 0x0000000000413d89 in quadfile_switch_to_reading (qf=0x21316cc0) at quadfile.c:230
__func__ = "quadfile_switch_to_reading"
#4 0x0000000000404391 in step_hpquads (p=0x7fffffffdcc0, p_codes=0x7fffffffdab8, p_quads=0x7fffffffdab0,
p_codefn=0x7fffffffda80, p_quadfn=0x7fffffffda88, starkd=0x6afa2dd0, skdtfn=0x0, tempfiles=0x3ded6c0)
at build-index.c:81
codes = 0x3dedb20
quads = 0x21316cc0
quadfn = 0x0
codefn = 0x0
__func__ = "step_hpquads"
#5 0x0000000000405d2a in build_index (catalog=0x3de6010, p=0x7fffffffdcc0, p_index=0x7fffffffdba0,
indexfn=0x0) at build-index.c:579
uniform = 0x3ded700
starkd = 0x6afa2dd0
startag = 0x1191412d0
codes = 0x0
quads = 0x0
codekd = 0x0
starkd2 = 0x0
quads2 = 0x0
startag2 = 0x0
quads3 = 0x0
codekd2 = 0x0
tempfiles = 0x3ded6c0
unifn = 0x0
skdtfn = 0x0
quadfn = 0x0
codefn = 0x0
ckdtfn = 0x0
skdt2fn = 0x0
quad2fn = 0x0
quad3fn = 0x0
ckdt2fn = 0x0
__PRETTY_FUNCTION__ = "build_index"
__func__ = "build_index"
#6 0x0000000000406312 in build_index_files (infn=0x7fffffffe206 "stars.fits",
indexfn=0x7fffffffe214 "index-130329000.fits", p=0x7fffffffdcc0) at build-index.c:672
index = 0x6c2340
catalog = 0x3de6010
__func__ = "build_index_files"
#7 0x0000000000406e9f in main (argc=21, argv=0x7fffffffdec8) at build-index-main.c:279
argchar = -1
infn = 0x7fffffffe206 "stars.fits"
indexfn = 0x7fffffffe214 "index-130329000.fits"
inindexfn = 0x0
myp = {racol = 0x497768 "RA", deccol = 0x49776b "DEC", jitter = 0.40000000000000002,
sortcol = 0x7fffffffe23e "r", sortasc = 1 '\001', brightcut = -inf, bighp = -1, bignside = 0,
sweeps = 100, dedup = 1, margin = 0, UNside = 1760, Nside = 1760, hpquads_sort_data = 0x0,
hpquads_sort_func = 0, hpquads_sort_size = 0, qlo = 2, qhi = 2.7999999999999998, passes = 16,
Nreuse = 8, Nloosen = 20, scanoccupied = 1 '\001', dimquads = 4, indexid = 130329000,
inmemory = 1 '\001', delete_tempfiles = 1 '\001', tempdir = 0x49776f "/tmp", args = 0x7fffffffdec8,
argc = 21}
p = 0x7fffffffdcc0
loglvl = 2
i = 0
preset = 0
__func__ = "main"
The command line used was:
../astrometrynet/bin/build-index -M -i stars.fits -o index-${P}00.fits -I ${P}00 -P 0 -S r -n 100 -L 20 -E -j 0.4 -r 1
The catalog has ~ 100e6 objects. And the fits file is 8Gb in size.
I'm seeing the bug on debian 6.0 system with large amount of RAM.
Any suggestions ?
Cheers,
Sergey
PS I did run the code before on the same kind of file but with smaller number of objects (DR7 and smaller magnitude range) and it did run fine.