Date: Wed, 28 Mar 2007 10:21:00 -0600 From: Dan Long Subject: Re: 2.5m obslog 20070327 (MJD 54187) guider problems Hi Robert, I'm certainly no tcl expert, but it looks to me like to execute that part of the code the element would have to exist because info exists guiderInfo($i,r) is one of the three tests to enter into the if statement loop i 1 12 { if {[info exists gFiber(gprobe,$i,xpos)] && $gFiber(gprobe,$i,xpos) != 0 && [info exists guiderInfo($i,r)]} { set xc [expr $size/2 + $scale*$gFiber(gprobe,$i,xpos) + \ $guiderInfo($i,r) + 15] set xmax [max $xc $xmax] set yc [expr $size/2 + $scale*$gFiber(gprobe,$i,ypos) + \ $guiderInfo($i,r) + 15] set ymax [max $yc $ymax] set xc [expr $size/2 + $scale*$gFiber(gprobe,$i,xpos) - \ $guiderInfo($i,r) - 15] set xmin [min $xc $xmin] set yc [expr $size/2 + $scale*$gFiber(gprobe,$i,ypos) - \ $guiderInfo($i,r) - 15] set ymin [min $yc $ymin] } } Other things that don't make sense, are: The previous night, the same cartridge/plate was observed with the same version of iop (v4_32_0), with no such error. The code complaining here is unchanged since at least v4_0_0, so why fail now? Cheers, Dan >>can't read "guiderInfo(11,xc)": no such element in array >>can't read "guiderInfo(11,xc)": no such element in array >> while executing >>"set xc $guiderInfo($i,xc)..." >> invoked from within >>\042if {[info exists gFiber(gprobe,$i,xpos)] && >> $gFiber(gprobe,$i,xpos) != 0 && [info exists guiderInfo($i,r)]} { >> set xc $guiderInfo($i,xc ..." >> ("loop" body line 2) >> invoked from within >>\042loop i 1 12 { >> if {[info exists gFiber(gprobe,$i,xpos)] && >> $gFiber(gprobe,$i,xpos) != 0 && [info exists guiderInfo($i,r)]} { >> set ..." >> (procedure "showGuideStars" line 59) > >Look at the trace. It tells you that the program expects 12 guide probes, >but it couldn't find the x position of number 11 (the 12th; tcl starts at 0). > >This is very unlikely to be caused by a semaphore problem --- why would >that only cause trouble for the last fibre?? > >At this point, it would have been helpful to ask the system what it did >know about: > parray guiderInfo > parray gFiber >as those seem to be the variables in use. Note also that the test is >wrong -- it should be testing [info exists guiderInfo($i,xc)] -- which >is why it died rather than ignoring the last fiber. But that isn't >something that you'd want to fix in the middle of the night. > >We lost 2 hours on the sky due to this problem, so it would have been worth >a few minutes of analysis. > > R > > > >DSS DSS DSS DSS DSS Digital Sky Survey DSS DSS DSS DSS DSS DSS >DSS *** The information posted to SDSS mailing lists is proprietary *** >DSS This is message 5918 in the sdss-obs archive, URL >DSS http://www.astro.princeton.edu:81/sdss-obs/msg.5918.html >DSS The index is at http://www.astro.princeton.edu:81/sdss-obs/INDEX.html >DSS To join/leave the list, go to >DSS >http://www.astro.princeton.edu:81/cgi-bin/mailinglists.pl/show_subscription?list=sdss-obs >DSS To post a message, mail it to sdss-obs@astro.princeton.edu >DSS >DSS DSS DSS DSS DSS DSS DSS DSS DSS DSS DSS DSS DSS DSS DSS DSS