This section discusses error and warning messages generated by the PHISH library and bait.py and bait.py tools. It also gives tips on debugging the operation of PHISH nets.
7.1 Debugguing PHISH nets 7.2 Error and warning messages from the PHISH library 7.3 Error messages from bait.py
A PHISH net can be difficult to debug because it may involve many independent running processes exchanging datums in a complex pattern, and rapid processing of large volumes of data. Here are some ideas that may be helpful in finding a bug if something goes wrong:
When a minnow makes a call to the PHISH library, various error and warning conditions are checked for. If an error is encountered, a message in the following format is printed to stderr:
PHISH ERROR: Minnow executable ID school-id # global-id: message
where "executable" is the name of executable minnow file (not the full path, just the filename), "school-id" is the ID of the minnow as specified in the PHISH input script, "global-id" is the global-ID of the minnow, and message is the error message. Each minnow has a global ID from 0 to Nglobal-1, where Nglobal is the total number of minnows in the net specified by the PHISH input script. This supplementary information is helpful in debugging which minnow generated the error message.
If a warning condition is detected, a similarly-formatted message is printed, with ERROR replaced by WARNING.
Note that by default, an error condition will cause an abort, shutting-down the entire PHISH net. However, it is possible for a minnow to explicitly cancel the abort. In this case, the PHISH library call that triggered the error will return a non-zero integer error code to indicate that an error occurred. See the documentation for phish_abort() for more information on how to cancel an abort.
The messages should be self-explanatory. See the doc page for the individual">>PHISH library, or the doc pages for PHISH library functions for relevant details. If necessary, the library source code in src/phish-common.cpp or src/phish-mpi.cpp or src/phish-zmq.cpp can be searched for the message text.
The bait.py tool is used to process PHISH input scripts and optionally run them. Any errors that bait.py encounters in the input script generate error messages that should be self-explanatory.
See the doc page for the individual">>bait.py tool, or the doc pages for PHISH input script commands for relevant details. If necessary, the Python source code in bait/bait.py can be searched for the message text.