5407
XL2; 0xB0001 Task Error
XL200

Title: Prevent a rare record-integrity Task Error (000B0001) caused by deleting Delay / Employee / Scrap codes while their entry pop-up is open

Affected software: XL2 Closed Loop and Open Loop, Standard and HVAC, V4 and V5.

Problem - history: The Task-Error reporting portal has been collecting a record-integrity Task Error, code 000B0001, from a number of machines in the field (seen on both V4 and V5). That error is raised by the record system's built-in integrity check whenever it is handed a record pointer that falls outside the valid record-memory range.

Resolving a captured error dump (the stack addresses against the matching build's map, then the matching source) showed the fault happens while the operator Enter Delay Code pop-up is on screen (the related Employee and Scrap code entry pop-ups work the same way). Those pop-ups show the codes in a scrolling list, and the list holds direct pointers to the underlying code records for the rows it is currently displaying.

Separately, the software has a background housekeeping step that permanently removes records the host PC software (Eclipse) has marked for deletion. That cleanup could run even while one of these pop-ups was open. If a Delay, Employee, or Scrap code that the open pop-up was currently showing got permanently removed by that cleanup, the pop-up was left holding a pointer to memory that had been freed and reused. The next time the list drew or scrolled, it followed that stale pointer onto now- meaningless data, and the integrity check tripped - producing the 000B0001 Task Error.

Likelihood: This is believed to be a genuine but uncommon cause, not a frequently-hit one. For it to happen, several unlikely things have to coincide: Eclipse has to delete a Delay, Employee, or Scrap code - records that are normally set up once and very rarely changed - at the exact moment one of these entry pop-ups happens to be open, and those pop-ups are themselves only open briefly and occasionally. So this change removes a possible cause of the error; it is not expected to be a common trigger.

Solution: The housekeeping cleanup now defers permanently deleting Delay, Employee, and Scrap code records while any pop-up window is open. The record stays marked and is removed a moment later, the next time the cleanup runs with no pop-up on screen - so a code the user is currently looking at can no longer be pulled out from under the display. This is the same protection already in place for the Coil list; the change extends that exact approach to the Delay, Employee, and Scrap lists.