Device-related problems may caused by: improperly initialized port or I/O request structures (use createport() and createextio()); use of a too-small I/O request (see the device's <.h> files and autodocs for information on the required type of I/O request); re-use of an I/O request before it has returned from the device (use the debugging tool IO_Torture to catch this); failure to abort and wait for an outstanding device request before exiting; waiting on a signal/port/message allocated by a different task.