[Swift-devel] null pointer exception from nested loops

Michael Wilde wilde at mcs.anl.gov
Tue Mar 17 17:02:31 CDT 2009


OK, I think this is it:

The following script *works* with the commented out code and fails with 
the currently enabled alternative statement:

--

type file;

app (file editedParams) setTemps ( file inParams )
{
   sed "-e" "s/@DTI@/123/" @inParams stdout=@editedParams;
}

file inParams<single_file_mapper; file="params.tloop" >;

/* works:
file o<"pout">;
o = setTemps(inParams);
string config [] = readData(o);
*/

/* Fails: */
string config [] = readData( setTemps(inParams ) );

trace(0,config[0]);
trace(1,config[1]);
trace(2,config[2]);

--

So readData is indeed happy to take a file-value var as an arg but not a 
file-valued expression (procedure return in this case).



On 3/17/09 4:46 PM, Michael Wilde wrote:
> I got the error narrowed down to this example:
> 
> type file;
> 
> app (file editedParams) setTemps ( file inParams )
> {
>   echo @inParams stdout=@editedParams;
> }
> 
> file inParams<single_file_mapper; file="params.tloop" >;
> 
> string config [] = readData( setTemps(inParams ) );
> trace(0,config[0]);
> trace(1,config[1]);
> trace(2,config[2]);
> 
> -- 
> 
> params.tloops contains:
> 
> DEFAULT_INIT_TEMP_=_ at DTI@
> TEMP_UPDATE_INTERVAL_=_ at TUI@
> KILL_TIME_=_3
> MAX_NUMBER_OF_ANNEALING_STEPS_=_0
> 
> -- 
> 
> In other code, readData() seemed happy to take a file *or* a filename 
> string as input, but I wonder if it was not as happy as it seemed.
> 
> I'd been taking advantage of the flexibility with good results (luck?) 
> so far, though.
> 
> On 3/17/09 4:25 PM, Michael Wilde wrote:
>> The log contains this just before the NPE, including the suspicious 
>> message: WARN  FlowNode Ex098:
>>
>> Thats giving me a clue as to the offending statements.
>>
>> ---
>>
>> 2009-03-17 16:20:34,723-0500 INFO  AbstractDataNode Adding handle 
>> listener "F/org.griphyn.vdl.mapping.DataNode identifier 
>> tag:benc at ci.uchicago.edu,2008:swift:dataset:20090\
>> 317-1620-e1n1bz3g:720000000071 type SecSeq with no value at 
>> dataset=secseq path=[0] (not closed)" to 
>> "org.griphyn.vdl.mapping.DataNode identifier tag:benc at ci.uchicago.edu,\
>> 2008:swift:dataset:20090317-1620-e1n1bz3g:720000000071 type SecSeq 
>> with no value at dataset=secseq path=[0] (not closed)"
>> 2009-03-17 16:20:34,724-0500 INFO  AbstractDataNode closed 
>> org.griphyn.vdl.mapping.RootDataNode identifier 
>> tag:benc at ci.uchicago.edu,2008:swift:dataset:20090317-1620-e1n1bz\
>> 3g:720000000092 type string value=s/@DIT@/10/ dataset=unnamed 
>> SwiftScript value (closed)
>> 2009-03-17 16:20:34,724-0500 INFO  AbstractDataNode ROOTPATH 
>> dataset=tag:benc at ci.uchicago.edu,2008:swift:dataset:20090317-1620-e1n1bz3g:720000000092 
>> path=$
>> 2009-03-17 16:20:34,724-0500 INFO  AbstractDataNode VALUE 
>> dataset=tag:benc at ci.uchicago.edu,2008:swift:dataset:20090317-1620-e1n1bz3g:720000000092 
>> VALUE=s/@DIT@/10/
>> 2009-03-17 16:20:34,725-0500 INFO  AbstractDataNode closed 
>> org.griphyn.vdl.mapping.RootDataNode identifier 
>> tag:benc at ci.uchicago.edu,2008:swift:dataset:20090317-1620-e1n1bz\
>> 3g:720000000093 type string value=s/@TUI@/1/ dataset=unnamed 
>> SwiftScript value (closed)
>> 2009-03-17 16:20:34,725-0500 INFO  AbstractDataNode ROOTPATH 
>> dataset=tag:benc at ci.uchicago.edu,2008:swift:dataset:20090317-1620-e1n1bz3g:720000000093 
>> path=$
>> 2009-03-17 16:20:34,725-0500 INFO  AbstractDataNode VALUE 
>> dataset=tag:benc at ci.uchicago.edu,2008:swift:dataset:20090317-1620-e1n1bz3g:720000000093 
>> VALUE=s/@TUI@/1/
>> 2009-03-17 16:20:34,726-0500 INFO  AbstractDataNode closed 
>> org.griphyn.vdl.mapping.RootDataNode identifier 
>> tag:benc at ci.uchicago.edu,2008:swift:dataset:20090317-1620-e1n1bz\
>> 3g:720000000094 type string value=params.tloop dataset=unnamed 
>> SwiftScript value (closed)
>> 2009-03-17 16:20:34,726-0500 INFO  AbstractDataNode ROOTPATH 
>> dataset=tag:benc at ci.uchicago.edu,2008:swift:dataset:20090317-1620-e1n1bz3g:720000000094 
>> path=$
>> 2009-03-17 16:20:34,726-0500 INFO  AbstractDataNode VALUE 
>> dataset=tag:benc at ci.uchicago.edu,2008:swift:dataset:20090317-1620-e1n1bz3g:720000000094 
>> VALUE=params.tloop
>> 2009-03-17 16:20:34,727-0500 WARN  FlowNode Ex098
>> java.lang.NullPointerException
>>         at 
>> org.griphyn.vdl.karajan.lib.VDLFunction.leafFileName(VDLFunction.java:285) 
>>
>>         at 
>> org.griphyn.vdl.karajan.lib.VDLFunction.filename(VDLFunction.java:201)
>>         at 
>> org.griphyn.vdl.karajan.lib.VDLFunction.filename(VDLFunction.java:182)
>>         at 
>> org.griphyn.vdl.karajan.lib.swiftscript.FileName.function(FileName.java:19) 
>>
>>         at 
>> org.griphyn.vdl.karajan.lib.VDLFunction.post(VDLFunction.java:67)
>>
>>
>>
>> On 3/17/09 4:17 PM, Michael Wilde wrote:
>>> It seems not related to scale or Falkon.
>>>
>>> It occurs when running on localhost (but on bgp) and when I cut all 
>>> the loops down to a single iteration.
>>>
>>> I'm still debugging.
>>>
>>> On 3/17/09 4:07 PM, Michael Wilde wrote:
>>>> I just expanded my oops protein folding script to add another level 
>>>> of parameter sweep. This script is getting pretty complex now (at 
>>>> least, for a swift script).
>>>>
>>>> I got the following npe on my first two tries. Im going to start 
>>>> debugging, but any clues as to the cause would be helpful.
>>>>
>>>> The outer loops are:
>>>>
>>>> main()
>>>> {
>>>>   string protein[] = readData(@arg("plist"));
>>>>   string startTemp[] = ["10","20"];
>>>>   string tempUpdate[] = ["1","2","3"];
>>>>
>>>>   foreach p in protein {
>>>>     foreach st in startTemp {
>>>>       foreach tu in tempUpdate {
>>>>         doRoundSet(p,st,tu);
>>>>       }
>>>>     }
>>>>   }
>>>> }
>>>>
>>>> There are two levels of inner loops further down below doRoundSet().
>>>>
>>>> The script, output, command line args and log are in:
>>>> http://ww.ci.uchicago.edu/~wilde/swift3.tar.gz
>>>>
>>>> I suspect it will take a while to narrow the cause to a simpler test 
>>>> case thats easy tp reproduce without a lot of setup.
>>>>
>>>> I'll try on a vanilla swift on local execution; this is on bgp with 
>>>> Falkon.
>>>>
>>>> Thanks.
>>>>
>>>> -- 
>>>>
>>>> ...
>>>> Progress:  uninitialized:1 Selecting site:2
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 7
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 2
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 8
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 0
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 5
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 9
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 1
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 6
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 3
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 4
>>>> Ex098
>>>> java.lang.NullPointerException
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.leafFileName(VDLFunction.java:285) 
>>>>
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.filename(VDLFunction.java:201)
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.filename(VDLFunction.java:182)
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.swiftscript.FileName.function(FileName.java:19) 
>>>>
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.post(VDLFunction.java:67)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.AbstractSequentialWithArguments.childCompleted(AbstractSequentialWithArguments.java:192) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.Sequential.notificationEvent(Sequential.java:33) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.event(FlowNode.java:332)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.send(EventBus.java:125)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.sendHooked(EventBus.java:99) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.fireNotificationEvent(FlowNode.java:176) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.complete(FlowNode.java:296) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowContainer.post(FlowContainer.java:58) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.functions.AbstractFunction.post(AbstractFunction.java:46) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.Sequential.startNext(Sequential.java:51) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.Sequential.executeChildren(Sequential.java:27) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.functions.AbstractFunction.executeChildren(AbstractFunction.java:40) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowContainer.execute(FlowContainer.java:63) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.restart(FlowNode.java:233) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.start(FlowNode.java:278)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.controlEvent(FlowNode.java:391) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.event(FlowNode.java:329)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.FlowElementWrapper.event(FlowElementWrapper.java:227) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.send(EventBus.java:125)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.sendHooked(EventBus.java:99) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventWorker.run(EventWorker.java:69) 
>>>>
>>>> Execution failed:
>>>>     java.lang.NullPointerException
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.leafFileName(VDLFunction.java:285) 
>>>>
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.filename(VDLFunction.java:201)
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.filename(VDLFunction.java:182)
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.swiftscript.FileName.function(FileName.java:19) 
>>>>
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.post(VDLFunction.java:67)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.AbstractSequentialWithArguments.childCompleted(AbstractSequentialWithArguments.java:192) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.Sequential.notificationEvent(Sequential.java:33) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.event(FlowNode.java:332)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.send(EventBus.java:125)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.sendHooked(EventBus.java:99) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.fireNotificationEvent(FlowNode.java:176) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.complete(FlowNode.java:296) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowContainer.post(FlowContainer.java:58) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.functions.AbstractFunction.post(AbstractFunction.java:46) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.Sequential.startNext(Sequential.java:51) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.Sequential.executeChildren(Sequential.java:27) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.functions.AbstractFunction.executeChildren(AbstractFunction.java:40) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowContainer.execute(FlowContainer.java:63) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.restart(FlowNode.java:233) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.start(FlowNode.java:278)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.controlEvent(FlowNode.java:391) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.event(FlowNode.java:329)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.FlowElementWrapper.event(FlowElementWrapper.java:227) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.send(EventBus.java:125)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.sendHooked(EventBus.java:99) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventWorker.run(EventWorker.java:69) 
>>>>
>>>>
>>>> Ex098
>>>> java.lang.NullPointerException
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.leafFileName(VDLFunction.java:285) 
>>>>
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.filename(VDLFunction.java:201)
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.filename(VDLFunction.java:182)
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.swiftscript.FileName.function(FileName.java:19) 
>>>>
>>>>     at 
>>>> org.griphyn.vdl.karajan.lib.VDLFunction.post(VDLFunction.java:67)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.AbstractSequentialWithArguments.childCompleted(AbstractSequentialWithArguments.java:192) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.Sequential.notificationEvent(Sequential.java:33) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.event(FlowNode.java:332)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.send(EventBus.java:125)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.sendHooked(EventBus.java:99) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.fireNotificationEvent(FlowNode.java:176) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.complete(FlowNode.java:296) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowContainer.post(FlowContainer.java:58) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.functions.AbstractFunction.post(AbstractFunction.java:46) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.Sequential.startNext(Sequential.java:51) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.Sequential.executeChildren(Sequential.java:27) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.functions.AbstractFunction.executeChildren(AbstractFunction.java:40) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowContainer.execute(FlowContainer.java:63) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.restart(FlowNode.java:233) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.start(FlowNode.java:278)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.controlEvent(FlowNode.java:391) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.nodes.FlowNode.event(FlowNode.java:329)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.FlowElementWrapper.event(FlowElementWrapper.java:227) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.send(EventBus.java:125)
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventBus.sendHooked(EventBus.java:99) 
>>>>
>>>>     at 
>>>> org.globus.cog.karajan.workflow.events.EventWorker.run(EventWorker.java:69) 
>>>>
>>>> SwiftScript trace: T1af7, Round, 0, Sim, 7
>>>> _______________________________________________
>>>> Swift-devel mailing list
>>>> Swift-devel at ci.uchicago.edu
>>>> http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel
>>> _______________________________________________
>>> Swift-devel mailing list
>>> Swift-devel at ci.uchicago.edu
>>> http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel
>> _______________________________________________
>> Swift-devel mailing list
>> Swift-devel at ci.uchicago.edu
>> http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel
> _______________________________________________
> Swift-devel mailing list
> Swift-devel at ci.uchicago.edu
> http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel



More information about the Swift-devel mailing list