4536
XL2; B0002 Task Error when using Asynchronous Printing.
XL200

Two separate customers have reported issues with B0002 Task errors when using Asynchronous printing. The error is generated when using an item pointer out of the Asynchronous Print Queue to get access to a print message from Eclipse. All of the data (Task Error Data) we have captured indicates that that the Item pointer or its Parent (Order) pointer may be bad. The B0002 error is generated when the ID bits in a record are tested and the pointer is outside of the address range allowed for records. In this case the address is above the records address space ending address.

One of the customers reports that they have other lines using the same print driver that don't have the same issue. Both customers are using different print drivers. The combination of these two clues indicate that it is not a Driver specific problem, it is an issue with the common Asynchronous Print Queue code.

A code review of the queue code showed a non-standard use of a ring buffer using a complicated three index system. This code was refactored to use traditional Input and Output indexes. To eliminate accidental dangling pointers using an invalid index, all item pointers are now zeroed (Nulled) out once the message for the item has been triggered. The code treats a NULL pointer as a request for an empty print message.

Using a Belt and Suspenders approach, the Item pointer and its Parent pointer are both tested to ensure that they point at a valid Item and Order before they are used. If an entry in the ring buffer is found to have an invalid pointer, the part for that entry will receive an empty print message instead of being allowed to continue and cause a task error to be generated later on.

Model Version Released
XL2OL 5.80.00 11/30/2021
XL2CL 5.80.00 11/30/2021
XL220OL 5.80.00 11/30/2021
XL220CL 5.80.00 11/30/2021
XL2OL 4.77.01 8/16/2021
XL2CL 4.77.01 8/16/2021
XL220OL 4.80.00 11/30/2021
XL220CL 4.80.00 11/30/2021