36 Chapter 1 Troubleshooting
Troubleshooting
When a program with a memory leak is executed a lot, the memory becomes progressively full
(since it is not properly freed). When the leak becomes too big, the printer is left ‘out of memory’ to
execute new processes and a 79:04 is triggered
• Concurrence issues: there are certain resources that can be accessed by multiple programs or by
multiple executions of the same program (what is known as multiple threads). Access to these
resources must be correctly controlled to prevent unexpected behavior. Issues caused by an incorrect
control of these resources are concurrence issues.
In the following you have a simple example: let’s imagine that there is a counter that controls the
communication between the JetDirect card and the printer’s firmware. Whenever a new packet of
information is sent by the JetDirect card to the printer, the counter increases. When the printer
receives the packet and processes it correctly, the counter decreases. Another process checks the
counter from time to time to see its value and take conclusions from it. If the counter is near 0, it
means that the printer is processing correctly, and if it grows too big, it may mean that there is a
bottleneck somewhere and maybe the JetDirect card throughput is decreased to control its speed to
the printer. However, if the access to this counter is not properly controlled, undesirable effects may
happen: in a real environment, a JetDirect card processes thousands of information packets per
second, so this counter is updated frequently, both by the JetDirect and the printer. If at a certain
point the JetDirect and the printer try to access the counter at the same time and the code is not
prepare to handle this, it may happen that the JetDirect cannot increase the counter because the
printer is writing to it, and what’s worse, that it does not realize this fact. If this happens a few times
each second, it may happen that the counter is decreasing faster than it’s increasing and that at a
certain point it has a negative value. And then, what will the process that is checking this counter
do? Most likely, the process will not be prepared to react to a negative value and will launch an
exception that will trigger a 79:04 system error.
Symptoms
This type of 79:04 always occurs in heavy load conditions, so the symptoms will always be similar to this
pattern:
• A printer that is being heavily used (printing a project or in a reprographics environment) produces
79:04 errors randomly, forcing the user to reboot.
• After rebooting, the printer can be used without any issues for an extended period of time, but if the
workload is consistently high, a random error will occur again.
• The error can never be associated with a specific file. The file that was being printed when the error
occurred the last time can be printed without issues after reboot. And a file that has been printed
without issues several times can trigger the error in the future.
• This error is very dependant of the workflow the customer has. The most common user workflows
have been extensively tested both by HP and by our beta sites, so it is highly unlikely to see random
79:04 issues in these cases. These random issues tend to occur in very specific corner cases, and
cannot be reproduced unless the exact conditions of the workflow are replicated. They normally
happen when sending files generated by external applications (RIPs, 3rd party drivers, etc.).
Workarounds and solutions
Random 79:04 errors are, by far, the most complex ones to diagnose and to fix. The only solutions
available in these cases are:
1. Identify the root cause (either in the files or in the firmware) and fix it in the code, which requires the
intervention of the GBU
2. Test any options available to modify the customer’s workflow and see if any combination of them
solves the issue
In both cases, a profound understanding of the customer’s workflow is necessary. In particular, the
information that is needed is:
• Printer front panel settings