This is a bit of a shot in the dark...

I've put together an application around an 18F2550 that receives serial data packets (RS-232ish), then stores them in a serial EEPROM. Asynchronously, the EEPROM is accessed by USB to retrieve packets from the memory. The UART data is protected by checksum and seems to correctly store the data, which I can correctly read via the USB port. (It's an HID application). UART packets arrive about 5 per minute. The USB high level application application checks for updates every 10 seconds or so. About once an hour, the USB application gets corrupted data.

As you can imagine, finding the source of the corruption is extremely tedious! I'm using Darrel's DS_INTS-18.pbp, and ReEnterPBP-18.bas. I've tried disabling the serial port during USB activity as these packets are highly redundant and a loss or two won't matter. The error rate goes down, but does not disappear.
(Unfortunately, the USB application is not under my control, so I need to get the data there error free).

There's over a thousand lines of code which is a bit much to drop in here - instead I'm wondering if anybody has any "off the top of the head" ideas of where to look for corruption sources.

Like I said, shot in the dark... I'm just running out of ideas.